Skip to content

Commit 4575c79

Browse files
committed
feat: create TaskManagerClass
1 parent 5adf27c commit 4575c79

3 files changed

Lines changed: 28 additions & 2 deletions

File tree

packages/shared/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@h3ravel/shared",
3-
"version": "0.18.0",
3+
"version": "0.18.1",
44
"description": "Shared Utilities.",
55
"type": "module",
66
"main": "./dist/index.js",
@@ -62,4 +62,4 @@
6262
"install": "^0.13.0",
6363
"pnpm": "^10.14.0"
6464
}
65-
}
65+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { Logger } from "./Logger"
2+
3+
export class TaskManager {
4+
public static async taskRunner (
5+
description: string,
6+
task: (() => Promise<any>) | (() => any)
7+
): Promise<void> {
8+
const startTime = process.hrtime()
9+
let result: any = false
10+
11+
try {
12+
result = await Promise.all([(task || (() => true))()].flat())
13+
} finally {
14+
const endTime = process.hrtime(startTime)
15+
const duration = (endTime[0] * 1e9 + endTime[1]) / 1e6
16+
Logger.twoColumnLog(
17+
Logger.parse([[description, 'green']], '', false),
18+
[
19+
Logger.parse([[`${Math.floor(duration)}ms`, 'gray']], '', false),
20+
Logger.parse([[result !== false ? '✔' : '✘', result !== false ? 'green' : 'red']], '', false),
21+
].join(' ')
22+
)
23+
}
24+
}
25+
}

packages/shared/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ export * from './Contracts/ObjContract'
99
export * from './Utils/EnvParser'
1010
export * from './Utils/Logger'
1111
export * from './Utils/PathLoader'
12+
export * from './Utils/TaskManager'

0 commit comments

Comments
 (0)