@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
JavaScript
;
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,
};