UNPKG

timpla

Version:

An optimal website development experience for [server-side] web frameworks.

34 lines 1.88 kB
"use strict"; 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