{"version":3,"sources":["../src/loop.ts","../src/setup.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAGA,SAAe,KAAK,IAAY,QAAqB;AAAA;AAHrD;AAIC,UAAM,wBAA+B,sCAAQ,aAAR,cAAsB,sCAAQ,UAAR,YAAiB,MAAM;AAClF,UAAM,oBAA2B,sCAAQ,UAAR,YAAiB,OAAO;AACzD,UAAM,iCAAyC,sCAAQ,iBAAR,YAAwB;AACvE,QAAI,QAAgB;AACpB,QAAI,mBAAmB,WAAW,YAAY,oBAAoB;AAClE,aAAe,aAAa;AAAA;AAC3B,qBAAa,gBAAgB;AAC7B,iBAAS;AACT,YAAI,SAAS;AAAkB;AAC/B,YAAI,kCAAkC;AAAM,kBAAQ,MAAM;AAC1D,cAAM,GAAG,KAAK;AACd,2BAAmB,WAAW,YAAY,oBAAoB;AAAA,MAC/D;AAAA;AAAA,EACD;AAAA;;;ACbA,SAAe,MAAM,IAAa,QAAsB;AAAA;AACvD,SAAI,iCAAQ,kBAAiB;AAAM,cAAQ,MAAM;AACjD,WAAO,GAAG,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC;AAAA,EACnC;AAAA","sourcesContent":["/** Loop Ticks\n * @alias update\n * @alias tick */\nasync function loop(fn: LoopFn, option?: LoopOption) {\n\tconst FRAME_PER_MILISECOND: number = option?.duration ?? ((option?.frame ?? 30) / 1000);\n\tconst LOOP_COUNT_LIMIT: number = option?.limit ?? Number.POSITIVE_INFINITY;\n\tconst SHOULD_CLEAR_SCREEN_PER_FRAME: boolean = option?.clear_screen ?? false;\n\tlet count: number = -1;\n\tlet timeout_instance = setTimeout(inner_loop, FRAME_PER_MILISECOND);\n\tasync function inner_loop() {\n\t\tclearTimeout(timeout_instance);\n\t\tcount += 1;\n\t\tif (count >= LOOP_COUNT_LIMIT) return;\n\t\tif (SHOULD_CLEAR_SCREEN_PER_FRAME === true) console.clear();\n\t\tawait fn(count);\n\t\ttimeout_instance = setTimeout(inner_loop, FRAME_PER_MILISECOND);\n\t}\n}\n\ninterface LoopFn {\n\t(count: number): unknown | Promise<unknown>;\n}\n\ninterface LoopOption {\n\tlimit?: number;\n\tframe?: number;\n\tduration?: number;\n\tclear_screen?: boolean;\n}\n\ninterface LoopModule {\n\tloop: LoopFn;\n\tLOOP_LIMIT?: number;\n\tLOOP_FRAME?: number;\n\tLOOP_DURATION?: number;\n\tLOOP_CLEAR_SCREEN?: boolean;\n}\n\nexport { loop, loop as tick, loop as update };\nexport type { LoopFn, LoopModule, LoopOption };\nexport default loop;\n","/** Entry Points\n * @alias init\n * @alias main\n * @alias setup */\nasync function setup(fn: SetupFn, option?: SetupOption) {\n\tif (option?.clear_screen === true) console.clear();\n\treturn fn(...process.argv.slice(2));\n}\n\ninterface SetupFn {\n\t(...args: unknown[]): void | unknown | Promise<void | unknown>;\n}\n\ninterface SetupOption {\n\tclear_screen?: boolean;\n}\n\ninterface SetupModule {\n\tdefault: SetupFn;\n}\n\n\nexport { setup as init, setup as main, setup };\nexport type { SetupFn, SetupModule, SetupOption };\nexport default setup;\n"]}