UNPKG

@cap-js-community/mtx-tool

Version:

Multitenancy and Extensibility Tool is a cli to reduce operational overhead for multitenant Cloud Foundry applications

44 lines (37 loc) 1.06 kB
"use strict"; const { format } = require("util"); class ApplicationError extends Error { constructor(message, ...messageArgs) { super(message ? format(message, ...messageArgs) : ""); } } const assert = (condition, message, ...messageArgs) => { if (!condition) { throw new ApplicationError(message, ...messageArgs); } }; const assertAll = (message, ...messageArgs) => async (promises) => { const results = await Promise.allSettled(promises); assert( results.every(({ status }) => status === "fulfilled"), [format(message, ...messageArgs)] .concat( Array.from(results.entries()) .filter(([, { status }]) => status === "rejected") .map(([index, { reason }]) => `error in subprocess ${index + 1}: ${reason.message}`) ) .join("\n") ); return results.map(({ value }) => value); }; const fail = (message, ...messageArgs) => { throw new ApplicationError(message, ...messageArgs); }; module.exports = { assert, assertAll, fail, ApplicationError, };