{"ast":null,"code":"var crypto = require('crypto');\n\nfunction sha(key, body, algorithm) {\n return crypto.createHmac(algorithm, key).update(body).digest('base64');\n}\n\nfunction rsa(key, body) {\n return crypto.createSign('RSA-SHA1').update(body).sign(key, 'base64');\n}\n\nfunction rfc3986(str) {\n return encodeURIComponent(str).replace(/!/g, '%21').replace(/\\*/g, '%2A').replace(/\\(/g, '%28').replace(/\\)/g, '%29').replace(/'/g, '%27');\n} // Maps object to bi-dimensional array\n// Converts { foo: 'A', bar: [ 'b', 'B' ]} to\n// [ ['foo', 'A'], ['bar', 'b'], ['bar', 'B'] ]\n\n\nfunction map(obj) {\n var key,\n val,\n arr = [];\n\n for (key in obj) {\n val = obj[key];\n if (Array.isArray(val)) for (var i = 0; i < val.length; i++) arr.push([key, val[i]]);else if (typeof val === 'object') for (var prop in val) arr.push([key + '[' + prop + ']', val[prop]]);else arr.push([key, val]);\n }\n\n return arr;\n} // Compare function for sort\n\n\nfunction compare(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\nfunction generateBase(httpMethod, base_uri, params) {\n // adapted from https://dev.twitter.com/docs/auth/oauth and \n // https://dev.twitter.com/docs/auth/creating-signature\n // Parameter normalization\n // http://tools.ietf.org/html/rfc5849#section-3.4.1.3.2\n var normalized = map(params) // 1. First, the name and value of each parameter are encoded\n .map(function (p) {\n return [rfc3986(p[0]), rfc3986(p[1] || '')];\n }) // 2. The parameters are sorted by name, using ascending byte value\n // ordering. If two or more parameters share the same name, they\n // are sorted by their value.\n .sort(function (a, b) {\n return compare(a[0], b[0]) || compare(a[1], b[1]);\n }) // 3. The name of each parameter is concatenated to its corresponding\n // value using an \"=\" character (ASCII code 61) as a separator, even\n // if the value is empty.\n .map(function (p) {\n return p.join('=');\n }) // 4. The sorted name/value pairs are concatenated together into a\n // single string by using an \"&\" character (ASCII code 38) as\n // separator.\n .join('&');\n var base = [rfc3986(httpMethod ? httpMethod.toUpperCase() : 'GET'), rfc3986(base_uri), rfc3986(normalized)].join('&');\n return base;\n}\n\nfunction hmacsign(httpMethod, base_uri, params, consumer_secret, token_secret) {\n var base = generateBase(httpMethod, base_uri, params);\n var key = [consumer_secret || '', token_secret || ''].map(rfc3986).join('&');\n return sha(key, base, 'sha1');\n}\n\nfunction hmacsign256(httpMethod, base_uri, params, consumer_secret, token_secret) {\n var base = generateBase(httpMethod, base_uri, params);\n var key = [consumer_secret || '', token_secret || ''].map(rfc3986).join('&');\n return sha(key, base, 'sha256');\n}\n\nfunction rsasign(httpMethod, base_uri, params, private_key, token_secret) {\n var base = generateBase(httpMethod, base_uri, params);\n var key = private_key || '';\n return rsa(key, base);\n}\n\nfunction plaintext(consumer_secret, token_secret) {\n var key = [consumer_secret || '', token_secret || ''].map(rfc3986).join('&');\n return key;\n}\n\nfunction sign(signMethod, httpMethod, base_uri, params, consumer_secret, token_secret) {\n var method;\n var skipArgs = 1;\n\n switch (signMethod) {\n case 'RSA-SHA1':\n method = rsasign;\n break;\n\n case 'HMAC-SHA1':\n method = hmacsign;\n break;\n\n case 'HMAC-SHA256':\n method = hmacsign256;\n break;\n\n case 'PLAINTEXT':\n method = plaintext;\n skipArgs = 4;\n break;\n\n default:\n throw new Error('Signature method not supported: ' + signMethod);\n }\n\n return method.apply(null, [].slice.call(arguments, skipArgs));\n}\n\nexports.hmacsign = hmacsign;\nexports.hmacsign256 = hmacsign256;\nexports.rsasign = rsasign;\nexports.plaintext = plaintext;\nexports.sign = sign;\nexports.rfc3986 = rfc3986;\nexports.generateBase = generateBase;","map":{"version":3,"sources":["/Users/tylerkoenig/Code/personal/react-scss2/node_modules/oauth-sign/index.js"],"names":["crypto","require","sha","key","body","algorithm","createHmac","update","digest","rsa","createSign","sign","rfc3986","str","encodeURIComponent","replace","map","obj","val","arr","Array","isArray","i","length","push","prop","compare","a","b","generateBase","httpMethod","base_uri","params","normalized","p","sort","join","base","toUpperCase","hmacsign","consumer_secret","token_secret","hmacsign256","rsasign","private_key","plaintext","signMethod","method","skipArgs","Error","apply","slice","call","arguments","exports"],"mappings":"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","sourcesContent":["var crypto = require('crypto')\n\nfunction sha (key, body, algorithm) {\n return crypto.createHmac(algorithm, key).update(body).digest('base64')\n}\n\nfunction rsa (key, body) {\n return crypto.createSign('RSA-SHA1').update(body).sign(key, 'base64')\n}\n\nfunction rfc3986 (str) {\n return encodeURIComponent(str)\n .replace(/!/g,'%21')\n .replace(/\\*/g,'%2A')\n .replace(/\\(/g,'%28')\n .replace(/\\)/g,'%29')\n .replace(/'/g,'%27')\n}\n\n// Maps object to bi-dimensional array\n// Converts { foo: 'A', bar: [ 'b', 'B' ]} to\n// [ ['foo', 'A'], ['bar', 'b'], ['bar', 'B'] ]\nfunction map (obj) {\n var key, val, arr = []\n for (key in obj) {\n val = obj[key]\n if (Array.isArray(val))\n for (var i = 0; i < val.length; i++)\n arr.push([key, val[i]])\n else if (typeof val === 'object')\n for (var prop in val)\n arr.push([key + '[' + prop + ']', val[prop]])\n else\n arr.push([key, val])\n }\n return arr\n}\n\n// Compare function for sort\nfunction compare (a, b) {\n return a > b ? 1 : a < b ? -1 : 0\n}\n\nfunction generateBase (httpMethod, base_uri, params) {\n // adapted from https://dev.twitter.com/docs/auth/oauth and \n // https://dev.twitter.com/docs/auth/creating-signature\n\n // Parameter normalization\n // http://tools.ietf.org/html/rfc5849#section-3.4.1.3.2\n var normalized = map(params)\n // 1. First, the name and value of each parameter are encoded\n .map(function (p) {\n return [ rfc3986(p[0]), rfc3986(p[1] || '') ]\n })\n // 2. The parameters are sorted by name, using ascending byte value\n // ordering. If two or more parameters share the same name, they\n // are sorted by their value.\n .sort(function (a, b) {\n return compare(a[0], b[0]) || compare(a[1], b[1])\n })\n // 3. The name of each parameter is concatenated to its corresponding\n // value using an \"=\" character (ASCII code 61) as a separator, even\n // if the value is empty.\n .map(function (p) { return p.join('=') })\n // 4. The sorted name/value pairs are concatenated together into a\n // single string by using an \"&\" character (ASCII code 38) as\n // separator.\n .join('&')\n\n var base = [\n rfc3986(httpMethod ? httpMethod.toUpperCase() : 'GET'),\n rfc3986(base_uri),\n rfc3986(normalized)\n ].join('&')\n\n return base\n}\n\nfunction hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret) {\n var base = generateBase(httpMethod, base_uri, params)\n var key = [\n consumer_secret || '',\n token_secret || ''\n ].map(rfc3986).join('&')\n\n return sha(key, base, 'sha1')\n}\n\nfunction hmacsign256 (httpMethod, base_uri, params, consumer_secret, token_secret) {\n var base = generateBase(httpMethod, base_uri, params)\n var key = [\n consumer_secret || '',\n token_secret || ''\n ].map(rfc3986).join('&')\n\n return sha(key, base, 'sha256')\n}\n\nfunction rsasign (httpMethod, base_uri, params, private_key, token_secret) {\n var base = generateBase(httpMethod, base_uri, params)\n var key = private_key || ''\n\n return rsa(key, base)\n}\n\nfunction plaintext (consumer_secret, token_secret) {\n var key = [\n consumer_secret || '',\n token_secret || ''\n ].map(rfc3986).join('&')\n\n return key\n}\n\nfunction sign (signMethod, httpMethod, base_uri, params, consumer_secret, token_secret) {\n var method\n var skipArgs = 1\n\n switch (signMethod) {\n case 'RSA-SHA1':\n method = rsasign\n break\n case 'HMAC-SHA1':\n method = hmacsign\n break\n case 'HMAC-SHA256':\n method = hmacsign256\n break\n case 'PLAINTEXT':\n method = plaintext\n skipArgs = 4\n break\n default:\n throw new Error('Signature method not supported: ' + signMethod)\n }\n\n return method.apply(null, [].slice.call(arguments, skipArgs))\n}\n\nexports.hmacsign = hmacsign\nexports.hmacsign256 = hmacsign256\nexports.rsasign = rsasign\nexports.plaintext = plaintext\nexports.sign = sign\nexports.rfc3986 = rfc3986\nexports.generateBase = generateBase"]},"metadata":{},"sourceType":"script"}