@usefui/svgjsx
Version:
Open Source Command Line Interfaces to generate JSX Icon Components from SVGs.
47 lines • 1.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.all = exports.tap = exports.tryCatch = exports.chain = exports.map = exports.isFailure = exports.isSuccess = exports.failure = exports.success = void 0;
const success = (value) => ({
kind: "success",
value,
});
exports.success = success;
const failure = (error) => ({
kind: "failure",
error,
});
exports.failure = failure;
const isSuccess = (result) => result.kind === "success";
exports.isSuccess = isSuccess;
const isFailure = (result) => result.kind === "failure";
exports.isFailure = isFailure;
const map = (fn) => (result) => (0, exports.isSuccess)(result) ? (0, exports.success)(fn(result.value)) : result;
exports.map = map;
const chain = (fn) => (result) => (0, exports.isSuccess)(result) ? fn(result.value) : result;
exports.chain = chain;
const tryCatch = (fn) => {
try {
return (0, exports.success)(fn());
}
catch (error) {
return (0, exports.failure)(error instanceof Error ? error : new Error(String(error)));
}
};
exports.tryCatch = tryCatch;
const tap = (fn) => (result) => {
if ((0, exports.isSuccess)(result))
fn(result.value);
return result;
};
exports.tap = tap;
const all = (results) => {
const values = [];
for (const result of results) {
if ((0, exports.isFailure)(result))
return result;
values.push(result.value);
}
return (0, exports.success)(values);
};
exports.all = all;
//# sourceMappingURL=result.js.map