mirror of
https://github.com/Snigdha-OS/documentation.git
synced 2025-09-10 19:54:57 +02:00
42 lines
1.6 KiB
JavaScript
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
|