{"version":3,"file":"index.mjs","sources":["../../src/index.ts"],"sourcesContent":["const memoOne = <Args extends any[], T extends any>(\n  fn: (...args: Args) => T,\n  areEqual?: AreEqual<Args>\n): OutputFunction<Args, T> => {\n  const equal = areEqual || defaultAreEqual\n  let args: Args, value: any\n\n  return function (): T {\n    return !!args && equal(arguments as any, args)\n      ? value\n      : (value = fn.apply(null, (args = arguments as any)))\n  } as OutputFunction<Args, T>\n}\n\nexport default memoOne\n\nconst defaultAreEqual = (\n  current: IArguments,\n  prev: IArguments | any[]\n): boolean =>\n  current[0] === prev[0] &&\n  current[1] === prev[1] &&\n  current[2] === prev[2] &&\n  current[3] === prev[3]\n\nexport type AreEqual<Args> = (currentArgs: Args, prevArgs: Args) => boolean\nexport type InputFunction = (...args: any[]) => any\nexport type OutputFunction<Args extends any[], T extends any> = (\n  ...args: Args\n) => T\n"],"names":["defaultAreEqual","current","prev","fn","areEqual","args","value","equal","arguments","apply"],"mappings":"IAgBMA,EAAkB,CACtBC,EACAC,IAEAD,EAAQ,KAAOC,EAAK,IACpBD,EAAQ,KAAOC,EAAK,IACpBD,EAAQ,KAAOC,EAAK,IACpBD,EAAQ,KAAOC,EAAK,iBAvBN,CACdC,EACAC,SAGIC,EAAYC,EADVC,EAAQH,GAAYJ,SAGnB,kBACIK,GAAQE,EAAMC,UAAkBH,GACrCC,EACCA,EAAQH,EAAGM,MAAM,KAAOJ,EAAOG"}