Skip to content

Commit 62f3486

Browse files
WIP(spinner)
1 parent aa799c5 commit 62f3486

File tree

7 files changed

+102
-82
lines changed

7 files changed

+102
-82
lines changed

index.mjs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { Spinner } from "./src/utils/spinner.mjs";
2+
import * as prompts from '@clack/prompts';
3+
4+
prompts.intro('spinner start...');
5+
6+
const spinner = new Spinner();
7+
spinner.total = 100;
8+
9+
spinner.start();
10+
11+
new Promise((resolve) => {
12+
let progress = 0;
13+
const timer = setInterval(() => {
14+
progress = Math.min(spinner.total, progress + 1);
15+
spinner.update(1, `Loading... ${progress}/${spinner.total}`);
16+
if (progress >= spinner.total) {
17+
clearInterval(timer);
18+
resolve(true);
19+
}
20+
}, 100);
21+
}).then(() => {
22+
spinner.stop('Done');
23+
prompts.outro('spinner stop...');
24+
});

package-lock.json

Lines changed: 34 additions & 42 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
"prettier": "3.3.3"
2828
},
2929
"dependencies": {
30-
"cli-progress": "^3.12.0",
30+
"@clack/prompts": "^0.9.0",
3131
"commander": "^12.1.0",
3232
"github-slugger": "^2.0.0",
3333
"glob": "^11.0.0",

src/utils/progressBar.mjs

Lines changed: 0 additions & 24 deletions
This file was deleted.

src/utils/spinner.mjs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import * as prompts from '@clack/prompts';
2+
3+
export class Spinner {
4+
constructor() {
5+
this.spinner = prompts.spinner();
6+
this.progress = 0;
7+
this.total = 0;
8+
}
9+
10+
start() {
11+
this.spinner.start();
12+
}
13+
14+
stop(message = 'Done') {
15+
this.spinner.stop(message);
16+
}
17+
18+
/**
19+
*
20+
* @param {number} increment
21+
* @param {string} customMessage
22+
*/
23+
update(increment = 1, customMessage) {
24+
this.progress += increment;
25+
26+
if (customMessage) {
27+
this.spinner.message(customMessage);
28+
return;
29+
}
30+
this.spinner.message(`Loading... ${this.progress}/${this.total}`);
31+
}
32+
}

src/utils/tests/progressBar.test.mjs

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/utils/tests/spinner.test.mjs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { describe, it } from "node:test";
2+
import { Spinner } from "../spinner.mjs";
3+
4+
describe("spinner", () => {
5+
it("should instantiate a new Spinner", () => {
6+
const spinner = new Spinner();
7+
spinner.start();
8+
spinner.stop();
9+
});
10+
11+
});

0 commit comments

Comments
 (0)