timpla
Version:
An optimal website development experience for [server-side] web frameworks.
34 lines • 1.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var chalk_1 = require("chalk");
var del_1 = require("del");
var internal_1 = require("../internal");
exports.clean = function (_a) {
var src = _a.src, dest = _a.dest, cleanOptions = _a.clean;
return function (cb) {
if (!cleanOptions) {
cb();
return;
}
var cleanPatterns = cleanOptions.patterns || internal_1.projectDestPath();
cleanPatterns = Array.isArray(cleanPatterns) ? cleanPatterns : [cleanPatterns];
var delOptions = cleanOptions.delOptions;
var invalidCleanPaths = [internal_1.TIMPLA_PROCESS.INIT_CWD, internal_1.projectSrcPath(), src];
/** Blacklist naughty ways to delete files. */
var isValidCleanPathConfig = cleanPatterns.every(function (e) {
var resolvedRule = internal_1.projectPath(e);
var relativeRule = e;
var isInBlacklist = invalidCleanPaths.includes(relativeRule) || invalidCleanPaths.includes(resolvedRule);
// If a user adds `../ etc.`
var isDirectParent = internal_1.isChildOf(internal_1.TIMPLA_PROCESS.INIT_CWD, e) || internal_1.isChildOf(internal_1.TIMPLA_PROCESS.INIT_CWD, resolvedRule);
return !isInBlacklist && !isDirectParent;
});
if (!isValidCleanPathConfig) {
throw Error(chalk_1.default.red("=== To protect your files, Timpla skipped the misconfigured clean task.\n Please ensure that the dest option in timplaconfig is set to a path different from your project root! ===\n You attempted to run it with:\n " + cleanOptions.patterns + "\n Blacklisted paths:\n " + invalidCleanPaths + "\n "));
}
else {
return del_1.default(cleanPatterns, delOptions);
}
};
};
//# sourceMappingURL=clean.js.map