UNPKG

@financialforcedev/orizuru-auth

Version:

Salesforce authentication for Heroku Node applications.

77 lines 10.3 kB
"use strict"; /* * Copyright (c) 2017-2019, FinancialForce.com, inc * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * - Neither the name of the FinancialForce.com, inc nor the names of its contributors * may be used to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ Object.defineProperty(exports, "__esModule", { value: true }); /** * Validates the environment and throws an error if it is invalid. * * @param [env] The auth environment parameters. */ function validate(env) { if (!env) { throw new Error('Missing required object parameter.'); } if (!env.httpTimeout) { throw new Error('Missing required number parameter: httpTimeout.'); } if (typeof env.httpTimeout !== 'number') { throw new Error('Invalid parameter: httpTimeout is not a number.'); } if (env.issuerURI === '') { throw new Error('Invalid parameter: issuerURI cannot be empty.'); } if (!env.issuerURI) { throw new Error('Missing required string parameter: issuerURI.'); } if (typeof env.issuerURI !== 'string') { throw new Error('Invalid parameter: issuerURI is not a string.'); } if (!env.type) { throw new Error('Missing required string parameter: type.'); } if (typeof env.type !== 'string') { throw new Error('Invalid parameter: type is not a string.'); } if (env.authorizationEndpoint && typeof env.authorizationEndpoint !== 'string') { throw new Error('Invalid parameter: authorizationEndpoint is not a string.'); } if (env.revocationEndpoint && typeof env.revocationEndpoint !== 'string') { throw new Error('Invalid parameter: revocationEndpoint is not a string.'); } if (env.tokenEndpoint && typeof env.tokenEndpoint !== 'string') { throw new Error('Invalid parameter: tokenEndpoint is not a string.'); } return { authorizationEndpoint: env.authorizationEndpoint, httpTimeout: env.httpTimeout, issuerURI: env.issuerURI, revocationEndpoint: env.revocationEndpoint, tokenEndpoint: env.tokenEndpoint, type: env.type }; } exports.validate = validate; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvaW5kZXgvY2xpZW50L3ZhbGlkYXRvci9lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRzs7QUFRSDs7OztHQUlHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFDLEdBQWlCO0lBRXpDLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7S0FDdEQ7SUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRTtRQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7S0FDbkU7SUFFRCxJQUFJLE9BQU8sR0FBRyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUU7UUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO0tBQ25FO0lBRUQsSUFBSSxHQUFHLENBQUMsU0FBUyxLQUFLLEVBQUUsRUFBRTtRQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7S0FDakU7SUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRTtRQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7S0FDakU7SUFFRCxJQUFJLE9BQU8sR0FBRyxDQUFDLFNBQVMsS0FBSyxRQUFRLEVBQUU7UUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0tBQ2pFO0lBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7UUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7S0FDNUQ7SUFFRCxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7UUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0tBQzVEO0lBRUQsSUFBSSxHQUFHLENBQUMscUJBQXFCLElBQUksT0FBTyxHQUFHLENBQUMscUJBQXFCLEtBQUssUUFBUSxFQUFFO1FBQy9FLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztLQUM3RTtJQUVELElBQUksR0FBRyxDQUFDLGtCQUFrQixJQUFJLE9BQU8sR0FBRyxDQUFDLGtCQUFrQixLQUFLLFFBQVEsRUFBRTtRQUN6RSxNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7S0FDMUU7SUFFRCxJQUFJLEdBQUcsQ0FBQyxhQUFhLElBQUksT0FBTyxHQUFHLENBQUMsYUFBYSxLQUFLLFFBQVEsRUFBRTtRQUMvRCxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7S0FDckU7SUFFRCxPQUFPO1FBQ04scUJBQXFCLEVBQUUsR0FBRyxDQUFDLHFCQUFxQjtRQUNoRCxXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVc7UUFDNUIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO1FBQ3hCLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7UUFDMUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxhQUFhO1FBQ2hDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtLQUNkLENBQUM7QUFFSCxDQUFDO0FBdkRELDRCQXVEQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAxOSwgRmluYW5jaWFsRm9yY2UuY29tLCBpbmNcbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbixcbiAqICAgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuICpcbiAqIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLFxuICogICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb25cbiAqICAgICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIEZpbmFuY2lhbEZvcmNlLmNvbSwgaW5jIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9yc1xuICogICAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dFxuICogICAgICBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCIgQU5EXG4gKiAgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFU1xuICogIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMXG4gKiAgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsXG4gKiAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTXG4gKiAgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZXG4gKiAgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpXG4gKiAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxuLyoqXG4gKiBAbW9kdWxlIGNsaWVudC92YWxpZGF0b3IvZW52aXJvbm1lbnRcbiAqL1xuXG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uLy4uJztcblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIGVudmlyb25tZW50IGFuZCB0aHJvd3MgYW4gZXJyb3IgaWYgaXQgaXMgaW52YWxpZC5cbiAqXG4gKiBAcGFyYW0gW2Vudl0gVGhlIGF1dGggZW52aXJvbm1lbnQgcGFyYW1ldGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlKGVudj86IEVudmlyb25tZW50KTogRW52aXJvbm1lbnQge1xuXG5cdGlmICghZW52KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHJlcXVpcmVkIG9iamVjdCBwYXJhbWV0ZXIuJyk7XG5cdH1cblxuXHRpZiAoIWVudi5odHRwVGltZW91dCkge1xuXHRcdHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1aXJlZCBudW1iZXIgcGFyYW1ldGVyOiBodHRwVGltZW91dC4nKTtcblx0fVxuXG5cdGlmICh0eXBlb2YgZW52Lmh0dHBUaW1lb3V0ICE9PSAnbnVtYmVyJykge1xuXHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwYXJhbWV0ZXI6IGh0dHBUaW1lb3V0IGlzIG5vdCBhIG51bWJlci4nKTtcblx0fVxuXG5cdGlmIChlbnYuaXNzdWVyVVJJID09PSAnJykge1xuXHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwYXJhbWV0ZXI6IGlzc3VlclVSSSBjYW5ub3QgYmUgZW1wdHkuJyk7XG5cdH1cblxuXHRpZiAoIWVudi5pc3N1ZXJVUkkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgc3RyaW5nIHBhcmFtZXRlcjogaXNzdWVyVVJJLicpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiBlbnYuaXNzdWVyVVJJICE9PSAnc3RyaW5nJykge1xuXHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwYXJhbWV0ZXI6IGlzc3VlclVSSSBpcyBub3QgYSBzdHJpbmcuJyk7XG5cdH1cblxuXHRpZiAoIWVudi50eXBlKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHJlcXVpcmVkIHN0cmluZyBwYXJhbWV0ZXI6IHR5cGUuJyk7XG5cdH1cblxuXHRpZiAodHlwZW9mIGVudi50eXBlICE9PSAnc3RyaW5nJykge1xuXHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwYXJhbWV0ZXI6IHR5cGUgaXMgbm90IGEgc3RyaW5nLicpO1xuXHR9XG5cblx0aWYgKGVudi5hdXRob3JpemF0aW9uRW5kcG9pbnQgJiYgdHlwZW9mIGVudi5hdXRob3JpemF0aW9uRW5kcG9pbnQgIT09ICdzdHJpbmcnKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHBhcmFtZXRlcjogYXV0aG9yaXphdGlvbkVuZHBvaW50IGlzIG5vdCBhIHN0cmluZy4nKTtcblx0fVxuXG5cdGlmIChlbnYucmV2b2NhdGlvbkVuZHBvaW50ICYmIHR5cGVvZiBlbnYucmV2b2NhdGlvbkVuZHBvaW50ICE9PSAnc3RyaW5nJykge1xuXHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwYXJhbWV0ZXI6IHJldm9jYXRpb25FbmRwb2ludCBpcyBub3QgYSBzdHJpbmcuJyk7XG5cdH1cblxuXHRpZiAoZW52LnRva2VuRW5kcG9pbnQgJiYgdHlwZW9mIGVudi50b2tlbkVuZHBvaW50ICE9PSAnc3RyaW5nJykge1xuXHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwYXJhbWV0ZXI6IHRva2VuRW5kcG9pbnQgaXMgbm90IGEgc3RyaW5nLicpO1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHRhdXRob3JpemF0aW9uRW5kcG9pbnQ6IGVudi5hdXRob3JpemF0aW9uRW5kcG9pbnQsXG5cdFx0aHR0cFRpbWVvdXQ6IGVudi5odHRwVGltZW91dCxcblx0XHRpc3N1ZXJVUkk6IGVudi5pc3N1ZXJVUkksXG5cdFx0cmV2b2NhdGlvbkVuZHBvaW50OiBlbnYucmV2b2NhdGlvbkVuZHBvaW50LFxuXHRcdHRva2VuRW5kcG9pbnQ6IGVudi50b2tlbkVuZHBvaW50LFxuXHRcdHR5cGU6IGVudi50eXBlXG5cdH07XG5cbn1cbiJdfQ==