passport-fellowshipone
Advanced tools
Comparing version 0.0.1 to 0.0.2
@@ -1,1 +0,1 @@ | ||
{"/Users/epoch/src/passport-fellowshipone/lib/passport-fellowshipone/index.js":{"path":"/Users/epoch/src/passport-fellowshipone/lib/passport-fellowshipone/index.js","s":{"1":1,"2":1,"3":1},"b":{},"f":{},"fnMap":{},"statementMap":{"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":37}},"2":{"start":{"line":10,"column":0},"end":{"line":15,"column":0}},"3":{"start":{"line":15,"column":0},"end":{"line":15,"column":28}}},"branchMap":{}},"/Users/epoch/src/passport-fellowshipone/lib/passport-fellowshipone/strategy.js":{"path":"/Users/epoch/src/passport-fellowshipone/lib/passport-fellowshipone/strategy.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":1,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":1,"102":1,"103":0,"104":1,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":1},"b":{"1":[1,0],"2":[1,1],"3":[1,1],"4":[0,1],"5":[0,0],"6":[1,1],"7":[1,1],"8":[1,1],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0,0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0,0,0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0,0,0],"37":[0,0],"38":[0,0,0,0],"39":[0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0],"45":[0,0],"46":[0,0],"47":[0,0]},"f":{"1":1,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0},"fnMap":{"1":{"name":"Strategy","line":50,"loc":{"start":{"line":50,"column":0},"end":{"line":50,"column":35}}},"2":{"name":"(anonymous_2)","line":65,"loc":{"start":{"line":65,"column":37},"end":{"line":65,"column":105}}},"3":{"name":"(anonymous_3)","line":73,"loc":{"start":{"line":73,"column":151},"end":{"line":73,"column":183}}},"4":{"name":"(anonymous_4)","line":91,"loc":{"start":{"line":91,"column":39},"end":{"line":91,"column":148}}},"5":{"name":"(anonymous_5)","line":166,"loc":{"start":{"line":166,"column":31},"end":{"line":166,"column":50}}},"6":{"name":"(anonymous_6)","line":185,"loc":{"start":{"line":185,"column":32},"end":{"line":185,"column":51}}},"7":{"name":"(anonymous_7)","line":187,"loc":{"start":{"line":187,"column":32},"end":{"line":187,"column":48}}},"8":{"name":"(anonymous_8)","line":190,"loc":{"start":{"line":190,"column":31},"end":{"line":190,"column":42}}},"9":{"name":"(anonymous_9)","line":193,"loc":{"start":{"line":193,"column":33},"end":{"line":193,"column":44}}},"10":{"name":"(anonymous_10)","line":200,"loc":{"start":{"line":200,"column":29},"end":{"line":200,"column":43}}},"11":{"name":"(anonymous_11)","line":231,"loc":{"start":{"line":231,"column":45},"end":{"line":231,"column":63}}},"12":{"name":"(anonymous_12)","line":252,"loc":{"start":{"line":252,"column":33},"end":{"line":252,"column":76}}},"13":{"name":"(anonymous_13)","line":265,"loc":{"start":{"line":265,"column":7},"end":{"line":265,"column":32}}},"14":{"name":"(anonymous_14)","line":291,"loc":{"start":{"line":291,"column":10},"end":{"line":291,"column":35}}},"15":{"name":"(anonymous_15)","line":299,"loc":{"start":{"line":299,"column":43},"end":{"line":299,"column":64}}},"16":{"name":"(anonymous_16)","line":309,"loc":{"start":{"line":309,"column":39},"end":{"line":309,"column":61}}}},"statementMap":{"1":{"start":{"line":4,"column":0},"end":{"line":9,"column":32}},"2":{"start":{"line":50,"column":0},"end":{"line":220,"column":1}},"3":{"start":{"line":51,"column":3},"end":{"line":52,"column":3}},"4":{"start":{"line":52,"column":3},"end":{"line":53,"column":3}},"5":{"start":{"line":53,"column":3},"end":{"line":54,"column":3}},"6":{"start":{"line":54,"column":3},"end":{"line":55,"column":3}},"7":{"start":{"line":55,"column":3},"end":{"line":56,"column":3}},"8":{"start":{"line":56,"column":3},"end":{"line":57,"column":3}},"9":{"start":{"line":57,"column":3},"end":{"line":59,"column":3}},"10":{"start":{"line":59,"column":3},"end":{"line":60,"column":3}},"11":{"start":{"line":60,"column":3},"end":{"line":61,"column":3}},"12":{"start":{"line":61,"column":3},"end":{"line":65,"column":3}},"13":{"start":{"line":65,"column":3},"end":{"line":91,"column":3}},"14":{"start":{"line":66,"column":6},"end":{"line":66,"column":27}},"15":{"start":{"line":67,"column":6},"end":{"line":71,"column":7}},"16":{"start":{"line":68,"column":9},"end":{"line":68,"column":35}},"17":{"start":{"line":70,"column":9},"end":{"line":70,"column":53}},"18":{"start":{"line":73,"column":6},"end":{"line":88,"column":3}},"19":{"start":{"line":74,"column":9},"end":{"line":86,"column":10}},"20":{"start":{"line":74,"column":20},"end":{"line":74,"column":36}},"21":{"start":{"line":76,"column":12},"end":{"line":76,"column":50}},"22":{"start":{"line":77,"column":12},"end":{"line":77,"column":60}},"23":{"start":{"line":78,"column":12},"end":{"line":78,"column":42}},"24":{"start":{"line":79,"column":12},"end":{"line":79,"column":74}},"25":{"start":{"line":80,"column":12},"end":{"line":80,"column":49}},"26":{"start":{"line":83,"column":12},"end":{"line":85,"column":12}},"27":{"start":{"line":85,"column":12},"end":{"line":85,"column":83}},"28":{"start":{"line":91,"column":3},"end":{"line":220,"column":0}},"29":{"start":{"line":92,"column":6},"end":{"line":92,"column":114}},"30":{"start":{"line":94,"column":6},"end":{"line":96,"column":7}},"31":{"start":{"line":95,"column":9},"end":{"line":95,"column":65}},"32":{"start":{"line":97,"column":6},"end":{"line":97,"column":44}},"33":{"start":{"line":98,"column":6},"end":{"line":98,"column":80}},"34":{"start":{"line":98,"column":60},"end":{"line":98,"column":80}},"35":{"start":{"line":99,"column":6},"end":{"line":99,"column":82}},"36":{"start":{"line":99,"column":61},"end":{"line":99,"column":82}},"37":{"start":{"line":101,"column":6},"end":{"line":101,"column":23}},"38":{"start":{"line":102,"column":6},"end":{"line":102,"column":77}},"39":{"start":{"line":103,"column":6},"end":{"line":107,"column":7}},"40":{"start":{"line":104,"column":9},"end":{"line":104,"column":71}},"41":{"start":{"line":106,"column":9},"end":{"line":106,"column":50}},"42":{"start":{"line":109,"column":6},"end":{"line":111,"column":6}},"43":{"start":{"line":111,"column":6},"end":{"line":115,"column":7}},"44":{"start":{"line":112,"column":9},"end":{"line":114,"column":10}},"45":{"start":{"line":113,"column":12},"end":{"line":113,"column":46}},"46":{"start":{"line":118,"column":6},"end":{"line":122,"column":7}},"47":{"start":{"line":119,"column":9},"end":{"line":121,"column":10}},"48":{"start":{"line":120,"column":12},"end":{"line":120,"column":37}},"49":{"start":{"line":124,"column":6},"end":{"line":132,"column":7}},"50":{"start":{"line":126,"column":9},"end":{"line":131,"column":35}},"51":{"start":{"line":134,"column":6},"end":{"line":143,"column":7}},"52":{"start":{"line":135,"column":9},"end":{"line":139,"column":10}},"53":{"start":{"line":136,"column":12},"end":{"line":136,"column":57}},"54":{"start":{"line":138,"column":12},"end":{"line":138,"column":69}},"55":{"start":{"line":140,"column":9},"end":{"line":140,"column":53}},"56":{"start":{"line":142,"column":9},"end":{"line":142,"column":39}},"57":{"start":{"line":145,"column":6},"end":{"line":145,"column":15}},"58":{"start":{"line":146,"column":6},"end":{"line":146,"column":84}},"59":{"start":{"line":146,"column":59},"end":{"line":146,"column":84}},"60":{"start":{"line":147,"column":6},"end":{"line":148,"column":37}},"61":{"start":{"line":147,"column":27},"end":{"line":147,"column":77}},"62":{"start":{"line":148,"column":11},"end":{"line":148,"column":37}},"63":{"start":{"line":150,"column":6},"end":{"line":150,"column":18}},"64":{"start":{"line":151,"column":6},"end":{"line":155,"column":7}},"65":{"start":{"line":152,"column":9},"end":{"line":152,"column":103}},"66":{"start":{"line":154,"column":9},"end":{"line":154,"column":97}},"67":{"start":{"line":157,"column":6},"end":{"line":157,"column":46}},"68":{"start":{"line":158,"column":6},"end":{"line":216,"column":7}},"69":{"start":{"line":159,"column":9},"end":{"line":159,"column":23}},"70":{"start":{"line":160,"column":9},"end":{"line":160,"column":25}},"71":{"start":{"line":164,"column":9},"end":{"line":164,"column":37}},"72":{"start":{"line":165,"column":9},"end":{"line":165,"column":36}},"73":{"start":{"line":166,"column":9},"end":{"line":185,"column":9}},"74":{"start":{"line":167,"column":12},"end":{"line":182,"column":13}},"75":{"start":{"line":168,"column":15},"end":{"line":168,"column":37}},"76":{"start":{"line":169,"column":15},"end":{"line":181,"column":16}},"77":{"start":{"line":170,"column":18},"end":{"line":170,"column":49}},"78":{"start":{"line":173,"column":18},"end":{"line":180,"column":19}},"79":{"start":{"line":174,"column":21},"end":{"line":174,"column":170}},"80":{"start":{"line":176,"column":21},"end":{"line":179,"column":40}},"81":{"start":{"line":185,"column":9},"end":{"line":198,"column":12}},"82":{"start":{"line":186,"column":12},"end":{"line":186,"column":41}},"83":{"start":{"line":187,"column":12},"end":{"line":189,"column":15}},"84":{"start":{"line":188,"column":15},"end":{"line":188,"column":29}},"85":{"start":{"line":190,"column":12},"end":{"line":192,"column":15}},"86":{"start":{"line":191,"column":15},"end":{"line":191,"column":41}},"87":{"start":{"line":193,"column":12},"end":{"line":197,"column":15}},"88":{"start":{"line":194,"column":15},"end":{"line":196,"column":16}},"89":{"start":{"line":195,"column":18},"end":{"line":195,"column":44}},"90":{"start":{"line":200,"column":9},"end":{"line":205,"column":12}},"91":{"start":{"line":201,"column":12},"end":{"line":204,"column":13}},"92":{"start":{"line":202,"column":15},"end":{"line":202,"column":37}},"93":{"start":{"line":203,"column":15},"end":{"line":204,"column":12}},"94":{"start":{"line":207,"column":9},"end":{"line":209,"column":10}},"95":{"start":{"line":208,"column":12},"end":{"line":208,"column":37}},"96":{"start":{"line":210,"column":9},"end":{"line":210,"column":23}},"97":{"start":{"line":212,"column":9},"end":{"line":214,"column":10}},"98":{"start":{"line":213,"column":12},"end":{"line":213,"column":37}},"99":{"start":{"line":215,"column":9},"end":{"line":215,"column":24}},"100":{"start":{"line":218,"column":6},"end":{"line":218,"column":13}},"101":{"start":{"line":225,"column":0},"end":{"line":225,"column":39}},"102":{"start":{"line":231,"column":0},"end":{"line":252,"column":0}},"103":{"start":{"line":232,"column":3},"end":{"line":235,"column":0}},"104":{"start":{"line":252,"column":0},"end":{"line":324,"column":0}},"105":{"start":{"line":253,"column":3},"end":{"line":255,"column":3}},"106":{"start":{"line":253,"column":35},"end":{"line":255,"column":3}},"107":{"start":{"line":255,"column":3},"end":{"line":262,"column":3}},"108":{"start":{"line":262,"column":3},"end":{"line":318,"column":0}},"109":{"start":{"line":266,"column":6},"end":{"line":269,"column":7}},"110":{"start":{"line":267,"column":9},"end":{"line":268,"column":9}},"111":{"start":{"line":268,"column":9},"end":{"line":269,"column":6}},"112":{"start":{"line":270,"column":6},"end":{"line":276,"column":7}},"113":{"start":{"line":271,"column":9},"end":{"line":272,"column":9}},"114":{"start":{"line":272,"column":9},"end":{"line":273,"column":9}},"115":{"start":{"line":273,"column":9},"end":{"line":275,"column":9}},"116":{"start":{"line":275,"column":9},"end":{"line":276,"column":6}},"117":{"start":{"line":278,"column":6},"end":{"line":280,"column":6}},"118":{"start":{"line":280,"column":6},"end":{"line":281,"column":6}},"119":{"start":{"line":281,"column":6},"end":{"line":282,"column":6}},"120":{"start":{"line":282,"column":6},"end":{"line":283,"column":6}},"121":{"start":{"line":283,"column":6},"end":{"line":284,"column":6}},"122":{"start":{"line":284,"column":6},"end":{"line":288,"column":6}},"123":{"start":{"line":288,"column":6},"end":{"line":317,"column":3}},"124":{"start":{"line":292,"column":9},"end":{"line":295,"column":10}},"125":{"start":{"line":293,"column":12},"end":{"line":294,"column":12}},"126":{"start":{"line":294,"column":12},"end":{"line":295,"column":9}},"127":{"start":{"line":297,"column":9},"end":{"line":299,"column":9}},"128":{"start":{"line":299,"column":9},"end":{"line":309,"column":9}},"129":{"start":{"line":300,"column":12},"end":{"line":306,"column":12}},"130":{"start":{"line":301,"column":15},"end":{"line":306,"column":12}},"131":{"start":{"line":306,"column":12},"end":{"line":307,"column":9}},"132":{"start":{"line":309,"column":9},"end":{"line":315,"column":9}},"133":{"start":{"line":310,"column":12},"end":{"line":313,"column":9}},"134":{"start":{"line":310,"column":33},"end":{"line":311,"column":12}},"135":{"start":{"line":311,"column":17},"end":{"line":313,"column":9}},"136":{"start":{"line":311,"column":27},"end":{"line":312,"column":12}},"137":{"start":{"line":312,"column":17},"end":{"line":313,"column":9}},"138":{"start":{"line":315,"column":9},"end":{"line":316,"column":6}},"139":{"start":{"line":324,"column":0},"end":{"line":324,"column":26}}},"branchMap":{"1":{"line":51,"type":"binary-expr","locations":[{"start":{"line":51,"column":13},"end":{"line":51,"column":20}},{"start":{"line":51,"column":24},"end":{"line":51,"column":26}}]},"2":{"line":53,"type":"binary-expr","locations":[{"start":{"line":53,"column":21},"end":{"line":53,"column":36}},{"start":{"line":53,"column":40},"end":{"line":53,"column":45}}]},"3":{"line":54,"type":"binary-expr","locations":[{"start":{"line":54,"column":20},"end":{"line":54,"column":34}},{"start":{"line":54,"column":39},"end":{"line":54,"column":163}}]},"4":{"line":54,"type":"cond-expr","locations":[{"start":{"line":54,"column":60},"end":{"line":54,"column":158}},{"start":{"line":54,"column":161},"end":{"line":54,"column":163}}]},"5":{"line":54,"type":"cond-expr","locations":[{"start":{"line":54,"column":113},"end":{"line":54,"column":123}},{"start":{"line":54,"column":126},"end":{"line":54,"column":128}}]},"6":{"line":55,"type":"binary-expr","locations":[{"start":{"line":55,"column":29},"end":{"line":55,"column":52}},{"start":{"line":55,"column":56},"end":{"line":55,"column":95}}]},"7":{"line":56,"type":"binary-expr","locations":[{"start":{"line":56,"column":28},"end":{"line":56,"column":50}},{"start":{"line":56,"column":54},"end":{"line":56,"column":92}}]},"8":{"line":57,"type":"binary-expr","locations":[{"start":{"line":57,"column":34},"end":{"line":57,"column":62}},{"start":{"line":57,"column":66},"end":{"line":57,"column":102}}]},"9":{"line":67,"type":"if","locations":[{"start":{"line":67,"column":6},"end":{"line":67,"column":6}},{"start":{"line":67,"column":6},"end":{"line":67,"column":6}}]},"10":{"line":74,"type":"if","locations":[{"start":{"line":74,"column":9},"end":{"line":74,"column":9}},{"start":{"line":74,"column":9},"end":{"line":74,"column":9}}]},"11":{"line":94,"type":"if","locations":[{"start":{"line":94,"column":6},"end":{"line":94,"column":6}},{"start":{"line":94,"column":6},"end":{"line":94,"column":6}}]},"12":{"line":98,"type":"if","locations":[{"start":{"line":98,"column":6},"end":{"line":98,"column":6}},{"start":{"line":98,"column":6},"end":{"line":98,"column":6}}]},"13":{"line":98,"type":"binary-expr","locations":[{"start":{"line":98,"column":10},"end":{"line":98,"column":39}},{"start":{"line":98,"column":43},"end":{"line":98,"column":58}}]},"14":{"line":99,"type":"if","locations":[{"start":{"line":99,"column":6},"end":{"line":99,"column":6}},{"start":{"line":99,"column":6},"end":{"line":99,"column":6}}]},"15":{"line":99,"type":"binary-expr","locations":[{"start":{"line":99,"column":10},"end":{"line":99,"column":40}},{"start":{"line":99,"column":44},"end":{"line":99,"column":59}}]},"16":{"line":103,"type":"if","locations":[{"start":{"line":103,"column":6},"end":{"line":103,"column":6}},{"start":{"line":103,"column":6},"end":{"line":103,"column":6}}]},"17":{"line":112,"type":"if","locations":[{"start":{"line":112,"column":9},"end":{"line":112,"column":9}},{"start":{"line":112,"column":9},"end":{"line":112,"column":9}}]},"18":{"line":119,"type":"if","locations":[{"start":{"line":119,"column":9},"end":{"line":119,"column":9}},{"start":{"line":119,"column":9},"end":{"line":119,"column":9}}]},"19":{"line":124,"type":"if","locations":[{"start":{"line":124,"column":6},"end":{"line":124,"column":6}},{"start":{"line":124,"column":6},"end":{"line":124,"column":6}}]},"20":{"line":124,"type":"binary-expr","locations":[{"start":{"line":124,"column":11},"end":{"line":124,"column":27}},{"start":{"line":124,"column":31},"end":{"line":124,"column":46}},{"start":{"line":124,"column":52},"end":{"line":124,"column":69}},{"start":{"line":124,"column":73},"end":{"line":124,"column":93}}]},"21":{"line":134,"type":"if","locations":[{"start":{"line":134,"column":6},"end":{"line":134,"column":6}},{"start":{"line":134,"column":6},"end":{"line":134,"column":6}}]},"22":{"line":135,"type":"if","locations":[{"start":{"line":135,"column":9},"end":{"line":135,"column":9}},{"start":{"line":135,"column":9},"end":{"line":135,"column":9}}]},"23":{"line":146,"type":"if","locations":[{"start":{"line":146,"column":6},"end":{"line":146,"column":6}},{"start":{"line":146,"column":6},"end":{"line":146,"column":6}}]},"24":{"line":146,"type":"binary-expr","locations":[{"start":{"line":146,"column":10},"end":{"line":146,"column":29}},{"start":{"line":146,"column":33},"end":{"line":146,"column":57}}]},"25":{"line":147,"type":"if","locations":[{"start":{"line":147,"column":6},"end":{"line":147,"column":6}},{"start":{"line":147,"column":6},"end":{"line":147,"column":6}}]},"26":{"line":151,"type":"if","locations":[{"start":{"line":151,"column":6},"end":{"line":151,"column":6}},{"start":{"line":151,"column":6},"end":{"line":151,"column":6}}]},"27":{"line":158,"type":"if","locations":[{"start":{"line":158,"column":6},"end":{"line":158,"column":6}},{"start":{"line":158,"column":6},"end":{"line":158,"column":6}}]},"28":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":12},"end":{"line":167,"column":12}},{"start":{"line":167,"column":12},"end":{"line":167,"column":12}}]},"29":{"line":169,"type":"if","locations":[{"start":{"line":169,"column":15},"end":{"line":169,"column":15}},{"start":{"line":169,"column":15},"end":{"line":169,"column":15}}]},"30":{"line":169,"type":"binary-expr","locations":[{"start":{"line":169,"column":19},"end":{"line":169,"column":45}},{"start":{"line":169,"column":49},"end":{"line":169,"column":75}}]},"31":{"line":173,"type":"if","locations":[{"start":{"line":173,"column":18},"end":{"line":173,"column":18}},{"start":{"line":173,"column":18},"end":{"line":173,"column":18}}]},"32":{"line":173,"type":"binary-expr","locations":[{"start":{"line":173,"column":23},"end":{"line":173,"column":49}},{"start":{"line":173,"column":53},"end":{"line":173,"column":79}},{"start":{"line":173,"column":84},"end":{"line":173,"column":113}},{"start":{"line":173,"column":117},"end":{"line":173,"column":133}},{"start":{"line":173,"column":137},"end":{"line":173,"column":162}}]},"33":{"line":194,"type":"if","locations":[{"start":{"line":194,"column":15},"end":{"line":194,"column":15}},{"start":{"line":194,"column":15},"end":{"line":194,"column":15}}]},"34":{"line":201,"type":"if","locations":[{"start":{"line":201,"column":12},"end":{"line":201,"column":12}},{"start":{"line":201,"column":12},"end":{"line":201,"column":12}}]},"35":{"line":207,"type":"if","locations":[{"start":{"line":207,"column":9},"end":{"line":207,"column":9}},{"start":{"line":207,"column":9},"end":{"line":207,"column":9}}]},"36":{"line":207,"type":"binary-expr","locations":[{"start":{"line":207,"column":14},"end":{"line":207,"column":30}},{"start":{"line":207,"column":34},"end":{"line":207,"column":49}},{"start":{"line":207,"column":54},"end":{"line":207,"column":71}},{"start":{"line":207,"column":75},"end":{"line":207,"column":90}}]},"37":{"line":212,"type":"if","locations":[{"start":{"line":212,"column":9},"end":{"line":212,"column":9}},{"start":{"line":212,"column":9},"end":{"line":212,"column":9}}]},"38":{"line":212,"type":"binary-expr","locations":[{"start":{"line":212,"column":14},"end":{"line":212,"column":30}},{"start":{"line":212,"column":34},"end":{"line":212,"column":49}},{"start":{"line":212,"column":54},"end":{"line":212,"column":71}},{"start":{"line":212,"column":75},"end":{"line":212,"column":90}}]},"39":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":3},"end":{"line":253,"column":3}},{"start":{"line":253,"column":3},"end":{"line":253,"column":3}}]},"40":{"line":253,"type":"binary-expr","locations":[{"start":{"line":253,"column":7},"end":{"line":253,"column":14}},{"start":{"line":253,"column":18},"end":{"line":253,"column":33}}]},"41":{"line":266,"type":"if","locations":[{"start":{"line":266,"column":6},"end":{"line":266,"column":6}},{"start":{"line":266,"column":6},"end":{"line":266,"column":6}}]},"42":{"line":270,"type":"if","locations":[{"start":{"line":270,"column":6},"end":{"line":270,"column":6}},{"start":{"line":270,"column":6},"end":{"line":270,"column":6}}]},"43":{"line":283,"type":"cond-expr","locations":[{"start":{"line":283,"column":46},"end":{"line":283,"column":61}},{"start":{"line":283,"column":64},"end":{"line":283,"column":78}}]},"44":{"line":292,"type":"if","locations":[{"start":{"line":292,"column":9},"end":{"line":292,"column":9}},{"start":{"line":292,"column":9},"end":{"line":292,"column":9}}]},"45":{"line":300,"type":"if","locations":[{"start":{"line":300,"column":12},"end":{"line":300,"column":12}},{"start":{"line":300,"column":12},"end":{"line":300,"column":12}}]},"46":{"line":310,"type":"if","locations":[{"start":{"line":310,"column":12},"end":{"line":310,"column":12}},{"start":{"line":310,"column":12},"end":{"line":310,"column":12}}]},"47":{"line":311,"type":"if","locations":[{"start":{"line":311,"column":17},"end":{"line":311,"column":17}},{"start":{"line":311,"column":17},"end":{"line":311,"column":17}}]}}}} | ||
{"/Users/epoch/src/passport-fellowshipone/lib/passport-fellowshipone/index.js":{"path":"/Users/epoch/src/passport-fellowshipone/lib/passport-fellowshipone/index.js","s":{"1":1,"2":1,"3":1},"b":{},"f":{},"fnMap":{},"statementMap":{"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":37}},"2":{"start":{"line":10,"column":0},"end":{"line":15,"column":0}},"3":{"start":{"line":15,"column":0},"end":{"line":15,"column":28}}},"branchMap":{}},"/Users/epoch/src/passport-fellowshipone/lib/passport-fellowshipone/strategy.js":{"path":"/Users/epoch/src/passport-fellowshipone/lib/passport-fellowshipone/strategy.js","s":{"1":1,"2":1,"3":15,"4":15,"5":15,"6":15,"7":15,"8":15,"9":15,"10":15,"11":15,"12":15,"13":15,"14":1,"15":1,"16":60,"17":1,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":1,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":1,"106":1,"107":1,"108":10,"109":10,"110":7,"111":1,"112":1,"113":6,"114":1,"115":1,"116":1,"117":1,"118":5,"119":1,"120":4,"121":1,"122":5,"123":3,"124":2,"125":1,"126":1,"127":0,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":0,"142":1,"143":0,"144":1,"145":1,"146":1,"147":1,"148":1,"149":7,"150":2,"151":5,"152":5,"153":5,"154":1},"b":{"1":[15,0],"2":[15,2],"3":[15,15],"4":[15,15],"5":[15,15],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0,0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0,0,0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0,0,0],"34":[0,0],"35":[0,0,0,0],"36":[1,6],"37":[1,5],"38":[1,4],"39":[3,2],"40":[1,1],"41":[0,1],"42":[0,1],"43":[1,0],"44":[1,0],"45":[0,1],"46":[0,1],"47":[1,0],"48":[1,1],"49":[2,5],"50":[7,6]},"f":{"1":15,"2":60,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":1,"13":10,"14":10,"15":7,"16":5,"17":1,"18":1,"19":7,"20":5},"fnMap":{"1":{"name":"Strategy","line":53,"loc":{"start":{"line":53,"column":0},"end":{"line":53,"column":35}}},"2":{"name":"(anonymous_2)","line":78,"loc":{"start":{"line":78,"column":13},"end":{"line":78,"column":36}}},"3":{"name":"(anonymous_3)","line":84,"loc":{"start":{"line":84,"column":42},"end":{"line":84,"column":110}}},"4":{"name":"(anonymous_4)","line":92,"loc":{"start":{"line":92,"column":148},"end":{"line":92,"column":180}}},"5":{"name":"(anonymous_5)","line":110,"loc":{"start":{"line":110,"column":43},"end":{"line":110,"column":152}}},"6":{"name":"(anonymous_6)","line":185,"loc":{"start":{"line":185,"column":28},"end":{"line":185,"column":47}}},"7":{"name":"(anonymous_7)","line":204,"loc":{"start":{"line":204,"column":29},"end":{"line":204,"column":48}}},"8":{"name":"(anonymous_8)","line":206,"loc":{"start":{"line":206,"column":29},"end":{"line":206,"column":45}}},"9":{"name":"(anonymous_9)","line":209,"loc":{"start":{"line":209,"column":28},"end":{"line":209,"column":39}}},"10":{"name":"(anonymous_10)","line":212,"loc":{"start":{"line":212,"column":30},"end":{"line":212,"column":41}}},"11":{"name":"(anonymous_11)","line":219,"loc":{"start":{"line":219,"column":26},"end":{"line":219,"column":40}}},"12":{"name":"(anonymous_12)","line":244,"loc":{"start":{"line":244,"column":45},"end":{"line":244,"column":63}}},"13":{"name":"(anonymous_13)","line":251,"loc":{"start":{"line":251,"column":31},"end":{"line":251,"column":62}}},"14":{"name":"(anonymous_14)","line":252,"loc":{"start":{"line":252,"column":20},"end":{"line":252,"column":31}}},"15":{"name":"(anonymous_15)","line":256,"loc":{"start":{"line":256,"column":9},"end":{"line":256,"column":34}}},"16":{"name":"(anonymous_16)","line":276,"loc":{"start":{"line":276,"column":31},"end":{"line":276,"column":58}}},"17":{"name":"(anonymous_17)","line":291,"loc":{"start":{"line":291,"column":37},"end":{"line":291,"column":58}}},"18":{"name":"(anonymous_18)","line":301,"loc":{"start":{"line":301,"column":29},"end":{"line":301,"column":51}}},"19":{"name":"(anonymous_19)","line":326,"loc":{"start":{"line":326,"column":33},"end":{"line":326,"column":76}}},"20":{"name":"(anonymous_20)","line":337,"loc":{"start":{"line":337,"column":102},"end":{"line":337,"column":123}}}},"statementMap":{"1":{"start":{"line":4,"column":0},"end":{"line":12,"column":32}},"2":{"start":{"line":53,"column":0},"end":{"line":71,"column":1}},"3":{"start":{"line":54,"column":3},"end":{"line":55,"column":3}},"4":{"start":{"line":55,"column":3},"end":{"line":56,"column":3}},"5":{"start":{"line":56,"column":3},"end":{"line":57,"column":3}},"6":{"start":{"line":57,"column":3},"end":{"line":58,"column":3}},"7":{"start":{"line":58,"column":3},"end":{"line":59,"column":3}},"8":{"start":{"line":59,"column":3},"end":{"line":61,"column":3}},"9":{"start":{"line":61,"column":3},"end":{"line":62,"column":3}},"10":{"start":{"line":62,"column":3},"end":{"line":63,"column":3}},"11":{"start":{"line":63,"column":3},"end":{"line":67,"column":3}},"12":{"start":{"line":67,"column":3},"end":{"line":70,"column":3}},"13":{"start":{"line":70,"column":3},"end":{"line":71,"column":0}},"14":{"start":{"line":76,"column":0},"end":{"line":76,"column":39}},"15":{"start":{"line":78,"column":0},"end":{"line":84,"column":0}},"16":{"start":{"line":79,"column":3},"end":{"line":80,"column":0}},"17":{"start":{"line":84,"column":0},"end":{"line":110,"column":0}},"18":{"start":{"line":85,"column":3},"end":{"line":85,"column":24}},"19":{"start":{"line":86,"column":3},"end":{"line":90,"column":4}},"20":{"start":{"line":87,"column":6},"end":{"line":87,"column":32}},"21":{"start":{"line":89,"column":6},"end":{"line":89,"column":50}},"22":{"start":{"line":92,"column":3},"end":{"line":107,"column":0}},"23":{"start":{"line":93,"column":6},"end":{"line":105,"column":7}},"24":{"start":{"line":93,"column":17},"end":{"line":93,"column":33}},"25":{"start":{"line":95,"column":9},"end":{"line":95,"column":47}},"26":{"start":{"line":96,"column":9},"end":{"line":96,"column":57}},"27":{"start":{"line":97,"column":9},"end":{"line":97,"column":39}},"28":{"start":{"line":98,"column":9},"end":{"line":98,"column":71}},"29":{"start":{"line":99,"column":9},"end":{"line":99,"column":46}},"30":{"start":{"line":102,"column":9},"end":{"line":104,"column":9}},"31":{"start":{"line":104,"column":9},"end":{"line":104,"column":80}},"32":{"start":{"line":110,"column":0},"end":{"line":244,"column":0}},"33":{"start":{"line":111,"column":3},"end":{"line":111,"column":111}},"34":{"start":{"line":113,"column":3},"end":{"line":115,"column":4}},"35":{"start":{"line":114,"column":6},"end":{"line":114,"column":62}},"36":{"start":{"line":116,"column":3},"end":{"line":116,"column":41}},"37":{"start":{"line":117,"column":3},"end":{"line":117,"column":77}},"38":{"start":{"line":117,"column":57},"end":{"line":117,"column":77}},"39":{"start":{"line":118,"column":3},"end":{"line":118,"column":79}},"40":{"start":{"line":118,"column":58},"end":{"line":118,"column":79}},"41":{"start":{"line":120,"column":3},"end":{"line":120,"column":20}},"42":{"start":{"line":121,"column":3},"end":{"line":121,"column":74}},"43":{"start":{"line":122,"column":3},"end":{"line":126,"column":4}},"44":{"start":{"line":123,"column":6},"end":{"line":123,"column":68}},"45":{"start":{"line":125,"column":6},"end":{"line":125,"column":47}},"46":{"start":{"line":128,"column":3},"end":{"line":130,"column":3}},"47":{"start":{"line":130,"column":3},"end":{"line":134,"column":4}},"48":{"start":{"line":131,"column":6},"end":{"line":133,"column":7}},"49":{"start":{"line":132,"column":9},"end":{"line":132,"column":43}},"50":{"start":{"line":137,"column":3},"end":{"line":141,"column":4}},"51":{"start":{"line":138,"column":6},"end":{"line":140,"column":7}},"52":{"start":{"line":139,"column":9},"end":{"line":139,"column":34}},"53":{"start":{"line":143,"column":3},"end":{"line":151,"column":4}},"54":{"start":{"line":145,"column":6},"end":{"line":150,"column":32}},"55":{"start":{"line":153,"column":3},"end":{"line":162,"column":4}},"56":{"start":{"line":154,"column":6},"end":{"line":158,"column":7}},"57":{"start":{"line":155,"column":9},"end":{"line":155,"column":54}},"58":{"start":{"line":157,"column":9},"end":{"line":157,"column":66}},"59":{"start":{"line":159,"column":6},"end":{"line":159,"column":50}},"60":{"start":{"line":161,"column":6},"end":{"line":161,"column":36}},"61":{"start":{"line":164,"column":3},"end":{"line":164,"column":12}},"62":{"start":{"line":165,"column":3},"end":{"line":165,"column":81}},"63":{"start":{"line":165,"column":56},"end":{"line":165,"column":81}},"64":{"start":{"line":166,"column":3},"end":{"line":167,"column":34}},"65":{"start":{"line":166,"column":24},"end":{"line":166,"column":74}},"66":{"start":{"line":167,"column":8},"end":{"line":167,"column":34}},"67":{"start":{"line":169,"column":3},"end":{"line":169,"column":15}},"68":{"start":{"line":170,"column":3},"end":{"line":174,"column":4}},"69":{"start":{"line":171,"column":6},"end":{"line":171,"column":100}},"70":{"start":{"line":173,"column":6},"end":{"line":173,"column":94}},"71":{"start":{"line":176,"column":3},"end":{"line":176,"column":43}},"72":{"start":{"line":177,"column":3},"end":{"line":235,"column":4}},"73":{"start":{"line":178,"column":6},"end":{"line":178,"column":20}},"74":{"start":{"line":179,"column":6},"end":{"line":179,"column":22}},"75":{"start":{"line":183,"column":6},"end":{"line":183,"column":34}},"76":{"start":{"line":184,"column":6},"end":{"line":184,"column":33}},"77":{"start":{"line":185,"column":6},"end":{"line":204,"column":6}},"78":{"start":{"line":186,"column":9},"end":{"line":201,"column":10}},"79":{"start":{"line":187,"column":12},"end":{"line":187,"column":34}},"80":{"start":{"line":188,"column":12},"end":{"line":200,"column":13}},"81":{"start":{"line":189,"column":15},"end":{"line":189,"column":46}},"82":{"start":{"line":192,"column":15},"end":{"line":199,"column":16}},"83":{"start":{"line":193,"column":18},"end":{"line":193,"column":167}},"84":{"start":{"line":195,"column":18},"end":{"line":198,"column":37}},"85":{"start":{"line":204,"column":6},"end":{"line":217,"column":9}},"86":{"start":{"line":205,"column":9},"end":{"line":205,"column":38}},"87":{"start":{"line":206,"column":9},"end":{"line":208,"column":12}},"88":{"start":{"line":207,"column":12},"end":{"line":207,"column":26}},"89":{"start":{"line":209,"column":9},"end":{"line":211,"column":12}},"90":{"start":{"line":210,"column":12},"end":{"line":210,"column":38}},"91":{"start":{"line":212,"column":9},"end":{"line":216,"column":12}},"92":{"start":{"line":213,"column":12},"end":{"line":215,"column":13}},"93":{"start":{"line":214,"column":15},"end":{"line":214,"column":41}},"94":{"start":{"line":219,"column":6},"end":{"line":224,"column":9}},"95":{"start":{"line":220,"column":9},"end":{"line":223,"column":10}},"96":{"start":{"line":221,"column":12},"end":{"line":221,"column":34}},"97":{"start":{"line":222,"column":12},"end":{"line":223,"column":9}},"98":{"start":{"line":226,"column":6},"end":{"line":228,"column":7}},"99":{"start":{"line":227,"column":9},"end":{"line":227,"column":34}},"100":{"start":{"line":229,"column":6},"end":{"line":229,"column":20}},"101":{"start":{"line":231,"column":6},"end":{"line":233,"column":7}},"102":{"start":{"line":232,"column":9},"end":{"line":232,"column":34}},"103":{"start":{"line":234,"column":6},"end":{"line":234,"column":21}},"104":{"start":{"line":237,"column":3},"end":{"line":237,"column":10}},"105":{"start":{"line":244,"column":0},"end":{"line":251,"column":0}},"106":{"start":{"line":245,"column":3},"end":{"line":248,"column":0}},"107":{"start":{"line":251,"column":0},"end":{"line":276,"column":0}},"108":{"start":{"line":252,"column":3},"end":{"line":273,"column":0}},"109":{"start":{"line":253,"column":6},"end":{"line":272,"column":3}},"110":{"start":{"line":257,"column":9},"end":{"line":260,"column":10}},"111":{"start":{"line":258,"column":12},"end":{"line":259,"column":12}},"112":{"start":{"line":259,"column":12},"end":{"line":260,"column":9}},"113":{"start":{"line":261,"column":9},"end":{"line":266,"column":10}},"114":{"start":{"line":262,"column":12},"end":{"line":263,"column":12}},"115":{"start":{"line":263,"column":12},"end":{"line":264,"column":12}},"116":{"start":{"line":264,"column":12},"end":{"line":265,"column":12}},"117":{"start":{"line":265,"column":12},"end":{"line":266,"column":9}},"118":{"start":{"line":268,"column":9},"end":{"line":270,"column":9}},"119":{"start":{"line":268,"column":20},"end":{"line":270,"column":9}},"120":{"start":{"line":270,"column":9},"end":{"line":271,"column":6}},"121":{"start":{"line":276,"column":0},"end":{"line":326,"column":0}},"122":{"start":{"line":277,"column":3},"end":{"line":279,"column":3}},"123":{"start":{"line":277,"column":12},"end":{"line":279,"column":3}},"124":{"start":{"line":279,"column":3},"end":{"line":280,"column":3}},"125":{"start":{"line":279,"column":25},"end":{"line":280,"column":3}},"126":{"start":{"line":280,"column":3},"end":{"line":282,"column":3}},"127":{"start":{"line":280,"column":33},"end":{"line":282,"column":3}},"128":{"start":{"line":282,"column":3},"end":{"line":283,"column":3}},"129":{"start":{"line":283,"column":3},"end":{"line":284,"column":3}},"130":{"start":{"line":284,"column":3},"end":{"line":285,"column":3}},"131":{"start":{"line":285,"column":3},"end":{"line":286,"column":3}},"132":{"start":{"line":286,"column":3},"end":{"line":287,"column":3}},"133":{"start":{"line":287,"column":3},"end":{"line":289,"column":3}},"134":{"start":{"line":289,"column":3},"end":{"line":291,"column":3}},"135":{"start":{"line":291,"column":3},"end":{"line":301,"column":3}},"136":{"start":{"line":292,"column":6},"end":{"line":298,"column":6}},"137":{"start":{"line":293,"column":9},"end":{"line":298,"column":6}},"138":{"start":{"line":298,"column":6},"end":{"line":299,"column":3}},"139":{"start":{"line":301,"column":3},"end":{"line":306,"column":3}},"140":{"start":{"line":302,"column":6},"end":{"line":305,"column":3}},"141":{"start":{"line":302,"column":27},"end":{"line":303,"column":6}},"142":{"start":{"line":303,"column":11},"end":{"line":305,"column":3}},"143":{"start":{"line":303,"column":21},"end":{"line":304,"column":6}},"144":{"start":{"line":304,"column":11},"end":{"line":305,"column":3}},"145":{"start":{"line":306,"column":3},"end":{"line":308,"column":3}},"146":{"start":{"line":306,"column":29},"end":{"line":308,"column":3}},"147":{"start":{"line":308,"column":3},"end":{"line":309,"column":0}},"148":{"start":{"line":326,"column":0},"end":{"line":345,"column":0}},"149":{"start":{"line":327,"column":3},"end":{"line":329,"column":3}},"150":{"start":{"line":327,"column":35},"end":{"line":329,"column":3}},"151":{"start":{"line":329,"column":3},"end":{"line":337,"column":3}},"152":{"start":{"line":337,"column":3},"end":{"line":340,"column":0}},"153":{"start":{"line":338,"column":6},"end":{"line":339,"column":3}},"154":{"start":{"line":345,"column":0},"end":{"line":345,"column":26}}},"branchMap":{"1":{"line":54,"type":"binary-expr","locations":[{"start":{"line":54,"column":13},"end":{"line":54,"column":20}},{"start":{"line":54,"column":24},"end":{"line":54,"column":26}}]},"2":{"line":56,"type":"binary-expr","locations":[{"start":{"line":56,"column":27},"end":{"line":56,"column":41}},{"start":{"line":56,"column":45},"end":{"line":56,"column":91}}]},"3":{"line":57,"type":"binary-expr","locations":[{"start":{"line":57,"column":36},"end":{"line":57,"column":59}},{"start":{"line":57,"column":63},"end":{"line":57,"column":102}}]},"4":{"line":58,"type":"binary-expr","locations":[{"start":{"line":58,"column":35},"end":{"line":58,"column":57}},{"start":{"line":58,"column":61},"end":{"line":58,"column":99}}]},"5":{"line":59,"type":"binary-expr","locations":[{"start":{"line":59,"column":41},"end":{"line":59,"column":69}},{"start":{"line":59,"column":73},"end":{"line":59,"column":109}}]},"6":{"line":86,"type":"if","locations":[{"start":{"line":86,"column":3},"end":{"line":86,"column":3}},{"start":{"line":86,"column":3},"end":{"line":86,"column":3}}]},"7":{"line":93,"type":"if","locations":[{"start":{"line":93,"column":6},"end":{"line":93,"column":6}},{"start":{"line":93,"column":6},"end":{"line":93,"column":6}}]},"8":{"line":113,"type":"if","locations":[{"start":{"line":113,"column":3},"end":{"line":113,"column":3}},{"start":{"line":113,"column":3},"end":{"line":113,"column":3}}]},"9":{"line":117,"type":"if","locations":[{"start":{"line":117,"column":3},"end":{"line":117,"column":3}},{"start":{"line":117,"column":3},"end":{"line":117,"column":3}}]},"10":{"line":117,"type":"binary-expr","locations":[{"start":{"line":117,"column":7},"end":{"line":117,"column":36}},{"start":{"line":117,"column":40},"end":{"line":117,"column":55}}]},"11":{"line":118,"type":"if","locations":[{"start":{"line":118,"column":3},"end":{"line":118,"column":3}},{"start":{"line":118,"column":3},"end":{"line":118,"column":3}}]},"12":{"line":118,"type":"binary-expr","locations":[{"start":{"line":118,"column":7},"end":{"line":118,"column":37}},{"start":{"line":118,"column":41},"end":{"line":118,"column":56}}]},"13":{"line":122,"type":"if","locations":[{"start":{"line":122,"column":3},"end":{"line":122,"column":3}},{"start":{"line":122,"column":3},"end":{"line":122,"column":3}}]},"14":{"line":131,"type":"if","locations":[{"start":{"line":131,"column":6},"end":{"line":131,"column":6}},{"start":{"line":131,"column":6},"end":{"line":131,"column":6}}]},"15":{"line":138,"type":"if","locations":[{"start":{"line":138,"column":6},"end":{"line":138,"column":6}},{"start":{"line":138,"column":6},"end":{"line":138,"column":6}}]},"16":{"line":143,"type":"if","locations":[{"start":{"line":143,"column":3},"end":{"line":143,"column":3}},{"start":{"line":143,"column":3},"end":{"line":143,"column":3}}]},"17":{"line":143,"type":"binary-expr","locations":[{"start":{"line":143,"column":8},"end":{"line":143,"column":24}},{"start":{"line":143,"column":28},"end":{"line":143,"column":43}},{"start":{"line":143,"column":49},"end":{"line":143,"column":66}},{"start":{"line":143,"column":70},"end":{"line":143,"column":90}}]},"18":{"line":153,"type":"if","locations":[{"start":{"line":153,"column":3},"end":{"line":153,"column":3}},{"start":{"line":153,"column":3},"end":{"line":153,"column":3}}]},"19":{"line":154,"type":"if","locations":[{"start":{"line":154,"column":6},"end":{"line":154,"column":6}},{"start":{"line":154,"column":6},"end":{"line":154,"column":6}}]},"20":{"line":165,"type":"if","locations":[{"start":{"line":165,"column":3},"end":{"line":165,"column":3}},{"start":{"line":165,"column":3},"end":{"line":165,"column":3}}]},"21":{"line":165,"type":"binary-expr","locations":[{"start":{"line":165,"column":7},"end":{"line":165,"column":26}},{"start":{"line":165,"column":30},"end":{"line":165,"column":54}}]},"22":{"line":166,"type":"if","locations":[{"start":{"line":166,"column":3},"end":{"line":166,"column":3}},{"start":{"line":166,"column":3},"end":{"line":166,"column":3}}]},"23":{"line":170,"type":"if","locations":[{"start":{"line":170,"column":3},"end":{"line":170,"column":3}},{"start":{"line":170,"column":3},"end":{"line":170,"column":3}}]},"24":{"line":177,"type":"if","locations":[{"start":{"line":177,"column":3},"end":{"line":177,"column":3}},{"start":{"line":177,"column":3},"end":{"line":177,"column":3}}]},"25":{"line":186,"type":"if","locations":[{"start":{"line":186,"column":9},"end":{"line":186,"column":9}},{"start":{"line":186,"column":9},"end":{"line":186,"column":9}}]},"26":{"line":188,"type":"if","locations":[{"start":{"line":188,"column":12},"end":{"line":188,"column":12}},{"start":{"line":188,"column":12},"end":{"line":188,"column":12}}]},"27":{"line":188,"type":"binary-expr","locations":[{"start":{"line":188,"column":16},"end":{"line":188,"column":42}},{"start":{"line":188,"column":46},"end":{"line":188,"column":72}}]},"28":{"line":192,"type":"if","locations":[{"start":{"line":192,"column":15},"end":{"line":192,"column":15}},{"start":{"line":192,"column":15},"end":{"line":192,"column":15}}]},"29":{"line":192,"type":"binary-expr","locations":[{"start":{"line":192,"column":20},"end":{"line":192,"column":46}},{"start":{"line":192,"column":50},"end":{"line":192,"column":76}},{"start":{"line":192,"column":81},"end":{"line":192,"column":110}},{"start":{"line":192,"column":114},"end":{"line":192,"column":130}},{"start":{"line":192,"column":134},"end":{"line":192,"column":159}}]},"30":{"line":213,"type":"if","locations":[{"start":{"line":213,"column":12},"end":{"line":213,"column":12}},{"start":{"line":213,"column":12},"end":{"line":213,"column":12}}]},"31":{"line":220,"type":"if","locations":[{"start":{"line":220,"column":9},"end":{"line":220,"column":9}},{"start":{"line":220,"column":9},"end":{"line":220,"column":9}}]},"32":{"line":226,"type":"if","locations":[{"start":{"line":226,"column":6},"end":{"line":226,"column":6}},{"start":{"line":226,"column":6},"end":{"line":226,"column":6}}]},"33":{"line":226,"type":"binary-expr","locations":[{"start":{"line":226,"column":11},"end":{"line":226,"column":27}},{"start":{"line":226,"column":31},"end":{"line":226,"column":46}},{"start":{"line":226,"column":51},"end":{"line":226,"column":68}},{"start":{"line":226,"column":72},"end":{"line":226,"column":87}}]},"34":{"line":231,"type":"if","locations":[{"start":{"line":231,"column":6},"end":{"line":231,"column":6}},{"start":{"line":231,"column":6},"end":{"line":231,"column":6}}]},"35":{"line":231,"type":"binary-expr","locations":[{"start":{"line":231,"column":11},"end":{"line":231,"column":27}},{"start":{"line":231,"column":31},"end":{"line":231,"column":46}},{"start":{"line":231,"column":51},"end":{"line":231,"column":68}},{"start":{"line":231,"column":72},"end":{"line":231,"column":87}}]},"36":{"line":257,"type":"if","locations":[{"start":{"line":257,"column":9},"end":{"line":257,"column":9}},{"start":{"line":257,"column":9},"end":{"line":257,"column":9}}]},"37":{"line":261,"type":"if","locations":[{"start":{"line":261,"column":9},"end":{"line":261,"column":9}},{"start":{"line":261,"column":9},"end":{"line":261,"column":9}}]},"38":{"line":268,"type":"if","locations":[{"start":{"line":268,"column":9},"end":{"line":268,"column":9}},{"start":{"line":268,"column":9},"end":{"line":268,"column":9}}]},"39":{"line":277,"type":"if","locations":[{"start":{"line":277,"column":3},"end":{"line":277,"column":3}},{"start":{"line":277,"column":3},"end":{"line":277,"column":3}}]},"40":{"line":279,"type":"if","locations":[{"start":{"line":279,"column":3},"end":{"line":279,"column":3}},{"start":{"line":279,"column":3},"end":{"line":279,"column":3}}]},"41":{"line":280,"type":"if","locations":[{"start":{"line":280,"column":3},"end":{"line":280,"column":3}},{"start":{"line":280,"column":3},"end":{"line":280,"column":3}}]},"42":{"line":286,"type":"cond-expr","locations":[{"start":{"line":286,"column":43},"end":{"line":286,"column":58}},{"start":{"line":286,"column":61},"end":{"line":286,"column":75}}]},"43":{"line":289,"type":"binary-expr","locations":[{"start":{"line":289,"column":23},"end":{"line":289,"column":60}},{"start":{"line":289,"column":64},"end":{"line":289,"column":66}}]},"44":{"line":292,"type":"if","locations":[{"start":{"line":292,"column":6},"end":{"line":292,"column":6}},{"start":{"line":292,"column":6},"end":{"line":292,"column":6}}]},"45":{"line":302,"type":"if","locations":[{"start":{"line":302,"column":6},"end":{"line":302,"column":6}},{"start":{"line":302,"column":6},"end":{"line":302,"column":6}}]},"46":{"line":303,"type":"if","locations":[{"start":{"line":303,"column":11},"end":{"line":303,"column":11}},{"start":{"line":303,"column":11},"end":{"line":303,"column":11}}]},"47":{"line":306,"type":"if","locations":[{"start":{"line":306,"column":3},"end":{"line":306,"column":3}},{"start":{"line":306,"column":3},"end":{"line":306,"column":3}}]},"48":{"line":306,"type":"binary-expr","locations":[{"start":{"line":306,"column":7},"end":{"line":306,"column":12}},{"start":{"line":306,"column":16},"end":{"line":306,"column":27}}]},"49":{"line":327,"type":"if","locations":[{"start":{"line":327,"column":3},"end":{"line":327,"column":3}},{"start":{"line":327,"column":3},"end":{"line":327,"column":3}}]},"50":{"line":327,"type":"binary-expr","locations":[{"start":{"line":327,"column":7},"end":{"line":327,"column":14}},{"start":{"line":327,"column":18},"end":{"line":327,"column":33}}]}}}} |
@@ -9,2 +9,5 @@ /** | ||
URL = require('url'), | ||
URI = require('URIjs'), | ||
URITemplate = require('URIjs/src/URITemplate'), | ||
async = require('async'), | ||
request = require('request'); | ||
@@ -54,7 +57,6 @@ | ||
options.churchCode = options.churchCode | ||
options.staging = options.staging || false | ||
options.apiURL = options.apiURL || (options.churchCode ? 'https://' + options.churchCode + (options.staging ? '.staging' : '') + '.fellowshiponeapi.com/v1' : '') | ||
options.requestTokenURL = options.requestTokenURL || options.apiURL + '/Tokens/RequestToken' | ||
options.accessTokenURL = options.accessTokenURL || options.apiURL + '/Tokens/AccessToken' | ||
options.userAuthorizationURL = options.userAuthorizationURL || options.apiURL + '/PortalUser/Login' | ||
options.apiURL = expand(options.apiURL || 'https://{churchCode}.fellowshiponeapi.com/v1', options) | ||
options.requestTokenURL = expand(options.requestTokenURL || options.apiURL + '/Tokens/RequestToken', options) | ||
options.accessTokenURL = expand(options.accessTokenURL || options.apiURL + '/Tokens/AccessToken', options) | ||
options.userAuthorizationURL = expand(options.userAuthorizationURL || options.apiURL + '/PortalUser/Login', options) | ||
@@ -67,165 +69,179 @@ OAuthStrategy.call(this, options, verify) | ||
// response headers. | ||
this._oauth.getOAuthAccessToken = function(oauth_token, oauth_token_secret, oauth_verifier, callback) { | ||
var extraParams = {}; | ||
if (typeof oauth_verifier == "function") { | ||
callback = oauth_verifier; | ||
} else { | ||
extraParams.oauth_verifier = oauth_verifier; | ||
} | ||
this._oauth.getOAuthAccessToken = this._getOAuthAccessToken.bind(this._oauth) | ||
this._performSecureRequest(oauth_token, oauth_token_secret, this._clientOptions.accessTokenHttpMethod, this._accessUrl, extraParams, null, null, function(error, data, response) { | ||
if (error) callback(error); | ||
else { | ||
var results = querystring.parse(data); | ||
var oauth_access_token = results["oauth_token"]; | ||
delete results["oauth_token"]; | ||
var oauth_access_token_secret = results["oauth_token_secret"]; | ||
delete results["oauth_token_secret"]; | ||
// Override oauth._performSecureRequest to account for https://github.com/ciaranj/node-oauth/issues/182 | ||
this._oauth._performSecureRequest = this._performSecureRequest.bind(this._oauth) | ||
} | ||
// this is the only customization really | ||
results.userURL = response.headers['content-location'] | ||
/** | ||
* Inherit from `OAuthStrategy`. | ||
*/ | ||
util.inherits(Strategy, OAuthStrategy); | ||
callback(null, oauth_access_token, oauth_access_token_secret, results); | ||
} | ||
}) | ||
var expand = function(uri, options) { | ||
return URI.expand(uri, options).normalize().toString() | ||
} | ||
// Override oauth.getOAuthAccessToken so that we can get the user profile from the | ||
// response headers. | ||
Strategy.prototype._getOAuthAccessToken = function(oauth_token, oauth_token_secret, oauth_verifier, callback) { | ||
/* jshint sub: true */ | ||
var extraParams = {}; | ||
if (typeof oauth_verifier == "function") { | ||
callback = oauth_verifier; | ||
} else { | ||
extraParams.oauth_verifier = oauth_verifier; | ||
} | ||
// Override oauth._performSecureRequest to account for https://github.com/ciaranj/node-oauth/issues/182 | ||
this._oauth._performSecureRequest = function(oauth_token, oauth_token_secret, method, url, extra_params, post_body, post_content_type, callback) { | ||
var orderedParameters = this._prepareParameters(oauth_token, oauth_token_secret, method, url, extra_params); | ||
this._performSecureRequest(oauth_token, oauth_token_secret, this._clientOptions.accessTokenHttpMethod, this._accessUrl, extraParams, null, null, function(error, data, response) { | ||
if (error) callback(error); | ||
else { | ||
var results = querystring.parse(data); | ||
var oauth_access_token = results["oauth_token"]; | ||
delete results["oauth_token"]; | ||
var oauth_access_token_secret = results["oauth_token_secret"]; | ||
delete results["oauth_token_secret"]; | ||
if (!post_content_type) { | ||
post_content_type = "application/x-www-form-urlencoded"; | ||
} | ||
var parsedUrl = URL.parse(url, false); | ||
if (parsedUrl.protocol == "http:" && !parsedUrl.port) parsedUrl.port = 80; | ||
if (parsedUrl.protocol == "https:" && !parsedUrl.port) parsedUrl.port = 443; | ||
// this is the only customization really | ||
results.userURL = response.headers['content-location'] | ||
var headers = {}; | ||
var authorization = this._buildAuthorizationHeaders(orderedParameters); | ||
if (this._isEcho) { | ||
headers["X-Verify-Credentials-Authorization"] = authorization; | ||
} else { | ||
headers["Authorization"] = authorization; | ||
callback(null, oauth_access_token, oauth_access_token_secret, results); | ||
} | ||
}) | ||
/* jshint sub: false */ | ||
} | ||
headers["Host"] = parsedUrl.host | ||
// Override oauth._performSecureRequest to account for https://github.com/ciaranj/node-oauth/issues/182 | ||
Strategy.prototype._performSecureRequest = function(oauth_token, oauth_token_secret, method, url, extra_params, post_body, post_content_type, callback) { | ||
/* jshint shadow: true, sub: true, eqnull: true */ | ||
var orderedParameters = this._prepareParameters(oauth_token, oauth_token_secret, method, url, extra_params); | ||
for (var key in this._headers) { | ||
if (this._headers.hasOwnProperty(key)) { | ||
headers[key] = this._headers[key]; | ||
} | ||
} | ||
if (!post_content_type) { | ||
post_content_type = "application/x-www-form-urlencoded"; | ||
} | ||
var parsedUrl = URL.parse(url, false); | ||
if (parsedUrl.protocol == "http:" && !parsedUrl.port) parsedUrl.port = 80; | ||
if (parsedUrl.protocol == "https:" && !parsedUrl.port) parsedUrl.port = 443; | ||
// Filter out any passed extra_params that are really to do with OAuth | ||
for (var key in extra_params) { | ||
if (this._isParameterNameAnOAuthParameter(key)) { | ||
delete extra_params[key]; | ||
} | ||
} | ||
var headers = {}; | ||
var authorization = this._buildAuthorizationHeaders(orderedParameters); | ||
if (this._isEcho) { | ||
headers["X-Verify-Credentials-Authorization"] = authorization; | ||
} else { | ||
headers["Authorization"] = authorization; | ||
} | ||
if ((method == "POST" || method == "PUT") && (post_body == null && extra_params != null)) { | ||
// Fix the mismatch between the output of querystring.stringify() and this._encodeData() | ||
post_body = querystring.stringify(extra_params) | ||
.replace(/\!/g, "%21") | ||
.replace(/\'/g, "%27") | ||
.replace(/\(/g, "%28") | ||
.replace(/\)/g, "%29") | ||
.replace(/\*/g, "%2A"); | ||
headers["Host"] = parsedUrl.host | ||
for (var key in this._headers) { | ||
if (this._headers.hasOwnProperty(key)) { | ||
headers[key] = this._headers[key]; | ||
} | ||
} | ||
if (post_body) { | ||
if (Buffer.isBuffer(post_body)) { | ||
headers["Content-length"] = post_body.length; | ||
} else { | ||
headers["Content-length"] = Buffer.byteLength(post_body); | ||
} | ||
headers["Content-Type"] = post_content_type; | ||
} else { | ||
headers["Content-length"] = 0; | ||
// Filter out any passed extra_params that are really to do with OAuth | ||
for (var key in extra_params) { | ||
if (this._isParameterNameAnOAuthParameter(key)) { | ||
delete extra_params[key]; | ||
} | ||
} | ||
var path; | ||
if (!parsedUrl.pathname || parsedUrl.pathname == "") parsedUrl.pathname = "/"; | ||
if (parsedUrl.query) path = parsedUrl.pathname + "?" + parsedUrl.query; | ||
else path = parsedUrl.pathname; | ||
if ((method == "POST" || method == "PUT") && (post_body == null && extra_params != null)) { | ||
// Fix the mismatch between the output of querystring.stringify() and this._encodeData() | ||
post_body = querystring.stringify(extra_params) | ||
.replace(/\!/g, "%21") | ||
.replace(/\'/g, "%27") | ||
.replace(/\(/g, "%28") | ||
.replace(/\)/g, "%29") | ||
.replace(/\*/g, "%2A"); | ||
} | ||
var request; | ||
if (parsedUrl.protocol == "https:") { | ||
request = this._createClient(parsedUrl.port, parsedUrl.hostname, method, path, headers, true); | ||
if (post_body) { | ||
if (Buffer.isBuffer(post_body)) { | ||
headers["Content-length"] = post_body.length; | ||
} else { | ||
request = this._createClient(parsedUrl.port, parsedUrl.hostname, method, path, headers); | ||
headers["Content-length"] = Buffer.byteLength(post_body); | ||
} | ||
headers["Content-Type"] = post_content_type; | ||
} else { | ||
headers["Content-length"] = 0; | ||
} | ||
var clientOptions = this._clientOptions; | ||
if (callback) { | ||
var data = ""; | ||
var self = this; | ||
var path; | ||
if (!parsedUrl.pathname || parsedUrl.pathname === "") parsedUrl.pathname = "/"; | ||
if (parsedUrl.query) path = parsedUrl.pathname + "?" + parsedUrl.query; | ||
else path = parsedUrl.pathname; | ||
// Some hosts *cough* google appear to close the connection early / send no content-length header | ||
// allow this behaviour. | ||
var allowEarlyClose = false; //OAuthUtils.isAnEarlyCloseHost(parsedUrl.hostname); | ||
var callbackCalled = false; | ||
var passBackControl = function(response) { | ||
if (!callbackCalled) { | ||
callbackCalled = true; | ||
if (response.statusCode >= 200 && response.statusCode <= 299) { | ||
callback(null, data, response); | ||
var request; | ||
if (parsedUrl.protocol == "https:") { | ||
request = this._createClient(parsedUrl.port, parsedUrl.hostname, method, path, headers, true); | ||
} else { | ||
request = this._createClient(parsedUrl.port, parsedUrl.hostname, method, path, headers); | ||
} | ||
var clientOptions = this._clientOptions; | ||
if (callback) { | ||
var data = ""; | ||
var self = this; | ||
// Some hosts *cough* google appear to close the connection early / send no content-length header | ||
// allow this behaviour. | ||
var allowEarlyClose = false; //OAuthUtils.isAnEarlyCloseHost(parsedUrl.hostname); | ||
var callbackCalled = false; | ||
var passBackControl = function(response) { | ||
if (!callbackCalled) { | ||
callbackCalled = true; | ||
if (response.statusCode >= 200 && response.statusCode <= 299) { | ||
callback(null, data, response); | ||
} else { | ||
// Follow 301 or 302 redirects with Location HTTP header | ||
if ((response.statusCode == 301 || response.statusCode == 302) && clientOptions.followRedirects && response.headers && response.headers.location) { | ||
self._performSecureRequest(oauth_token, oauth_token_secret, method, response.headers.location, extra_params, post_body, post_content_type, callback); | ||
} else { | ||
// Follow 301 or 302 redirects with Location HTTP header | ||
if ((response.statusCode == 301 || response.statusCode == 302) && clientOptions.followRedirects && response.headers && response.headers.location) { | ||
self._performSecureRequest(oauth_token, oauth_token_secret, method, response.headers.location, extra_params, post_body, post_content_type, callback); | ||
} else { | ||
callback({ | ||
statusCode: response.statusCode, | ||
data: data | ||
}, data, response); | ||
} | ||
callback({ | ||
statusCode: response.statusCode, | ||
data: data | ||
}, data, response); | ||
} | ||
} | ||
} | ||
} | ||
request.on('response', function(response) { | ||
response.setEncoding('utf8'); | ||
response.on('data', function(chunk) { | ||
data += chunk; | ||
}); | ||
response.on('end', function() { | ||
request.on('response', function(response) { | ||
response.setEncoding('utf8'); | ||
response.on('data', function(chunk) { | ||
data += chunk; | ||
}); | ||
response.on('end', function() { | ||
passBackControl(response); | ||
}); | ||
response.on('close', function() { | ||
if (allowEarlyClose) { | ||
passBackControl(response); | ||
}); | ||
response.on('close', function() { | ||
if (allowEarlyClose) { | ||
passBackControl(response); | ||
} | ||
}); | ||
}); | ||
request.on("error", function(err) { | ||
if (!callbackCalled) { | ||
callbackCalled = true; | ||
callback(err) | ||
} | ||
}); | ||
}); | ||
if ((method == "POST" || method == "PUT") && post_body != null && post_body != "") { | ||
request.write(post_body); | ||
request.on("error", function(err) { | ||
if (!callbackCalled) { | ||
callbackCalled = true; | ||
callback(err) | ||
} | ||
request.end(); | ||
} else { | ||
if ((method == "POST" || method == "PUT") && post_body != null && post_body != "") { | ||
request.write(post_body); | ||
} | ||
return request; | ||
}); | ||
if ((method === "POST" || method === "PUT") && post_body != null && post_body !== "") { | ||
request.write(post_body); | ||
} | ||
return; | ||
request.end(); | ||
} else { | ||
if ((method === "POST" || method === "PUT") && post_body != null && post_body !== "") { | ||
request.write(post_body); | ||
} | ||
return request; | ||
} | ||
/* jshint shadow: false, sub: false, eqnull: false */ | ||
return; | ||
} | ||
/** | ||
* Inherit from `OAuthStrategy`. | ||
*/ | ||
util.inherits(Strategy, OAuthStrategy); | ||
/** | ||
* Implement this so that we can send the callback... This doesn't seem to be | ||
@@ -240,2 +256,63 @@ * working right for the oauth module... | ||
// retrieve a profile-related object asynchronously and yield its body | ||
Strategy.prototype._retrieve = function(oauth, url, callback) { | ||
process.nextTick(function() { | ||
request.get(url, { | ||
oauth: oauth, | ||
json: true | ||
}, function(err, res, body) { | ||
if (err) { | ||
console.error(err) | ||
return callback(new InternalOAuthError('failed to fetch user profile', err)) | ||
} | ||
if (res.statusCode > 299) { | ||
err = new InternalOAuthError('error ' + res.statusCode + ' while fetching user profile: ' + body) | ||
err.statusCode = res.statusCode | ||
console.error('failed to fetch user profile: %j', err) | ||
return callback(err) | ||
} | ||
if (!body) return callback(new InternalOAuthError('Fellowship One returned invalid reply object %s', body)) | ||
callback(null, body) | ||
}) | ||
}) | ||
} | ||
// transform an array of [ {person:...}, {communications:...}] into a profile | ||
Strategy.prototype.transform = function(err, items, done) { | ||
if (err) return done(err) | ||
if (!items[0].person) return done(new InternalOAuthError('Fellowship One returned invalid reply object %s', items[0])) | ||
if (!items[1].communications) return done(new InternalOAuthError('Fellowship One returned invalid reply object %s', items[1])) | ||
var user = items[0].person | ||
var profile = {} | ||
profile.id = Number(user['@id']) | ||
profile.uri = user['@uri'] | ||
profile.displayName = user.goesByName ? user.goesByName : user.firstName | ||
profile.fullName = profile.displayName + ' ' + user.lastName | ||
var communication = items[1].communications.communication || [] | ||
var emails = communication.reduce(function(memo, comm) { | ||
if (comm.communicationGeneralType === 'Email') | ||
memo.push({ | ||
value: comm.communicationValue, | ||
type: comm.communicationType.name, | ||
preferred: comm.preferred === "true" | ||
}) | ||
return memo | ||
}, []) | ||
var email = emails.reduce(function(memo, email) { | ||
if (email.preferred) return email | ||
else if (memo) return memo | ||
else return email | ||
}, undefined) | ||
if (email && email.value) profile.email = email.value | ||
done(null, profile) | ||
} | ||
/** | ||
@@ -266,61 +343,8 @@ * Retrieve user profile from Fellowship One. | ||
request.get(params.userURL, { | ||
oauth: oauth, | ||
json: true | ||
}, (function(err, res, body) { | ||
if (err) { | ||
console.error(err) | ||
return done(new InternalOAuthError('failed to fetch user profile', err)) | ||
} | ||
if (res.statusCode > 299) { | ||
var err = new InternalOAuthError('error ' + res.statusCode + ' while fetching user profile: ' + body) | ||
err.statusCode = res.statusCode | ||
console | ||
.error('failed to fetch user profile: %j', err) | ||
return done(err) | ||
} | ||
var user = body.person | ||
var profile = {} | ||
profile.id = Number(user['@id']) | ||
profile.uri = user['@uri'] | ||
profile.displayName = user.goesByName ? user.goesByName : user.firstName | ||
profile.fullName = profile.displayName + ' ' + user.lastName | ||
// This sucks, but we have to get the e-mail address from a separate call (!) | ||
// this._oauth.get(params.userURL + '/Communications.json', token, tokenSecret, (function(err, body, res) { | ||
request.get(params.userURL + '/Communications', { | ||
oauth: oauth, | ||
json: true | ||
}, (function(err, res, body) { | ||
if (err) { | ||
console.error(err) | ||
return done(new InternalOAuthError('failed to fetch user email address', err)) | ||
} | ||
var communication = body.communications.communication | ||
var emails = communication.reduce(function(memo, comm) { | ||
if (comm.communicationGeneralType === 'Email') | ||
memo.push({ | ||
value: comm.communicationValue, | ||
type: comm.communicationType.name, | ||
preferred: comm.preferred === "true" | ||
}) | ||
return memo | ||
}, []) | ||
profile.email = emails.reduce(function(memo, email) { | ||
if (email.preferred) return email | ||
else if (memo) return memo | ||
else return email | ||
}, undefined).value | ||
done(null, profile) | ||
}).bind(this)) | ||
// turn the person and communications record into a profile | ||
async.map([params.userURL, params.userURL + '/Communications'], this._retrieve.bind(this, oauth), (function(err, items) { | ||
this.transform(err, items, done) | ||
}).bind(this)) | ||
} | ||
/** | ||
@@ -327,0 +351,0 @@ * Expose `Strategy`. |
{ | ||
"name": "passport-fellowshipone", | ||
"version": "0.0.1", | ||
"description": "Fellowship One (F1) authentication strategy for Passport.", | ||
"keywords": [ | ||
"passport", | ||
"fellowshipone", | ||
"F1", | ||
"auth", | ||
"authentication", | ||
"identity" | ||
], | ||
"repository": { | ||
"type": "git", | ||
"url": "git://github.com/hairyhenderson/passport-fellowshipone.git" | ||
}, | ||
"bugs": { | ||
"url": "http://github.com/hairyhenderson/passport-fellowshipone/issues" | ||
}, | ||
"author": { | ||
"name": "Dave Henderson", | ||
"email": "dhenderson@gmail.com" | ||
}, | ||
"licenses": [{ | ||
"name": "passport-fellowshipone", | ||
"version": "0.0.2", | ||
"description": "Fellowship One (F1) authentication strategy for Passport.", | ||
"keywords": [ | ||
"passport", | ||
"fellowshipone", | ||
"F1", | ||
"auth", | ||
"authentication", | ||
"identity" | ||
], | ||
"repository": { | ||
"type": "git", | ||
"url": "git://github.com/hairyhenderson/passport-fellowshipone.git" | ||
}, | ||
"bugs": { | ||
"url": "http://github.com/hairyhenderson/passport-fellowshipone/issues" | ||
}, | ||
"author": { | ||
"name": "Dave Henderson", | ||
"email": "dhenderson@gmail.com" | ||
}, | ||
"licenses": [ | ||
{ | ||
"type": "MIT", | ||
"url": "http://www.opensource.org/licenses/MIT" | ||
}], | ||
"main": "./lib/passport-fellowshipone", | ||
"dependencies": { | ||
"passport-oauth": "^1.0.0", | ||
"pkginfo": "^0.3.0", | ||
"request": "^2.36.0" | ||
}, | ||
"devDependencies": { | ||
"istanbul": "^0.2.16", | ||
"mocha": "^1.20.1", | ||
"should": "^4.0.4", | ||
"coveralls": "^2.11.0" | ||
}, | ||
"scripts": { | ||
"test": "make test-coveralls" | ||
}, | ||
"engines": { | ||
"node": ">= 0.10.0" | ||
} | ||
} | ||
], | ||
"main": "./lib/passport-fellowshipone", | ||
"dependencies": { | ||
"URIjs": "^1.13.2", | ||
"async": "^0.9.0", | ||
"passport-oauth": "^1.0.0", | ||
"pkginfo": "^0.3.0", | ||
"request": "^2.36.0" | ||
}, | ||
"devDependencies": { | ||
"codeclimate-test-reporter": "0.0.3", | ||
"coveralls": "^2.11.0", | ||
"istanbul": "^0.2.16", | ||
"jshint": "^2.5.2", | ||
"mocha": "^1.20.1", | ||
"should": "^4.0.4", | ||
"sinon": "^1.10.2" | ||
}, | ||
"scripts": { | ||
"test": "make test-coveralls" | ||
}, | ||
"engines": { | ||
"node": ">= 0.10.0" | ||
} | ||
} |
@@ -1,4 +0,6 @@ | ||
[](http://travis-ci.org/hairyhenderson/passport-fellowshipone) | ||
[](https://coveralls.io/r/hairyhenderson/passport-fellowshipone) | ||
[](https://gemnasium.com/hairyhenderson/passport-fellowshipone) | ||
[](http://travis-ci.org/hairyhenderson/passport-fellowshipone) | ||
[](https://coveralls.io/r/hairyhenderson/passport-fellowshipone) | ||
[](https://codeclimate.com/github/hairyhenderson/passport-fellowshipone) | ||
[](https://gemnasium.com/hairyhenderson/passport-fellowshipone) | ||
[](https://www.npmjs.org/package/passport-fellowshipone) | ||
@@ -9,7 +11,3 @@ # Passport-FellowshipOne | ||
This module lets you authenticate using Fellowship One in your Node.js | ||
applications. By plugging into Passport, Fellowship One authentication can be | ||
easily and unobtrusively integrated into any application or framework that | ||
supports [Connect](http://www.senchalabs.org/connect/)-style middleware, | ||
including [Express](http://expressjs.com/). | ||
This module lets you authenticate using Fellowship One in your Node.js applications. By plugging into Passport, Fellowship One authentication can be easily and unobtrusively integrated into any application or framework that supports [Connect](http://www.senchalabs.org/connect/)-style middleware, including [Express](http://expressjs.com/). | ||
@@ -24,40 +22,60 @@ ## Install | ||
The Fellowship One authentication strategy authenticates users using a | ||
Fellowship One account and OAuth 1.0a tokens. The strategy requires a `verify` | ||
callback, which accepts these credentials and calls `done` providing a user, as | ||
well as `options` specifying a developer key and callback URL. | ||
The Fellowship One authentication strategy authenticates users using a Fellowship One account and OAuth 1.0a tokens. The strategy requires a `verify` callback, which accepts these credentials and calls `done` providing a user, as well as `options` specifying a developer key and callback URL. | ||
var FellowshipOneStrategy = require('passport-fellowshipone').Strategy; | ||
```js | ||
var FellowshipOneStrategy = require('passport-fellowshipone').Strategy; | ||
passport.use(new FellowshipOneStrategy({ | ||
apiURL: 'https://MyChurch.staging.fellowshiponeapi.com/v1', | ||
consumerKey: F1_DEVELOPER_KEY, | ||
consumerSecret: F1_SECRET, | ||
callbackURL: "http://127.0.0.1:3000/auth/fellowshipone/callback" | ||
}, | ||
function(token, tokenSecret, profile, done) { | ||
User.findOrCreate({ userId: profile.id }, function (err, user) { | ||
return done(err, user); | ||
}); | ||
} | ||
)); | ||
passport.use(new FellowshipOneStrategy({ | ||
apiURL: 'https://MyChurch.staging.fellowshiponeapi.com/v1', | ||
consumerKey: F1_DEVELOPER_KEY, | ||
consumerSecret: F1_SECRET, | ||
callbackURL: "http://127.0.0.1:3000/auth/fellowshipone/callback" | ||
}, | ||
function verify(token, tokenSecret, profile, done) { | ||
User.findOrCreate({ userId: profile.id }, function (err, user) { | ||
return done(err, user); | ||
}); | ||
} | ||
)); | ||
``` | ||
##### F1-specific options | ||
To make life a little easier for dealing with Fellowship One's API, you can set these options: | ||
- `churchCode` - Your Fellowship One Church Code. When set, this will be used to automatically build the `apiURL` option. _If you want to use the staging environment, you must also set `apiURL`!_ | ||
- `apiURL` - The base URL for Fellowship One API operations (i.e. `https://{churchCode}.staging.fellowshiponeapi.com/v1`). | ||
This is auto-calculated from `churchCode` when not specified, but can be provided here for customizations (i.e. pointing to staging). | ||
Supports [URI Templating](http://tools.ietf.org/html/rfc6570), using the `options` object to provide properties. | ||
##### The returned profile | ||
The `verify` callback is given a profile when a user successfully authenticates. The profile is constructed from the user's [F1 Person](http://developer.fellowshipone.com/docs/v1/People.help) record, but only contains a subset of information so that it can be easily linked to a user record in your application. | ||
The profile's properties are: | ||
- `id` - (_Number_) The authenticated user's numeric ID | ||
- `uri` - The full URI for accessing the user's Person record | ||
- `displayName` - A name to be used in user-facing views. If the user has a `goesByName` set in their F1 Person record, this will be used, otherwise this is the `firstName` from F1. | ||
- `fullName` - The user's full name (using `displayName` as the first name) | ||
- `email` - A _guess_ at the user's primary e-mail address. If they _have_ an e-mail address set as `preferred` in the F1 Person record, this will be it. Otherwise, the first e-mail address found for them is used. | ||
#### Authenticate Requests | ||
Use `passport.authenticate()`, specifying the `'fellowshipone'` strategy, to | ||
authenticate requests. | ||
Use `passport.authenticate()`, specifying the `'fellowshipone'` strategy, to authenticate requests. | ||
For example, as route middleware in an [Express](http://expressjs.com/) | ||
application: | ||
For example, as route middleware in an [Express](http://expressjs.com/) application: | ||
app.get('/auth/fellowshipone', | ||
passport.authenticate('fellowshipone')); | ||
app.get('/auth/fellowshipone/callback', | ||
passport.authenticate('fellowshipone', { failureRedirect: '/login' }), | ||
function(req, res) { | ||
// Successful authentication, redirect home. | ||
res.redirect('/'); | ||
}); | ||
```js | ||
app.get('/auth/fellowshipone', | ||
passport.authenticate('fellowshipone')); | ||
app.get('/auth/fellowshipone/callback', | ||
passport.authenticate('fellowshipone', { failureRedirect: '/login' }), | ||
function(req, res) { | ||
// Successful authentication, redirect home. | ||
res.redirect('/'); | ||
}); | ||
``` | ||
<!-- Coming soon! | ||
@@ -72,3 +90,3 @@ ## Examples | ||
$ npm install --dev | ||
$ npm test | ||
$ make test | ||
@@ -75,0 +93,0 @@ ## Credits |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
241900
390
101
5
7
+ AddedURIjs@^1.13.2
+ Addedasync@^0.9.0
+ AddedURIjs@1.16.1(transitive)
+ Addedasync@0.9.2(transitive)