UNPKG

timpla

Version:

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

35 lines 1.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var chalk_1 = require("chalk"); var del = require("del"); var log = require("fancy-log"); var internal_1 = require("../internal"); exports.clean = function (_a) { var src = _a.src, dest = _a.dest, cleanOptions = _a.clean; return function (cb) { if (!cleanOptions) { return cb; } 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 isInvalidCleanPathConfig = cleanPatterns.every(function (e) { var resolvedRule = internal_1.projectPath(e); var relativeRule = e; var isNotInBlacklist = !invalidCleanPaths.includes(relativeRule) && !invalidCleanPaths.includes(resolvedRule); // If a user adds `../ etc.` var isNotDirectParent = !internal_1.isChildOf(internal_1.TIMPLA_PROCESS.INIT_CWD, e) && !internal_1.isChildOf(internal_1.TIMPLA_PROCESS.INIT_CWD, resolvedRule); return !isNotInBlacklist && !isNotDirectParent; }); if (isInvalidCleanPathConfig) { log.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 ")); cb(); } else { return del(cleanPatterns, delOptions); } }; }; //# sourceMappingURL=clean.js.map