Files
documentation/node_modules/@docusaurus/utils/lib/hashUtils.js
2024-03-22 03:47:51 +05:30

42 lines
1.6 KiB
JavaScript

"use strict";
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.docuHash = exports.simpleHash = exports.md5Hash = void 0;
const tslib_1 = require("tslib");
const crypto_1 = require("crypto");
const lodash_1 = tslib_1.__importDefault(require("lodash"));
const pathUtils_1 = require("./pathUtils");
/** Thin wrapper around `crypto.createHash("md5")`. */
function md5Hash(str) {
return (0, crypto_1.createHash)('md5').update(str).digest('hex');
}
exports.md5Hash = md5Hash;
/** Creates an MD5 hash and truncates it to the given length. */
function simpleHash(str, length) {
return md5Hash(str).substring(0, length);
}
exports.simpleHash = simpleHash;
// Based on https://github.com/gatsbyjs/gatsby/pull/21518/files
/**
* Given an input string, convert to kebab-case and append a hash, avoiding name
* collision. Also removes part of the string if its larger than the allowed
* filename per OS, avoiding `ERRNAMETOOLONG` error.
*/
function docuHash(str) {
if (str === '/') {
return 'index';
}
const shortHash = simpleHash(str, 3);
const parsedPath = `${lodash_1.default.kebabCase(str)}-${shortHash}`;
if ((0, pathUtils_1.isNameTooLong)(parsedPath)) {
return `${(0, pathUtils_1.shortName)(lodash_1.default.kebabCase(str))}-${shortHash}`;
}
return parsedPath;
}
exports.docuHash = docuHash;
//# sourceMappingURL=hashUtils.js.map