.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / enquirer / lib / timer.js
1 'use strict';
2
3 module.exports = prompt => {
4   prompt.timers = prompt.timers || {};
5
6   let timers = prompt.options.timers;
7   if (!timers) return;
8
9   for (let key of Object.keys(timers)) {
10     let opts = timers[key];
11     if (typeof opts === 'number') {
12       opts = { interval: opts };
13     }
14     create(prompt, key, opts);
15   }
16 };
17
18 function create(prompt, name, options = {}) {
19   let timer = prompt.timers[name] = { name, start: Date.now(), ms: 0, tick: 0 };
20   let ms = options.interval || 120;
21   timer.frames = options.frames || [];
22   timer.loading = true;
23
24   let interval = setInterval(() => {
25     timer.ms = Date.now() - timer.start;
26     timer.tick++;
27     prompt.render();
28   }, ms);
29
30   timer.stop = () => {
31     timer.loading = false;
32     clearInterval(interval);
33   };
34
35   Reflect.defineProperty(timer, 'interval', { value: interval });
36   prompt.once('close', () => timer.stop());
37   return timer.stop;
38 }