UNPKG

@financialforcedev/orizuru

Version:

Streamlined communication between Heroku dynos / other worker processes

51 lines 7.11 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 }); const lodash_1 = require("lodash"); const transport_1 = require("../transport/transport"); /** * Handles an incoming message with the given handler. * * @param handler The Orizuru Handler. * @param options The handler function options. */ function messageHandler(handler, options) { const eventName = lodash_1.get(options.subscribeOptions, 'eventName') || lodash_1.get(options.schema, 'name'); const transport = new transport_1.Transport(); return async (content) => { handler.info(`Handler received ${eventName} event.`); try { const decodedContent = transport.decode(options.schema, content); return await options.handler(decodedContent); } catch (err) { handler.error(err); } }; } exports.messageHandler = messageHandler; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZUhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW5kZXgvaGFuZGxlci9tZXNzYWdlSGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRzs7QUFPSCxtQ0FBNkI7QUFHN0Isc0RBQW1EO0FBRW5EOzs7OztHQUtHO0FBQ0gsU0FBZ0IsY0FBYyxDQUF1RCxPQUFnQixFQUFFLE9BQXVDO0lBRTdJLE1BQU0sU0FBUyxHQUFHLFlBQUcsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLElBQUksWUFBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxxQkFBUyxFQUFFLENBQUM7SUFFbEMsT0FBTyxLQUFLLEVBQUUsT0FBZSxFQUFFLEVBQUU7UUFFaEMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsU0FBUyxTQUFTLENBQUMsQ0FBQztRQUVyRCxJQUFJO1lBQ0gsTUFBTSxjQUFjLEdBQTBCLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNoRyxPQUFPLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUM3QztRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNuQjtJQUVGLENBQUMsQ0FBQztBQUVILENBQUM7QUFsQkQsd0NBa0JDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNy0yMDE5LCBGaW5hbmNpYWxGb3JjZS5jb20sIGluY1xuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLFxuICogICBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvblxuICogICAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqIC0gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgRmluYW5jaWFsRm9yY2UuY29tLCBpbmMgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzXG4gKiAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0XG4gKiAgICAgIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIiBBTkRcbiAqICBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTXG4gKiAgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTExcbiAqICBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCxcbiAqICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAqICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUllcbiAqICBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSlcbiAqICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqL1xuXG4vKipcbiAqIEBtb2R1bGUgaGFuZGxlci9tZXNzYWdlSGFuZGxlclxuICovXG5cbmltcG9ydCB7IFR5cGUgfSBmcm9tICdhdnNjJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IEhhbmRsZXIsIElPcml6dXJ1TWVzc2FnZSwgT3B0aW9ucyB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IFRyYW5zcG9ydCB9IGZyb20gJy4uL3RyYW5zcG9ydC90cmFuc3BvcnQnO1xuXG4vKipcbiAqIEhhbmRsZXMgYW4gaW5jb21pbmcgbWVzc2FnZSB3aXRoIHRoZSBnaXZlbiBoYW5kbGVyLlxuICpcbiAqIEBwYXJhbSBoYW5kbGVyIFRoZSBPcml6dXJ1IEhhbmRsZXIuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgaGFuZGxlciBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVzc2FnZUhhbmRsZXI8QyBleHRlbmRzIE9yaXp1cnUuQ29udGV4dCwgTSBleHRlbmRzIE9yaXp1cnUuTWVzc2FnZT4oaGFuZGxlcjogSGFuZGxlciwgb3B0aW9uczogT3B0aW9ucy5JSGFuZGxlckZ1bmN0aW9uPEMsIE0+KSB7XG5cblx0Y29uc3QgZXZlbnROYW1lID0gZ2V0KG9wdGlvbnMuc3Vic2NyaWJlT3B0aW9ucywgJ2V2ZW50TmFtZScpIHx8IGdldChvcHRpb25zLnNjaGVtYSwgJ25hbWUnKTtcblx0Y29uc3QgdHJhbnNwb3J0ID0gbmV3IFRyYW5zcG9ydCgpO1xuXG5cdHJldHVybiBhc3luYyAoY29udGVudDogQnVmZmVyKSA9PiB7XG5cblx0XHRoYW5kbGVyLmluZm8oYEhhbmRsZXIgcmVjZWl2ZWQgJHtldmVudE5hbWV9IGV2ZW50LmApO1xuXG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGRlY29kZWRDb250ZW50OiBJT3JpenVydU1lc3NhZ2U8QywgTT4gPSB0cmFuc3BvcnQuZGVjb2RlKG9wdGlvbnMuc2NoZW1hIGFzIFR5cGUsIGNvbnRlbnQpO1xuXHRcdFx0cmV0dXJuIGF3YWl0IG9wdGlvbnMuaGFuZGxlcihkZWNvZGVkQ29udGVudCk7XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRoYW5kbGVyLmVycm9yKGVycik7XG5cdFx0fVxuXG5cdH07XG5cbn1cbiJdfQ==