UNPKG

@financialforcedev/orizuru

Version:

Streamlined communication between Heroku dynos / other worker processes

54 lines 7.46 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 a message against the [Apache Avro](https://avro.apache.org/docs/current/) schema. */ class MessageValidator { /** * Validates a message. * @param schema The [Apache Avro](https://avro.apache.org/docs/current/) schema to validate. * @param message The incoming message to validate. */ validate(schema, message) { const schemaErrors = new Array(); const valid = schema.isValid(message, { errorHook: (path, value, type) => { schemaErrors.push(`Invalid value (${value}) for path (${path.join()}) it should be of type (${type.typeName})`); } }); if (!valid) { let errors = new Array(); errors.push(`Error validating message for schema (${schema.name})`); errors = errors.concat(schemaErrors); const errorMessage = errors.join('\n'); throw new Error(errorMessage); } } } exports.MessageValidator = MessageValidator; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbmRleC92YWxpZGF0b3IvbWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRzs7QUFRSDs7R0FFRztBQUNILE1BQWEsZ0JBQWdCO0lBRTVCOzs7O09BSUc7SUFDSSxRQUFRLENBQUMsTUFBa0IsRUFBRSxPQUFZO1FBRS9DLE1BQU0sWUFBWSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFFekMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDckMsU0FBUyxFQUFFLENBQUMsSUFBUyxFQUFFLEtBQVUsRUFBRSxJQUFTLEVBQUUsRUFBRTtnQkFDL0MsWUFBWSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxlQUFlLElBQUksQ0FBQyxJQUFJLEVBQUUsMkJBQTJCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ2pILENBQUM7U0FDRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBRVgsSUFBSSxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztZQUNqQyxNQUFNLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUNwRSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUVyQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7U0FFOUI7SUFFRixDQUFDO0NBRUQ7QUE5QkQsNENBOEJDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNy0yMDE5LCBGaW5hbmNpYWxGb3JjZS5jb20sIGluY1xuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLFxuICogICBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvblxuICogICAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqIC0gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgRmluYW5jaWFsRm9yY2UuY29tLCBpbmMgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzXG4gKiAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0XG4gKiAgICAgIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIiBBTkRcbiAqICBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTXG4gKiAgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTExcbiAqICBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCxcbiAqICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAqICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUllcbiAqICBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSlcbiAqICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqL1xuXG4vKipcbiAqIEBtb2R1bGUgdmFsaWRhdG9yL21lc3NhZ2VcbiAqL1xuXG5pbXBvcnQgeyBBdnJvU2NoZW1hIH0gZnJvbSAnLi4vLi4nO1xuXG4vKipcbiAqIFZhbGlkYXRlcyBhIG1lc3NhZ2UgYWdhaW5zdCB0aGUgW0FwYWNoZSBBdnJvXShodHRwczovL2F2cm8uYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvKSBzY2hlbWEuXG4gKi9cbmV4cG9ydCBjbGFzcyBNZXNzYWdlVmFsaWRhdG9yIHtcblxuXHQvKipcblx0ICogVmFsaWRhdGVzIGEgbWVzc2FnZS5cblx0ICogQHBhcmFtIHNjaGVtYSBUaGUgW0FwYWNoZSBBdnJvXShodHRwczovL2F2cm8uYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvKSBzY2hlbWEgdG8gdmFsaWRhdGUuXG5cdCAqIEBwYXJhbSBtZXNzYWdlIFRoZSBpbmNvbWluZyBtZXNzYWdlIHRvIHZhbGlkYXRlLlxuXHQgKi9cblx0cHVibGljIHZhbGlkYXRlKHNjaGVtYTogQXZyb1NjaGVtYSwgbWVzc2FnZTogYW55KSB7XG5cblx0XHRjb25zdCBzY2hlbWFFcnJvcnMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG5cdFx0Y29uc3QgdmFsaWQgPSBzY2hlbWEuaXNWYWxpZChtZXNzYWdlLCB7XG5cdFx0XHRlcnJvckhvb2s6IChwYXRoOiBhbnksIHZhbHVlOiBhbnksIHR5cGU6IGFueSkgPT4ge1xuXHRcdFx0XHRzY2hlbWFFcnJvcnMucHVzaChgSW52YWxpZCB2YWx1ZSAoJHt2YWx1ZX0pIGZvciBwYXRoICgke3BhdGguam9pbigpfSkgaXQgc2hvdWxkIGJlIG9mIHR5cGUgKCR7dHlwZS50eXBlTmFtZX0pYCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRpZiAoIXZhbGlkKSB7XG5cblx0XHRcdGxldCBlcnJvcnMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXHRcdFx0ZXJyb3JzLnB1c2goYEVycm9yIHZhbGlkYXRpbmcgbWVzc2FnZSBmb3Igc2NoZW1hICgke3NjaGVtYS5uYW1lfSlgKTtcblx0XHRcdGVycm9ycyA9IGVycm9ycy5jb25jYXQoc2NoZW1hRXJyb3JzKTtcblxuXHRcdFx0Y29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3JzLmpvaW4oJ1xcbicpO1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG5cblx0XHR9XG5cblx0fVxuXG59XG4iXX0=