update deno-commons-mode.ts
This commit is contained in:
@@ -1,10 +1,10 @@
|
|||||||
// Reference:
|
// Reference:
|
||||||
// - https://docs.deno.com/runtime/fundamentals/testing/
|
// - https://docs.deno.com/runtime/fundamentals/testing/
|
||||||
|
|
||||||
import { assert } from "jsr:@std/assert/assert";
|
import {assert} from "jsr:@std/assert/assert";
|
||||||
import { assertEquals } from "jsr:@std/assert";
|
import {assertEquals} from "jsr:@std/assert";
|
||||||
import { decodeBase64, encodeBase64 } from "jsr:@std/encoding/base64";
|
import {decodeBase64, encodeBase64} from "jsr:@std/encoding/base64";
|
||||||
import { dirname } from "https://deno.land/std@0.208.0/path/mod.ts";
|
import {dirname} from "https://deno.land/std@0.208.0/path/mod.ts";
|
||||||
|
|
||||||
// reference: https://docs.deno.com/examples/hex_base64_encoding/
|
// reference: https://docs.deno.com/examples/hex_base64_encoding/
|
||||||
// import { decodeBase64, encodeBase64 } from "jsr:@std/encoding/base64";
|
// import { decodeBase64, encodeBase64 } from "jsr:@std/encoding/base64";
|
||||||
@@ -439,6 +439,41 @@ export function setKeyRingPassword(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class ProcessBar {
|
||||||
|
interval?: number;
|
||||||
|
message: string;
|
||||||
|
constructor(message?: string) {
|
||||||
|
this.message = message || "Processing";
|
||||||
|
}
|
||||||
|
async call<T>(cb: () => Promise<T>, clearLine?: boolean): Promise<T> {
|
||||||
|
this.start();
|
||||||
|
try {
|
||||||
|
return await cb();
|
||||||
|
} finally {
|
||||||
|
this.stop(clearLine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
start(): void {
|
||||||
|
const startMs = new Date().getTime();
|
||||||
|
let count = 0;
|
||||||
|
this.interval = setInterval(() => {
|
||||||
|
const dots = ".".repeat(((count++) % 10) + 1);
|
||||||
|
const costMs = new Date().getTime() - startMs;
|
||||||
|
let time = `${costMs}ms`;
|
||||||
|
if (costMs > 1000) {
|
||||||
|
time = `${Math.floor(costMs / 1000)}s`;
|
||||||
|
}
|
||||||
|
process.stderr.write(`\r${this.message} ${time} ${dots}\x1b[K`);
|
||||||
|
}, 200);
|
||||||
|
}
|
||||||
|
stop(clearLine?: boolean): void {
|
||||||
|
if (this.interval) {
|
||||||
|
clearInterval(this.interval);
|
||||||
|
process.stderr.write(clearLine ? "\r" : "\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Deno.test("isOn", () => {
|
Deno.test("isOn", () => {
|
||||||
assertEquals(false, isOn(undefined));
|
assertEquals(false, isOn(undefined));
|
||||||
assertEquals(false, isOn(""));
|
assertEquals(false, isOn(""));
|
||||||
|
|||||||
Reference in New Issue
Block a user