@financialforcedev/orizuru
Version:
Streamlined communication between Heroku dynos / other worker processes
60 lines • 7.35 kB
JavaScript
;
/*
* 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/handlerFunction
*/
const lodash_1 = require("lodash");
const schema_1 = require("./shared/schema");
/**
* Validates {@link Handler} function options.
*/
class HandlerFunctionValidator {
/**
* Validate the handler options.
* @param options The handler options to validate.
*/
validate(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.handler) {
throw new Error('Missing required function parameter: handler.');
}
if (!lodash_1.isFunction(options.handler)) {
throw new Error('Invalid parameter: handler is not a function.');
}
// Validate the schema
options.schema = new schema_1.SchemaValidator().validate(options.schema);
return options;
}
}
exports.HandlerFunctionValidator = HandlerFunctionValidator;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlckZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2luZGV4L3ZhbGlkYXRvci9oYW5kbGVyRnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7O0FBRUg7O0dBRUc7QUFFSCxtQ0FBbUQ7QUFDbkQsNENBQWtEO0FBRWxEOztHQUVHO0FBQ0gsTUFBYSx3QkFBd0I7SUFFcEM7OztPQUdHO0lBQ0ksUUFBUSxDQUFDLE9BQVk7UUFFM0IsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztTQUN0RDtRQUVELElBQUksQ0FBQyxzQkFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLE9BQU8sb0JBQW9CLENBQUMsQ0FBQztTQUNuRTtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztTQUNqRTtRQUVELElBQUksQ0FBQyxtQkFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7U0FDakU7UUFFRCxzQkFBc0I7UUFDdEIsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLHdCQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWhFLE9BQU8sT0FBTyxDQUFDO0lBRWhCLENBQUM7Q0FFRDtBQS9CRCw0REErQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE3LTIwMTksIEZpbmFuY2lhbEZvcmNlLmNvbSwgaW5jXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sXG4gKiAgIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLFxuICogICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uXG4gKiAgICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBGaW5hbmNpYWxGb3JjZS5jb20sIGluYyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnNcbiAqICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXRcbiAqICAgICAgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiIEFORFxuICogIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVNcbiAqICBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTFxuICogIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLFxuICogIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EU1xuICogIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWVxuICogIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKVxuICogIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbi8qKlxuICogQG1vZHVsZSB2YWxpZGF0b3IvaGFuZGxlckZ1bmN0aW9uXG4gKi9cblxuaW1wb3J0IHsgaXNGdW5jdGlvbiwgaXNQbGFpbk9iamVjdCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTY2hlbWFWYWxpZGF0b3IgfSBmcm9tICcuL3NoYXJlZC9zY2hlbWEnO1xuXG4vKipcbiAqIFZhbGlkYXRlcyB7QGxpbmsgSGFuZGxlcn0gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEhhbmRsZXJGdW5jdGlvblZhbGlkYXRvciB7XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlIHRoZSBoYW5kbGVyIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSBvcHRpb25zIFRoZSBoYW5kbGVyIG9wdGlvbnMgdG8gdmFsaWRhdGUuXG5cdCAqL1xuXHRwdWJsaWMgdmFsaWRhdGUob3B0aW9uczogYW55KSB7XG5cblx0XHRpZiAoIW9wdGlvbnMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1aXJlZCBvYmplY3QgcGFyYW1ldGVyLicpO1xuXHRcdH1cblxuXHRcdGlmICghaXNQbGFpbk9iamVjdChvcHRpb25zKSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBhcmFtZXRlcjogJHtvcHRpb25zfSBpcyBub3QgYW4gb2JqZWN0LmApO1xuXHRcdH1cblxuXHRcdGlmICghb3B0aW9ucy5oYW5kbGVyKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgZnVuY3Rpb24gcGFyYW1ldGVyOiBoYW5kbGVyLicpO1xuXHRcdH1cblxuXHRcdGlmICghaXNGdW5jdGlvbihvcHRpb25zLmhhbmRsZXIpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcGFyYW1ldGVyOiBoYW5kbGVyIGlzIG5vdCBhIGZ1bmN0aW9uLicpO1xuXHRcdH1cblxuXHRcdC8vIFZhbGlkYXRlIHRoZSBzY2hlbWFcblx0XHRvcHRpb25zLnNjaGVtYSA9IG5ldyBTY2hlbWFWYWxpZGF0b3IoKS52YWxpZGF0ZShvcHRpb25zLnNjaGVtYSk7XG5cblx0XHRyZXR1cm4gb3B0aW9ucztcblxuXHR9XG5cbn1cbiJdfQ==