UNPKG

unbag

Version:

一个专门用来开发npm工具的包

93 lines 2.38 kB
import { useLog } from "./../../../utils/log.mjs"; import { useMessage } from "./../../../utils/message/index.mjs"; import { v4 as uuidv4 } from "uuid"; import { useTransformTempDir } from "../utils.mjs"; import dayjs from "dayjs"; import { useFs } from "./../../../utils/fs.mjs"; class TransformActionProcessUid { #content; constructor() { this.#content = uuidv4(); } get content() { return this.#content; } } const useTransformActionProcessMap = params => { const { finalUserConfig } = params; const log = useLog({ finalUserConfig }); const message = useMessage({ locale: finalUserConfig.locale }); const transformTempDir = useTransformTempDir({ finalUserConfig }); const processMap = /* @__PURE__ */new Map(); const getProcess = params2 => { const { uid } = params2; const process = processMap.get(uid); if (!process) { throw new Error(message.transform.action.processParentNotFound({ uid: uid.content })); } return { ...process }; }; const createProcess = async params2 => { const { name, task } = params2; const fs = useFs(); const uid = new TransformActionProcessUid(); const fileName = name.replaceAll("/", "@"); const tempDir = transformTempDir.resolve({ next: `./${fileName}-${uid.content}` }); processMap.set(uid, { tempDir, name }); const startTime = Date.now(); log.info(message.transform.action.taskProcessing({ name, startTime: dayjs(startTime).format("HH:mm:ss") })); await fs.ensureDir(tempDir.content); try { await task({ tempDir }); const endTime = Date.now(); const interval = Number(((endTime - startTime) / 1e3).toFixed(2)); log.info(message.transform.action.taskEnd({ name, interval, endTime: dayjs(endTime).format("HH:mm:ss") })); } catch (error) { const endTime = Date.now(); const interval = Number(((endTime - startTime) / 1e3).toFixed(2)); log.info(message.transform.action.taskFail({ name, interval, endTime: dayjs(endTime).format("HH:mm:ss") })); log.error(error); } return uid; }; return { createProcess, getProcess }; }; export { TransformActionProcessUid, useTransformActionProcessMap };