@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
54 lines (53 loc) • 1.6 kB
JavaScript
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;
;