@netlify/content-engine
Version:
65 lines • 1.95 kB
JavaScript
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
;