| Server IP : 34.87.99.72 / Your IP : 216.73.217.31 Web Server : Apache/2.4.46 (Unix) OpenSSL/1.1.1n System : Linux zlock-bitnami-lamp-prod-v2-vm 4.19.0-16-cloud-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 User : bitnami ( 1000) PHP Version : 7.4.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /opt/bitnami/apache/htdocs/app/node_modules/webpack/lib/cache/ |
Upload File : |
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
"use strict";
const createHash = require("../util/createHash");
/** @typedef {import("../util/Hash")} Hash */
/**
* @typedef {Object} HashableObject
* @property {function(Hash): void} updateHash
*/
class LazyHashedEtag {
/**
* @param {HashableObject} obj object with updateHash method
*/
constructor(obj) {
this._obj = obj;
this._hash = undefined;
}
/**
* @returns {string} hash of object
*/
toString() {
if (this._hash === undefined) {
const hash = createHash("md4");
this._obj.updateHash(hash);
this._hash = /** @type {string} */ (hash.digest("base64"));
}
return this._hash;
}
}
/** @type {WeakMap<HashableObject, LazyHashedEtag>} */
const map = new WeakMap();
/**
* @param {HashableObject} obj object with updateHash method
* @returns {LazyHashedEtag} etag
*/
const getter = obj => {
const hash = map.get(obj);
if (hash !== undefined) return hash;
const newHash = new LazyHashedEtag(obj);
map.set(obj, newHash);
return newHash;
};
module.exports = getter;