1 line
7.3 KiB
Plaintext
1 line
7.3 KiB
Plaintext
{"version":3,"file":"Cache.mjs","sources":["../../../src/assets/cache/Cache.ts"],"sourcesContent":["import { warn } from '../../utils/logging/warn';\nimport { convertToList } from '../utils/convertToList';\n\nimport type { CacheParser } from './CacheParser';\n\n/**\n * A single Cache for all assets.\n *\n * When assets are added to the cache via set they normally are added to the cache as key-value pairs.\n *\n * With this cache, you can add parsers that will take the object and convert it to a list of assets that can be cached.\n * for example a cacheSpritesheet parser will add all of the textures found within its sprite sheet directly to the cache.\n *\n * This gives devs the flexibility to cache any type of object however we want.\n *\n * It is not intended that this class is created by developers - it is part of the Asset package.\n * This is the first major system of PixiJS' main Assets class.\n * @example\n * import { Cache } from 'pixi.js';\n *\n * Cache.set('bunny', bunnyTexture);\n * @class Cache\n * @memberof assets\n */\nclass CacheClass\n{\n private readonly _parsers: CacheParser[] = [];\n\n private readonly _cache: Map<any, any> = new Map();\n private readonly _cacheMap: Map<string, {\n keys: string[],\n cacheKeys: string[],\n }> = new Map();\n\n /** Clear all entries. */\n public reset(): void\n {\n this._cacheMap.clear();\n this._cache.clear();\n }\n\n /**\n * Check if the key exists\n * @param key - The key to check\n */\n public has(key: any): boolean\n {\n return this._cache.has(key);\n }\n\n /**\n * Fetch entry by key\n * @param key - The key of the entry to get\n */\n public get<T = any>(key: any): T\n {\n const result = this._cache.get(key);\n\n if (!result)\n {\n // #if _DEBUG\n warn(`[Assets] Asset id ${key} was not found in the Cache`);\n // #endif\n }\n\n return result as T;\n }\n\n /**\n * Set a value by key or keys name\n * @param key - The key or keys to set\n * @param value - The value to store in the cache or from which cacheable assets will be derived.\n */\n public set(key: any | any[], value: unknown): void\n {\n const keys = convertToList<string>(key);\n\n let cacheableAssets: Record<string, any>;\n\n for (let i = 0; i < this.parsers.length; i++)\n {\n const parser = this.parsers[i];\n\n if (parser.test(value))\n {\n cacheableAssets = parser.getCacheableAssets(keys, value);\n\n break;\n }\n }\n\n // convert cacheable assets to a map of key-value pairs\n const cacheableMap = new Map(Object.entries(cacheableAssets || {}));\n\n if (!cacheableAssets)\n {\n keys.forEach((key) =>\n {\n cacheableMap.set(key, value);\n });\n }\n\n const cacheKeys = [...cacheableMap.keys()];\n\n const cachedAssets = {\n cacheKeys,\n keys\n };\n\n // this is so we can remove them later..\n keys.forEach((key) =>\n {\n this._cacheMap.set(key, cachedAssets as any);\n });\n\n cacheKeys.forEach((key) =>\n {\n const val = cacheableAssets ? cacheableAssets[key] : value;\n\n if (this._cache.has(key) && this._cache.get(key) !== val)\n {\n // #if _DEBUG\n warn('[Cache] already has key:', key);\n // #endif\n }\n\n this._cache.set(key, cacheableMap.get(key));\n });\n }\n\n /**\n * Remove entry by key\n *\n * This function will also remove any associated alias from the cache also.\n * @param key - The key of the entry to remove\n */\n public remove(key: any): void\n {\n if (!this._cacheMap.has(key))\n {\n // #if _DEBUG\n warn(`[Assets] Asset id ${key} was not found in the Cache`);\n // #endif\n\n return;\n }\n\n const cacheMap = this._cacheMap.get(key);\n\n const cacheKeys = cacheMap.cacheKeys;\n\n cacheKeys.forEach((key) =>\n {\n this._cache.delete(key);\n });\n\n cacheMap.keys.forEach((key: string) =>\n {\n this._cacheMap.delete(key);\n });\n }\n\n /** All loader parsers registered */\n public get parsers(): CacheParser[]\n {\n return this._parsers;\n }\n}\n\nexport const Cache = new CacheClass();\n"],"names":["key"],"mappings":"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"} |