UNPKG

@microsoft/teams.common

Version:

<p> <a href="https://www.npmjs.com/package/@microsoft/teams.common" target="_blank"> <img src="https://img.shields.io/npm/v/@microsoft/teams.common" /> </a> <a href="https://www.npmjs.com/package/@microsoft/teams.common?activeTab=code"

1 lines 4.21 kB
{"version":3,"sources":["../../src/storage/local-storage.ts"],"names":[],"mappings":"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","file":"local-storage.mjs","sourcesContent":["import { IStorage } from './storage';\n\nexport type LocalStorageOptions = {\n /**\n * max number of records.\n */\n readonly max?: number;\n};\n\nexport class LocalStorage<T = any> implements IStorage<string, T> {\n protected readonly _store: Map<string, T>;\n protected readonly _keys: string[];\n protected readonly _options: LocalStorageOptions;\n\n get keys() {\n return this._keys;\n }\n\n get size() {\n return this._store.size;\n }\n\n constructor(data: Record<string, T> = {}, options: LocalStorageOptions = {}) {\n this._store = new Map<string, T>(Object.entries(data));\n this._keys = Object.keys(data);\n this._options = options;\n }\n\n get(key: string) {\n this._hit(key);\n return this._store.get(key);\n }\n\n set(key: string, value: T) {\n if (!this._hit(key)) {\n this._keys.push(key);\n }\n\n if (this._options.max) {\n if (this._keys.length > this._options.max) {\n const k = this._keys.shift();\n\n if (k) {\n this._store.delete(k);\n }\n }\n }\n\n this._store.set(key, value);\n }\n\n delete(key: string) {\n const i = this._keys.findIndex((k) => key === k);\n\n if (i > -1) {\n this._keys.splice(i, 1);\n }\n\n this._store.delete(key);\n }\n\n toString() {\n return JSON.stringify(\n Array.from(this._store.entries()).map(([key, value]) => ({\n key,\n value,\n })),\n null,\n 2\n );\n }\n\n protected _hit(key: string) {\n if (!this._store.has(key)) return false;\n if (this._keys[this._keys.length - 1] === key) return true;\n\n const idx = this._keys.findIndex((k) => key === k);\n\n /* istanbul ignore next */\n if (idx < 0) return false;\n\n for (let i = idx + 1; i < this._keys.length; i++) {\n const tmp = this._keys[i - 1];\n this._keys[i - 1] = this._keys[i];\n this._keys[i] = tmp;\n }\n\n return true;\n }\n}\n"]}