tw-merge
Version:
Merge CSS utility classes without style conflicts - small and zero config
1 lines • 2.71 kB
Source Map (JSON)
{"version":3,"file":"create-lru-cache.mjs","sources":["../../src/lib/create-lru-cache.ts"],"sourcesContent":["interface LruCache<Key, Value> {\n get(key: Key): Value | undefined;\n set(key: Key, value: Value): Value;\n}\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nexport function createLruCache<Key, Value>(\n maxCacheSize: number\n): LruCache<Key, Value> {\n if (maxCacheSize < 1)\n return { get: () => undefined, set: (_, value) => value };\n\n let cacheSize = 0;\n let cache = new Map<Key, Value>();\n let previousCache = new Map<Key, Value>();\n\n function update(key: Key, value: Value) {\n cache.set(key, value);\n cacheSize++;\n\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n }\n\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) return value;\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) cache.set(key, value);\n else update(key, value);\n return value;\n },\n };\n}\n"],"names":["createLruCache","maxCacheSize","get","undefined","set","_","value","cacheSize","cache","Map","previousCache","update","key","has"],"mappings":"AAKA;AACM,SAAUA,cAAc,CAC5BC,YAAoB,EAAA;AAEpB,EAAA,IAAIA,YAAY,GAAG,CAAC,EAClB,OAAO;AAAEC,IAAAA,GAAG,EAAE,SAAA,GAAA,GAAA;AAAA,MAAA,OAAMC,SAAS,CAAA;AAAA,KAAA;AAAEC,IAAAA,GAAG,EAAE,SAAA,GAAA,CAACC,CAAC,EAAEC,KAAK,EAAA;AAAA,MAAA,OAAKA,KAAK,CAAA;AAAA,KAAA;GAAE,CAAA;EAE3D,IAAIC,SAAS,GAAG,CAAC,CAAA;AACjB,EAAA,IAAIC,KAAK,GAAG,IAAIC,GAAG,EAAc,CAAA;AACjC,EAAA,IAAIC,aAAa,GAAG,IAAID,GAAG,EAAc,CAAA;AAEzC,EAAA,SAASE,MAAM,CAACC,GAAQ,EAAEN,KAAY,EAAA;AACpCE,IAAAA,KAAK,CAACJ,GAAG,CAACQ,GAAG,EAAEN,KAAK,CAAC,CAAA;AACrBC,IAAAA,SAAS,EAAE,CAAA;IAEX,IAAIA,SAAS,GAAGN,YAAY,EAAE;AAC5BM,MAAAA,SAAS,GAAG,CAAC,CAAA;AACbG,MAAAA,aAAa,GAAGF,KAAK,CAAA;MACrBA,KAAK,GAAG,IAAIC,GAAG,EAAE,CAAA;AAClB,KAAA;AACH,GAAA;EAEA,OAAO;IACLP,GAAG,EAAA,SAAA,GAAA,CAACU,GAAG,EAAA;AACL,MAAA,IAAIN,KAAK,GAAGE,KAAK,CAACN,GAAG,CAACU,GAAG,CAAC,CAAA;AAC1B,MAAA,IAAIN,KAAK,KAAKH,SAAS,EAAE,OAAOG,KAAK,CAAA;MACrC,IAAI,CAACA,KAAK,GAAGI,aAAa,CAACR,GAAG,CAACU,GAAG,CAAC,MAAMT,SAAS,EAAE;AAClDQ,QAAAA,MAAM,CAACC,GAAG,EAAEN,KAAK,CAAC,CAAA;AAClB,QAAA,OAAOA,KAAK,CAAA;AACb,OAAA;KACF;AACDF,IAAAA,GAAG,EAACQ,SAAAA,GAAAA,CAAAA,GAAG,EAAEN,KAAK,EAAA;MACZ,IAAIE,KAAK,CAACK,GAAG,CAACD,GAAG,CAAC,EAAEJ,KAAK,CAACJ,GAAG,CAACQ,GAAG,EAAEN,KAAK,CAAC,CAAC,KACrCK,MAAM,CAACC,GAAG,EAAEN,KAAK,CAAC,CAAA;AACvB,MAAA,OAAOA,KAAK,CAAA;AACd,KAAA;GACD,CAAA;AACH;;;;"}