Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
_getCachedPath(link) {
link = link.replace(/^github\:/, 'github#'); // replace ':' for '#' in github protocol
link = link.replace(/\:\/\//, '#'); // replace '://' for '#' in url
link = link.replace(/\//g, '-'); // replace '/' for '-'
const parts = link.match(/^([^\?]*)(\?(.*))?$/); // delete get parameters from url
if (parts && parts[3]) {
link = parts[1] + XXHash.h64(parts[3], HASH_SEED);
}
if (link.length > MAX_FILENAME_LENGTH) {
const startPart = link.substr(0, 100);
const endPart = link.substr(link.length - 100);
const middlePart = XXHash.h64(link, HASH_SEED);
link = startPart + endPart + middlePart;
}
return path.join(this._cacheDir, link);
}
_getCachedPath(link) {
link = link.replace(/^github\:/, 'github#'); // replace ':' for '#' in github protocol
link = link.replace(/\:\/\//, '#'); // replace '://' for '#' in url
link = link.replace(/\//g, '-'); // replace '/' for '-'
const parts = link.match(/^([^\?]*)(\?(.*))?$/); // delete get parameters from url
if (parts && parts[3]) {
link = parts[1] + XXHash.h64(parts[3], HASH_SEED);
}
if (link.length > MAX_FILENAME_LENGTH) {
const startPart = link.substr(0, 100);
const endPart = link.substr(link.length - 100);
const middlePart = XXHash.h64(link, HASH_SEED);
link = startPart + endPart + middlePart;
}
return path.join(this._cacheDir, link);
}
function queryHash(value) {
if (value === null)
return null;
if (value.indexOf('exec sp_executesql') === 0) {
value = value.replace(/,@\w+=.*/g, ''); // Remove everything after ',@Param1='
value = value.replace(/varchar\(\d+\)/g, 'varchar()'); // Change 'varchar(xxx)' to 'varchar()'
}
value = value.replace(/[^0-9A-Za-z]+/g, ''); // Remove all non-alphanumeric characters
return XXH.h64(value, 0xabcd).toString(36);
}
addRelationId(relationData) {
relationData.id = XXHash.h64(
[relationData.fromKey, relationData.fromType, relationData.fromId, relationData.toKey, relationData.toType, relationData.toId].join(','),
42
).toString(16);
return relationData;
}
const hashTwice = (value, asInt = false, seed = getDefaultSeed()) => {
const f = XXH.h64(value, seed + 1)
const l = XXH.h64(value, seed + 2)
if (asInt) {
return {
first: f.toNumber(),
second: l.toNumber()
}
} else {
let one = f.toString(16)
if (one.length < 16) one = '0'.repeat(16 - one.length) + one
let two = l.toString(16)
if (two.length < 16) two = '0'.repeat(16 - two.length) + two
return {
first: one,
second: two
}
}
function hashAsInt (elem, seed = getDefaultSeed(), length = 64) {
switch (length) {
case 32:
return XXH.h32(elem, seed).toNumber()
case 64:
return XXH.h64(elem, seed).toNumber()
default:
return XXH.h64(elem, seed).toNumber()
}
}
export default function xxhash64AsValue (data: Buffer | Uint8Array | string, seed: number): number {
if (isBuffer(data) || isString(data)) {
return xxhashjs.h64(data, seed) as unknown as number;
}
return xxhashjs.h64(
u8aToBuffer(data),
seed
) as unknown as number;
}