{
  "version": 3,
  "sources": ["../src/performance.ts"],
  "sourcesContent": ["/**\n * Wraps a function and logs the time it takes to execute.\n *\n * @param fn - The function to be wrapped.\n */\nexport function logPerformanceTiming<\n\tParams extends Array< unknown >,\n\tReturnType = void,\n>( fn: ( ...args: Params ) => ReturnType ): typeof fn {\n\treturn function ( this: unknown, ...args: Params ): ReturnType {\n\t\tconst start = performance.now();\n\t\tconst result = fn.apply( this, args );\n\t\tconst end = performance.now();\n\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.log(\n\t\t\t`[SyncManager][performance]: ${ fn.name } took ${ (\n\t\t\t\tend - start\n\t\t\t).toFixed( 2 ) } ms`\n\t\t);\n\n\t\treturn result;\n\t};\n}\n\n/**\n * A pass-through function that invokes the provided function with its arguments\n * without moidyfing its type.\n *\n * @param fn - The function to be invoked.\n */\nexport function passThru< T extends ( ...args: any[] ) => any >( fn: T ): T {\n\treturn ( ( ...args: Parameters< T > ): ReturnType< T > =>\n\t\tfn( ...args ) ) as T;\n}\n\n/**\n * Wraps a function so that every invocation is delayed until the next tick of\n * the event loop.\n *\n * @param fn - The function to be scheduled.\n */\nexport function yieldToEventLoop< Params extends Array< unknown > >(\n\tfn: ( ...args: Params ) => void\n): typeof fn {\n\treturn function ( this: unknown, ...args: Params ): void {\n\t\tsetTimeout( () => {\n\t\t\tfn.apply( this, args );\n\t\t}, 0 );\n\t};\n}\n"],
  "mappings": ";AAKO,SAAS,qBAGb,IAAmD;AACrD,SAAO,YAA6B,MAA2B;AAC9D,UAAM,QAAQ,YAAY,IAAI;AAC9B,UAAM,SAAS,GAAG,MAAO,MAAM,IAAK;AACpC,UAAM,MAAM,YAAY,IAAI;AAG5B,YAAQ;AAAA,MACP,+BAAgC,GAAG,IAAK,UACvC,MAAM,OACL,QAAS,CAAE,CAAE;AAAA,IAChB;AAEA,WAAO;AAAA,EACR;AACD;AAQO,SAAS,SAAiD,IAAW;AAC3E,UAAS,IAAK,SACb,GAAI,GAAG,IAAK;AACd;AAQO,SAAS,iBACf,IACY;AACZ,SAAO,YAA6B,MAAqB;AACxD,eAAY,MAAM;AACjB,SAAG,MAAO,MAAM,IAAK;AAAA,IACtB,GAAG,CAAE;AAAA,EACN;AACD;",
  "names": []
}
