{"version":3,"file":"partial.cjs","names":[],"sources":["../../src/function/partial.ts"],"sourcesContent":["/**\n * Creates a function that invokes func with partialArgs prepended to the arguments it receives.\n * This method is like bind except it does not alter the this binding.\n *\n * @template T - The type of the function\n * @param func - The function to partially apply arguments to\n * @param partialArgs - The arguments to be partially applied\n * @returns Returns the new partially applied function\n *\n * @example\n * const greet = (greeting: string, name: string) => `${greeting}, ${name}!`;\n * const sayHelloTo = partial(greet, 'Hello');\n * sayHelloTo('Alice'); // => 'Hello, Alice!'\n * sayHelloTo('Bob'); // => 'Hello, Bob!'\n *\n * @example\n * const add = (a: number, b: number, c: number) => a + b + c;\n * const add5 = partial(add, 5);\n * add5(10, 15); // => 30\n */\nexport function partial<T extends (...args: never[]) => unknown>(\n  func: T,\n  ...partialArgs: unknown[]\n): (...args: unknown[]) => ReturnType<T> {\n  const call = (thisArg: unknown, args: unknown[]): ReturnType<T> =>\n    (func as (this: unknown, ...args: never[]) => ReturnType<T>).apply(thisArg, args as never[]);\n\n  return function (this: unknown, ...args: unknown[]): ReturnType<T> {\n    return call(this, [...partialArgs, ...args]);\n  };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAoBA,SAAgB,QACd,MACA,GAAG,aACoC;CACvC,MAAM,QAAQ,SAAkB,SAC7B,KAA4D,MAAM,SAAS,IAAe;CAE7F,OAAO,SAAyB,GAAG,MAAgC;EACjE,OAAO,KAAK,MAAM,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC;CAC7C;AACF"}