@financialforcedev/orizuru
Version:
Streamlined communication between Heroku dynos / other worker processes
51 lines • 7.11 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 });
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==