unbag
Version:
一个专门用来开发npm工具的包
184 lines (183 loc) • 4.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useTransformActionHelper = exports.defineTransformActionTask = exports.TransformActionTaskOutFileType = void 0;
var _path = require("./../../../utils/path.cjs");
var _utils = require("../utils.cjs");
var _process = require("./process.cjs");
var _fs = require("./../../../utils/fs.cjs");
var _esbuild = require("./tasks/esbuild.cjs");
var _alias = require("./tasks/alias.cjs");
var _babel = require("./tasks/babel.cjs");
var _common = require("./../../../utils/common.cjs");
var _dts = require("./tasks/dts.cjs");
var TransformActionTaskOutFileType = exports.TransformActionTaskOutFileType = /* @__PURE__ */(TransformActionTaskOutFileType2 => {
TransformActionTaskOutFileType2["Transformed"] = "Transformed";
TransformActionTaskOutFileType2["Copy"] = "Copy";
TransformActionTaskOutFileType2["Ignored"] = "Ignored";
return TransformActionTaskOutFileType2;
})(TransformActionTaskOutFileType || {});
const defineTransformActionTask = task => task;
exports.defineTransformActionTask = defineTransformActionTask;
const useTransformActionHelper = params => {
const {
finalUserConfig
} = params;
const entryDir = (0, _utils.useTransformEntry)({
finalUserConfig
});
const fs = (0, _fs.useFs)();
const path = (0, _path.usePath)();
const {
createProcess,
getProcess
} = (0, _process.useTransformActionProcessMap)({
finalUserConfig
});
const custom = async params2 => {
const {
name,
task,
parentUid
} = params2;
const uid = await createProcess({
name,
task: async ({
tempDir
}) => {
const inputDir = parentUid ? getProcess({
uid: parentUid
}).tempDir : entryDir;
const filePaths = await (0, _utils.useTransformFiles)({
finalUserConfig,
inputDir
});
const result = await task({
tempDir,
inputDir,
filePaths,
finalUserConfig
});
await fs.ensureDir(tempDir.content);
await Promise.all(result.map(async file => {
if (!file) {
return;
}
if (file.type === "Ignored" /* Ignored */) {
return;
}
if (file.type === "Copy" /* Copy */) {
await fs.copy(path.resolve(inputDir.content, file.from.content), path.resolve(tempDir.content, file.to.content));
}
if (file.type === "Transformed" /* Transformed */) {
await fs.outputFile(path.resolve(tempDir.content, file.to.content), file.content);
}
}));
}
});
return uid;
};
const esbuild = async params2 => {
const {
name,
options,
parentUid
} = params2;
return await custom({
name,
task: (0, _esbuild.TransformActionTaskEsbuild)(options),
parentUid
});
};
const babel = async params2 => {
const {
name,
options,
parentUid
} = params2;
return await custom({
name,
task: (0, _babel.TransformActionTaskBabel)(options),
parentUid
});
};
const alias = async params2 => {
const {
name,
options,
parentUid
} = params2;
return await custom({
name,
task: (0, _alias.TransformActionTaskAlias)(options),
parentUid
});
};
const dts = async params2 => {
const {
name,
options,
parentUid
} = params2;
return await custom({
name,
task: (0, _dts.TransformActionTaskDts)(options),
parentUid
});
};
const merge = async params2 => {
const {
name,
processUidList
} = params2;
const uid = await createProcess({
name,
task: async ({
tempDir
}) => {
const inputDirList = processUidList.map(uid2 => getProcess({
uid: uid2
}).tempDir);
for (const inputDir of inputDirList) {
await fs.copy(inputDir.content, tempDir.content);
}
}
});
return uid;
};
const out = async params2 => {
const {
output,
processUid
} = params2;
const parentProcess = getProcess({
uid: processUid
});
const rootPath = (0, _common.useRoot)({
finalUserConfig
});
const outputDir = rootPath.resolve({
next: output
});
const name = `out-${parentProcess.name}`;
const uid = await createProcess({
name,
task: async () => {
await fs.emptyDir(outputDir.content);
await fs.copy(parentProcess.tempDir.content, outputDir.content);
}
});
return uid;
};
return {
custom,
merge,
esbuild,
alias,
babel,
out,
dts
};
};
exports.useTransformActionHelper = useTransformActionHelper;