18 lines
366 B
TypeScript
18 lines
366 B
TypeScript
import freeze from "./freeze.js";
|
|
import { purry } from "remeda";
|
|
|
|
const wrap =
|
|
(fn) =>
|
|
(...args) => {
|
|
const diff = fn.length - args.length;
|
|
if (diff === 0) {
|
|
return freeze(fn(...args));
|
|
}
|
|
if (diff === 1) {
|
|
return (data) => freeze(fn(data, ...args));
|
|
}
|
|
throw new Error("Wrong number of arguments");
|
|
};
|
|
|
|
export default wrap;
|