1234567891011121314151617181920212223242526272829303132333435363738 |
- 'use strict';
-
- module.exports = prompt => {
- prompt.timers = prompt.timers || {};
-
- let timers = prompt.options.timers;
- if (!timers) return;
-
- for (let key of Object.keys(timers)) {
- let opts = timers[key];
- if (typeof opts === 'number') {
- opts = { interval: opts };
- }
- create(prompt, key, opts);
- }
- };
-
- function create(prompt, name, options = {}) {
- let timer = prompt.timers[name] = { name, start: Date.now(), ms: 0, tick: 0 };
- let ms = options.interval || 120;
- timer.frames = options.frames || [];
- timer.loading = true;
-
- let interval = setInterval(() => {
- timer.ms = Date.now() - timer.start;
- timer.tick++;
- prompt.render();
- }, ms);
-
- timer.stop = () => {
- timer.loading = false;
- clearInterval(interval);
- };
-
- Reflect.defineProperty(timer, 'interval', { value: interval });
- prompt.once('close', () => timer.stop());
- return timer.stop;
- }
|