UNPKG

@netlify/content-engine

Version:
65 lines 1.95 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getRemoteFileExtension = getRemoteFileExtension; exports.getRemoteFileName = getRemoteFileName; exports.createFileHash = createFileHash; exports.createFilePath = createFilePath; const path_1 = __importDefault(require("path")); const crypto_1 = __importDefault(require("crypto")); const url_1 = __importDefault(require("url")); /** * getParsedPath * -- * Parses remote url to a path object * */ function getParsedPath(url) { return path_1.default.parse(url_1.default.parse(url).pathname || ``); } /** * getRemoteFileExtension * -- * Parses remote url to retrieve remote file extension * */ function getRemoteFileExtension(url) { return getParsedPath(url).ext; } /** * getRemoteFileName * -- * Parses remote url to retrieve remote file name * */ function getRemoteFileName(url) { return decodeURIComponent(getParsedPath(url).name); } function createFileHash(input, length = 8) { return crypto_1.default .createHash(`sha1`) .update(input) .digest(`hex`) .substring(0, length); } const filenamePurgeRegex = /:|\/|\*|\?|"|<|>|\||\\/g; /** * createFilePath * -- * Gets full file path while replacing forbidden characters with a `-` */ function createFilePath(directory, filename, ext) { directory = decodeURIComponent(directory); filename = decodeURIComponent(filename); const purgedFileName = filename.replace(filenamePurgeRegex, `-`); const shouldAddHash = purgedFileName !== filename; if (shouldAddHash) { return path_1.default.join(directory, `${purgedFileName}-${createFileHash(filename)}${ext}`); } else { return path_1.default.join(directory, `${filename}${ext}`); } } //# sourceMappingURL=filename-utils.js.map