New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

passport-fellowshipone

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

passport-fellowshipone - npm Package Compare versions

Comparing version 0.0.1 to 0.0.2

.jshintrc

2

coverage/coverage.json

@@ -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 @@

[![Build Status](https://secure.travis-ci.org/hairyhenderson/passport-fellowshipone.svg)](http://travis-ci.org/hairyhenderson/passport-fellowshipone)
[![Coverage Status](https://img.shields.io/coveralls/hairyhenderson/passport-fellowshipone.svg)](https://coveralls.io/r/hairyhenderson/passport-fellowshipone)
[![Dependency Status](https://gemnasium.com/hairyhenderson/passport-fellowshipone.svg)](https://gemnasium.com/hairyhenderson/passport-fellowshipone)
[![Build Status](http://img.shields.io/travis/hairyhenderson/passport-fellowshipone.svg)](http://travis-ci.org/hairyhenderson/passport-fellowshipone)
[![Coverage Status](http://img.shields.io/coveralls/hairyhenderson/passport-fellowshipone.svg)](https://coveralls.io/r/hairyhenderson/passport-fellowshipone)
[![Code Climate](http://img.shields.io/codeclimate/github/hairyhenderson/passport-fellowshipone.svg)](https://codeclimate.com/github/hairyhenderson/passport-fellowshipone)
[![Dependency Status](http://img.shields.io/gemnasium/hairyhenderson/passport-fellowshipone.svg)](https://gemnasium.com/hairyhenderson/passport-fellowshipone)
[![Current Version](http://img.shields.io/npm/v/passport-fellowshipone.svg)](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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc