unbag
Version:
一个专门用来开发npm工具的包
93 lines • 2.38 kB
JavaScript
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 };