UNPKG

@financialforcedev/orizuru

Version:

Streamlined communication between Heroku dynos / other worker processes

76 lines 10.4 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 }); /** * @module validator/shared/common */ const lodash_1 = require("lodash"); /** * Validates common configuration shared by the Handler, Publisher and Server. */ class CommonValidator { constructor(options) { if (!options) { throw new Error('Missing required object parameter.'); } if (!lodash_1.isPlainObject(options)) { throw new Error(`Invalid parameter: ${options} is not an object.`); } if (!options.transport) { throw new Error('Missing required object parameter: transport.'); } if (!lodash_1.isObjectLike(options.transport)) { throw new Error('Invalid parameter: transport is not an object.'); } if (!options.transport.publish) { throw new Error('Missing required function parameter: transport[publish].'); } if (!lodash_1.isFunction(options.transport.publish)) { throw new Error('Invalid parameter: transport[publish] is not a function.'); } if (!options.transport.subscribe) { throw new Error('Missing required function parameter: transport[subscribe].'); } if (!lodash_1.isFunction(options.transport.subscribe)) { throw new Error('Invalid parameter: transport[subscribe] is not a function.'); } if (!options.transport.close) { throw new Error('Missing required function parameter: transport[close].'); } if (!lodash_1.isFunction(options.transport.close)) { throw new Error('Invalid parameter: transport[close] is not a function.'); } if (!options.transport.connect) { throw new Error('Missing required function parameter: transport[connect].'); } if (!lodash_1.isFunction(options.transport.connect)) { throw new Error('Invalid parameter: transport[connect] is not a function.'); } } } exports.CommonValidator = CommonValidator; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2luZGV4L3ZhbGlkYXRvci9zaGFyZWQvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHOztBQUVIOztHQUVHO0FBRUgsbUNBQWlFO0FBR2pFOztHQUVHO0FBQ0gsTUFBYSxlQUFlO0lBRTNCLFlBQVksT0FBZ0U7UUFFM0UsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztTQUN0RDtRQUVELElBQUksQ0FBQyxzQkFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLE9BQU8sb0JBQW9CLENBQUMsQ0FBQztTQUNuRTtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztTQUNqRTtRQUVELElBQUksQ0FBQyxxQkFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7U0FDbEU7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUU7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1NBQzVFO1FBRUQsSUFBSSxDQUFDLG1CQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7U0FDNUU7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUU7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO1NBQzlFO1FBRUQsSUFBSSxDQUFDLG1CQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM3QyxNQUFNLElBQUksS0FBSyxDQUFDLDREQUE0RCxDQUFDLENBQUM7U0FDOUU7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1NBQzFFO1FBRUQsSUFBSSxDQUFDLG1CQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QyxNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7U0FDMUU7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUU7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1NBQzVFO1FBRUQsSUFBSSxDQUFDLG1CQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7U0FDNUU7SUFFRixDQUFDO0NBRUQ7QUF0REQsMENBc0RDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNy0yMDE5LCBGaW5hbmNpYWxGb3JjZS5jb20sIGluY1xuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLFxuICogICBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvblxuICogICAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqIC0gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgRmluYW5jaWFsRm9yY2UuY29tLCBpbmMgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzXG4gKiAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0XG4gKiAgICAgIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIiBBTkRcbiAqICBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTXG4gKiAgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTExcbiAqICBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCxcbiAqICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAqICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUllcbiAqICBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSlcbiAqICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqL1xuXG4vKipcbiAqIEBtb2R1bGUgdmFsaWRhdG9yL3NoYXJlZC9jb21tb25cbiAqL1xuXG5pbXBvcnQgeyBpc0Z1bmN0aW9uLCBpc09iamVjdExpa2UsIGlzUGxhaW5PYmplY3QgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uJztcblxuLyoqXG4gKiBWYWxpZGF0ZXMgY29tbW9uIGNvbmZpZ3VyYXRpb24gc2hhcmVkIGJ5IHRoZSBIYW5kbGVyLCBQdWJsaXNoZXIgYW5kIFNlcnZlci5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbW1vblZhbGlkYXRvciB7XG5cblx0Y29uc3RydWN0b3Iob3B0aW9uczogT3B0aW9ucy5JU2VydmVyIHwgT3B0aW9ucy5JSGFuZGxlciB8IE9wdGlvbnMuSVB1Ymxpc2hlcikge1xuXG5cdFx0aWYgKCFvcHRpb25zKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgb2JqZWN0IHBhcmFtZXRlci4nKTtcblx0XHR9XG5cblx0XHRpZiAoIWlzUGxhaW5PYmplY3Qob3B0aW9ucykpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwYXJhbWV0ZXI6ICR7b3B0aW9uc30gaXMgbm90IGFuIG9iamVjdC5gKTtcblx0XHR9XG5cblx0XHRpZiAoIW9wdGlvbnMudHJhbnNwb3J0KSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgb2JqZWN0IHBhcmFtZXRlcjogdHJhbnNwb3J0LicpO1xuXHRcdH1cblxuXHRcdGlmICghaXNPYmplY3RMaWtlKG9wdGlvbnMudHJhbnNwb3J0KSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHBhcmFtZXRlcjogdHJhbnNwb3J0IGlzIG5vdCBhbiBvYmplY3QuJyk7XG5cdFx0fVxuXG5cdFx0aWYgKCFvcHRpb25zLnRyYW5zcG9ydC5wdWJsaXNoKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgZnVuY3Rpb24gcGFyYW1ldGVyOiB0cmFuc3BvcnRbcHVibGlzaF0uJyk7XG5cdFx0fVxuXG5cdFx0aWYgKCFpc0Z1bmN0aW9uKG9wdGlvbnMudHJhbnNwb3J0LnB1Ymxpc2gpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcGFyYW1ldGVyOiB0cmFuc3BvcnRbcHVibGlzaF0gaXMgbm90IGEgZnVuY3Rpb24uJyk7XG5cdFx0fVxuXG5cdFx0aWYgKCFvcHRpb25zLnRyYW5zcG9ydC5zdWJzY3JpYmUpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1aXJlZCBmdW5jdGlvbiBwYXJhbWV0ZXI6IHRyYW5zcG9ydFtzdWJzY3JpYmVdLicpO1xuXHRcdH1cblxuXHRcdGlmICghaXNGdW5jdGlvbihvcHRpb25zLnRyYW5zcG9ydC5zdWJzY3JpYmUpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcGFyYW1ldGVyOiB0cmFuc3BvcnRbc3Vic2NyaWJlXSBpcyBub3QgYSBmdW5jdGlvbi4nKTtcblx0XHR9XG5cblx0XHRpZiAoIW9wdGlvbnMudHJhbnNwb3J0LmNsb3NlKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgZnVuY3Rpb24gcGFyYW1ldGVyOiB0cmFuc3BvcnRbY2xvc2VdLicpO1xuXHRcdH1cblxuXHRcdGlmICghaXNGdW5jdGlvbihvcHRpb25zLnRyYW5zcG9ydC5jbG9zZSkpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwYXJhbWV0ZXI6IHRyYW5zcG9ydFtjbG9zZV0gaXMgbm90IGEgZnVuY3Rpb24uJyk7XG5cdFx0fVxuXG5cdFx0aWYgKCFvcHRpb25zLnRyYW5zcG9ydC5jb25uZWN0KSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgZnVuY3Rpb24gcGFyYW1ldGVyOiB0cmFuc3BvcnRbY29ubmVjdF0uJyk7XG5cdFx0fVxuXG5cdFx0aWYgKCFpc0Z1bmN0aW9uKG9wdGlvbnMudHJhbnNwb3J0LmNvbm5lY3QpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcGFyYW1ldGVyOiB0cmFuc3BvcnRbY29ubmVjdF0gaXMgbm90IGEgZnVuY3Rpb24uJyk7XG5cdFx0fVxuXG5cdH1cblxufVxuIl19