UNPKG

@splitsoftware/splitio-commons

Version:
54 lines (53 loc) 1.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.wrapperAdapter = exports.METHODS_TO_PROMISE_WRAP = void 0; var constants_1 = require("./constants"); exports.METHODS_TO_PROMISE_WRAP = [ 'get', 'set', 'getAndSet', 'del', 'getKeysByPrefix', 'incr', 'decr', 'getMany', 'pushItems', 'popItems', 'getItemsCount', 'itemContains', 'addItems', 'removeItems', 'getItems', 'connect', 'disconnect' ]; /** * Adapter of the Pluggable Storage Wrapper. * Used to handle exceptions as rejected promises, in order to simplify the error handling on storages. * * @param log - logger instance * @param wrapper - storage wrapper to adapt * @returns an adapted version of the given storage wrapper */ function wrapperAdapter(log, wrapper) { var wrapperAdapter = {}; exports.METHODS_TO_PROMISE_WRAP.forEach(function (method) { // Logs error and wraps it into a rejected promise. function handleError(e) { log.error(constants_1.LOG_PREFIX + " Wrapper '" + method + "' operation threw an error. Message: " + e); return Promise.reject(e); } wrapperAdapter[method] = function () { try { // @ts-ignore return wrapper[method].apply(wrapper, arguments).then(function (value) { return value; }).catch(handleError); } catch (e) { return handleError(e); } }; }); // @ts-ignore return wrapperAdapter; } exports.wrapperAdapter = wrapperAdapter;