f2e-server3
Version:
f2e-server 3.0
45 lines (44 loc) • 1.93 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.outputProvider = void 0;
const node_path_1 = __importDefault(require("node:path"));
const node_fs_1 = __importDefault(require("node:fs"));
const logger_1 = __importDefault(require("../utils/logger"));
const promises_1 = require("node:fs/promises");
const types_1 = require("node:util/types");
const outputProvider = (options, store) => {
const { outputFilter, dest } = options;
return async function build(pathname) {
// 符合过滤条件且有输出目录执行
if (outputFilter && dest) {
// 根目录默认符合条件
if (!pathname || outputFilter(pathname)) {
const data = await store.load(pathname);
if (typeof data === "undefined" || !outputFilter(pathname, data)) {
return;
}
const absolutePathname = node_path_1.default.join(dest, pathname);
if (typeof data === "string" || (0, types_1.isArrayBufferView)(data)) {
try {
await (0, promises_1.writeFile)(absolutePathname, data);
}
catch (e) {
logger_1.default.error(e);
}
}
else {
if (!node_fs_1.default.existsSync(absolutePathname)) {
node_fs_1.default.mkdirSync(absolutePathname, { recursive: true });
}
await Promise.all(Object.keys(data).map(key => {
return build(pathname ? (pathname + '/' + key) : key);
}));
}
}
}
};
};
exports.outputProvider = outputProvider;