UNPKG

@barchart/common-js

Version:
167 lines (161 loc) 4.4 kB
var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var TimeMap_exports = {}; __export(TimeMap_exports, { default: () => TimeMap }); module.exports = __toCommonJS(TimeMap_exports); var assert = __toESM(require("./../../lang/assert.js")); var is = __toESM(require("./../../lang/is.js")); class TimeMap { #duration; #map; /** * @param {number} duration - The time to live, in milliseconds. */ constructor(duration) { assert.argumentIsValid(duration, "duration", (x) => is.positive(x), "is positive"); this.#duration = duration; this.#map = {}; } /** * Returns true, if the map contains the item; otherwise false. * * @public * @param {string} key * @returns {boolean} */ has(key) { assert.argumentIsRequired(key, "key", String); let exists = Object.prototype.hasOwnProperty.call(this.#map, key); if (exists) { const item = this.#map[key]; if (!item.valid) { this.remove(key); exists = false; } } return exists; } /** * Puts an item into the map. * * @public * @param {string} key * @param {*} value */ put(key, value) { assert.argumentIsRequired(key, "key", String); this.#map[key] = new Item(key, value, (/* @__PURE__ */ new Date()).getTime() + this.#duration); } /** * Puts an item into the map. * * @public * @param {string} key * @param {*} value */ set(key, value) { this.put(key, value); } /** * Gets an item from the map, returning a null value if the no item * for the given key exists. * * @public * @param {string} key * @returns {*|null} */ get(key) { assert.argumentIsRequired(key, "key", String); let returnRef = null; if (this.has(key)) { returnRef = this.#map[key].value; } return returnRef; } /** * Removes an item from the map. * * @public * @param {string} key */ remove(key) { assert.argumentIsRequired(key, "key", String); delete this.#map[key]; } /** * Removes an item from the map. * * @public * @param {string} key */ delete(key) { this.remove(key); } /** * Returns a string representation. * * @public * @returns {string} */ toString() { return "[TimeMap]"; } } class Item { #key; #value; #expiration; constructor(key, value, expiration) { this.#key = key; this.#value = value; this.#expiration = expiration; } get key() { return this.#key; } get value() { return this.#value; } get valid() { return this.#expiration > (/* @__PURE__ */ new Date()).getTime(); } } { const cjsExports = module.exports; const cjsDefaultExport = cjsExports && cjsExports.__esModule ? cjsExports.default : cjsExports; if (cjsDefaultExport && (typeof cjsDefaultExport === 'function' || typeof cjsDefaultExport === 'object')) { Object.keys(cjsExports).forEach((key) => { if (key !== 'default' && key !== '__esModule') { cjsDefaultExport[key] = cjsExports[key]; } }); } module.exports = cjsDefaultExport; }