UNPKG

zippycli

Version:
1 lines 5.51 kB
{"version":3,"sources":["progress.ts"],"names":["Progress","Object","constructor","total","current","_total","_current","_prevCurrent","now","Date","add","amount","start","interval","cb","_interval","Error","_start","_prevTime","_callback","setInterval","update","end","clearInterval","duration","timeDelta","remaining","totalDelta","delta"],"mappings":";;AAmDA;AACA;AACA;AACA,OAAO,MAAMA,QAAN,SAAuBC,MAAvB,CAA8B;AACpC;AACD;AACA;;AAGC;AACD;AACA;;AAGC;AACD;AACA;;AAGC;AACD;AACA;;AAGC;AACD;AACA;;AAGC;AACD;AACA;;AAGC;AACD;AACA;;AAGC;AACD;AACA;AACA;AACA;AACA;AACCC,EAAAA,WAAW,CAACC,KAAD,EAAgBC,OAAe,GAAG,CAAlC,EAAqC;AAC/C;;AAD+C,uCA5BrB,IA4BqB;;AAAA,uCAvBD,IAuBC;;AAAA,oCAlBrB,CAkBqB;;AAAA,uCAblB,CAakB;;AAAA,0CARf,CAQe;;AAG/C,SAAKC,MAAL,GAAcF,KAAd;AACA,SAAKG,QAAL,GAAgBF,OAAhB;AACA,SAAKG,YAAL,GAAoBH,OAApB;AACA;AAED;AACD;AACA;AACA;AACA;;;AACQI,EAAAA,GAAG,GAAG;AACZ,WAAOC,IAAI,CAACD,GAAL,EAAP;AACA;AAED;AACD;AACA;AACA;AACA;;;AACQE,EAAAA,GAAG,CAACC,MAAD,EAAiB;AAC1B,SAAKL,QAAL,IAAiBK,MAAjB;AACA;AAED;AACD;AACA;AACA;AACA;AACA;;;AACQC,EAAAA,KAAK,CAACC,QAAD,EAAmBC,EAAnB,EAAyC;AACpD,QAAI,KAAKC,SAAT,EAAoB;AACnB,YAAM,IAAIC,KAAJ,CAAU,iBAAV,CAAN;AACA;;AAED,UAAMR,GAAG,GAAG,KAAKA,GAAL,EAAZ;AACA,SAAKS,MAAL,GAAcT,GAAd;AACA,SAAKU,SAAL,GAAiBV,GAAjB;AACA,SAAKW,SAAL,GAAiBL,EAAjB;AAEA,SAAKC,SAAL,GAAiBK,WAAW,CAAC,MAAM;AAClC,WAAKC,MAAL;AACA,KAF2B,EAEzBR,QAFyB,CAA5B;AAGA,SAAKQ,MAAL;AACA;AAED;AACD;AACA;;;AACQC,EAAAA,GAAG,GAAG;AACZ,QAAI,KAAKP,SAAT,EAAoB;AACnBQ,MAAAA,aAAa,CAAC,KAAKR,SAAN,CAAb;AACA,WAAKA,SAAL,GAAiB,IAAjB;AACA;;AACD,SAAKM,MAAL;AACA;AAED;AACD;AACA;;;AACQA,EAAAA,MAAM,GAAG;AACf,UAAMP,EAAE,GAAG,KAAKK,SAAhB;;AACA,QAAI,CAACL,EAAL,EAAS;AACR;AACA;;AAED,UAAMF,KAAK,GAAG,KAAKK,MAAnB;AACA,UAAMT,GAAG,GAAG,KAAKA,GAAL,EAAZ;AACA,UAAMgB,QAAQ,GAAGhB,GAAG,GAAGI,KAAvB;AACA,UAAMa,SAAS,GAAGjB,GAAG,GAAG,KAAKU,SAA7B;AACA,SAAKA,SAAL,GAAiBV,GAAjB;AAEA,UAAML,KAAK,GAAG,KAAKE,MAAnB;AACA,UAAMD,OAAO,GAAG,KAAKE,QAArB;AACA,UAAMoB,SAAS,GAAGvB,KAAK,GAAGC,OAA1B;AACA,UAAMuB,UAAU,GAAGvB,OAAO,GAAG,KAAKG,YAAlC;AACA,SAAKA,YAAL,GAAoBH,OAApB;AAEAU,IAAAA,EAAE,CACD;AACCF,MAAAA,KADD;AAECJ,MAAAA,GAFD;AAGCgB,MAAAA,QAHD;AAICI,MAAAA,KAAK,EAAEH;AAJR,KADC,EAOD;AACCtB,MAAAA,KADD;AAECC,MAAAA,OAFD;AAGCsB,MAAAA,SAHD;AAICE,MAAAA,KAAK,EAAED;AAJR,KAPC,CAAF;AAcA;;AAxImC","sourcesContent":["export interface IProgressTime {\n\t//\n\t/**\n\t * Start time.\n\t */\n\tstart: number;\n\n\t/**\n\t * Current time.\n\t */\n\tnow: number;\n\n\t/**\n\t * Current duration.\n\t */\n\tduration: number;\n\n\t/**\n\t * Delta since last update.\n\t */\n\tdelta: number;\n}\n\nexport interface IProgressTotal {\n\t//\n\t/**\n\t * Total amount.\n\t */\n\ttotal: number;\n\n\t/**\n\t * Current amount.\n\t */\n\tcurrent: number;\n\n\t/**\n\t * Remaining amount.\n\t */\n\tremaining: number;\n\n\t/**\n\t * Delta since last update.\n\t */\n\tdelta: number;\n}\n\nexport type ProgressCallback = (\n\ttime: IProgressTime,\n\ttotal: IProgressTotal\n) => void;\n\n/**\n * Progress wrapper.\n */\nexport class Progress extends Object {\n\t/**\n\t * Total amount.\n\t */\n\tprotected _total: number;\n\n\t/**\n\t * Current amount.\n\t */\n\tprotected _current: number;\n\n\t/**\n\t * Update interval.\n\t */\n\tprotected _interval: any = null;\n\n\t/**\n\t * Update callback.\n\t */\n\tprotected _callback: ProgressCallback | null = null;\n\n\t/**\n\t * Start time.\n\t */\n\tprotected _start: number = 0;\n\n\t/**\n\t * Previous update time.\n\t */\n\tprotected _prevTime: number = 0;\n\n\t/**\n\t * Previous update total.\n\t */\n\tprotected _prevCurrent: number = 0;\n\n\t/**\n\t * Create Progress.\n\t *\n\t * @param total Total progress.\n\t * @param current Starting progress.\n\t */\n\tconstructor(total: number, current: number = 0) {\n\t\tsuper();\n\n\t\tthis._total = total;\n\t\tthis._current = current;\n\t\tthis._prevCurrent = current;\n\t}\n\n\t/**\n\t * Get the current time.\n\t *\n\t * @returns Current time.\n\t */\n\tpublic now() {\n\t\treturn Date.now();\n\t}\n\n\t/**\n\t * Add to current amount.\n\t *\n\t * @param amount Amount to be added.\n\t */\n\tpublic add(amount: number) {\n\t\tthis._current += amount;\n\t}\n\n\t/**\n\t * Start updater.\n\t *\n\t * @param interval Update interval in milliseconds.\n\t * @param cb Progress callback.\n\t */\n\tpublic start(interval: number, cb: ProgressCallback) {\n\t\tif (this._interval) {\n\t\t\tthrow new Error('Already started');\n\t\t}\n\n\t\tconst now = this.now();\n\t\tthis._start = now;\n\t\tthis._prevTime = now;\n\t\tthis._callback = cb;\n\n\t\tthis._interval = setInterval(() => {\n\t\t\tthis.update();\n\t\t}, interval);\n\t\tthis.update();\n\t}\n\n\t/**\n\t * End updater.\n\t */\n\tpublic end() {\n\t\tif (this._interval) {\n\t\t\tclearInterval(this._interval as NodeJS.Timer);\n\t\t\tthis._interval = null;\n\t\t}\n\t\tthis.update();\n\t}\n\n\t/**\n\t * Update callback.\n\t */\n\tpublic update() {\n\t\tconst cb = this._callback;\n\t\tif (!cb) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst start = this._start;\n\t\tconst now = this.now();\n\t\tconst duration = now - start;\n\t\tconst timeDelta = now - this._prevTime;\n\t\tthis._prevTime = now;\n\n\t\tconst total = this._total;\n\t\tconst current = this._current;\n\t\tconst remaining = total - current;\n\t\tconst totalDelta = current - this._prevCurrent;\n\t\tthis._prevCurrent = current;\n\n\t\tcb(\n\t\t\t{\n\t\t\t\tstart,\n\t\t\t\tnow,\n\t\t\t\tduration,\n\t\t\t\tdelta: timeDelta\n\t\t\t},\n\t\t\t{\n\t\t\t\ttotal,\n\t\t\t\tcurrent,\n\t\t\t\tremaining,\n\t\t\t\tdelta: totalDelta\n\t\t\t}\n\t\t);\n\t}\n}\n"],"file":"progress.mjs","sourceRoot":"../src"}