@plugjs/plug
Version:
PlugJS Build System ===================
59 lines (58 loc) • 1.68 kB
JavaScript
// asserts.ts
import { githubAnnotation } from "./logging/github.mjs";
var buildFailure = Symbol.for("plugjs:plug:types:BuildFailure");
var BuildFailure = class _BuildFailure extends Error {
errors;
/** Construct a {@link BuildFailure} */
constructor(message, errors = []) {
super(message || "");
if (message) {
githubAnnotation({ type: "error", title: "Build Failure" }, message);
}
Error.captureStackTrace(this, _BuildFailure);
if (errors.length) this.errors = Object.freeze([...errors]);
}
static fail() {
return new _BuildFailure(void 0, []);
}
static withMessage(message) {
return new _BuildFailure(message, []);
}
static withErrors(errors) {
return new _BuildFailure(void 0, errors);
}
static [Symbol.hasInstance](instance) {
return instance && instance[buildFailure] === buildFailure;
}
static {
this.prototype[buildFailure] = buildFailure;
this.prototype.name = this.name;
}
};
async function assertPromises(promises) {
const settlements = await Promise.allSettled(promises);
const results = [];
const failures = /* @__PURE__ */ new Set();
settlements.forEach((settlement) => {
if (settlement.status === "fulfilled") {
results.push(settlement.value);
} else {
failures.add(settlement.reason);
}
});
if (failures.size) throw BuildFailure.withErrors([...failures]);
return results;
}
function assert(assertion, message) {
if (!assertion) throw BuildFailure.withMessage(message);
}
function fail(message) {
throw BuildFailure.withMessage(message);
}
export {
BuildFailure,
assert,
assertPromises,
fail
};
//# sourceMappingURL=asserts.mjs.map