{"version":3,"file":"StorageCache.native.mjs","sources":["../../../src/Cache/StorageCache.native.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { loadAsyncStorage } from '@aws-amplify/react-native';\nimport { ConsoleLogger } from '../Logger';\nimport { defaultConfig } from './constants';\nimport { StorageCacheCommon } from './StorageCacheCommon';\nimport { getCurrentSizeKey, getCurrentTime } from './utils';\nconst logger = new ConsoleLogger('StorageCache');\nconst AsyncStorage = loadAsyncStorage();\n/*\n * Customized cache which based on the AsyncStorage with LRU implemented\n */\nexport class StorageCache extends StorageCacheCommon {\n    /**\n     * initialize the cache\n     * @param config - the configuration of the cache\n     */\n    constructor(config) {\n        super({ config, keyValueStorage: AsyncStorage });\n        this.getItem = this.getItem.bind(this);\n        this.setItem = this.setItem.bind(this);\n        this.removeItem = this.removeItem.bind(this);\n    }\n    async getAllCacheKeys(options) {\n        const { omitSizeKey } = options ?? {};\n        const keys = [];\n        for (const key of await AsyncStorage.getAllKeys()) {\n            if (omitSizeKey && key === getCurrentSizeKey(this.config.keyPrefix)) {\n                continue;\n            }\n            if (key?.startsWith(this.config.keyPrefix)) {\n                keys.push(key.substring(this.config.keyPrefix.length));\n            }\n        }\n        return keys;\n    }\n    async getAllStorageKeys() {\n        try {\n            return AsyncStorage.getAllKeys();\n        }\n        catch (e) {\n            logger.warn(`getAllKeys failed! ${e}`);\n            return [];\n        }\n    }\n    /**\n     * Return a new instance of cache with customized configuration.\n     * @param {Object} config - the customized configuration\n     * @return {Object} - the new instance of Cache\n     */\n    createInstance(config) {\n        if (!config.keyPrefix || config.keyPrefix === defaultConfig.keyPrefix) {\n            logger.error('invalid keyPrefix, setting keyPrefix with timeStamp');\n            config.keyPrefix = getCurrentTime.toString();\n        }\n        return new StorageCache(config);\n    }\n}\n"],"names":[],"mappings":";;;;;;;AAAA;AACA;AAMA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,cAAc,CAAC;AAChD,MAAM,YAAY,GAAG,gBAAgB,EAAE;AACvC;AACA;AACA;AACO,MAAM,YAAY,SAAS,kBAAkB,CAAC;AACrD;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,MAAM,EAAE;AACxB,QAAQ,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC;AACxD,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9C,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9C,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AACpD,IAAI;AACJ,IAAI,MAAM,eAAe,CAAC,OAAO,EAAE;AACnC,QAAQ,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,IAAI,EAAE;AAC7C,QAAQ,MAAM,IAAI,GAAG,EAAE;AACvB,QAAQ,KAAK,MAAM,GAAG,IAAI,MAAM,YAAY,CAAC,UAAU,EAAE,EAAE;AAC3D,YAAY,IAAI,WAAW,IAAI,GAAG,KAAK,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AACjF,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AACxD,gBAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACtE,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,MAAM,iBAAiB,GAAG;AAC9B,QAAQ,IAAI;AACZ,YAAY,OAAO,YAAY,CAAC,UAAU,EAAE;AAC5C,QAAQ;AACR,QAAQ,OAAO,CAAC,EAAE;AAClB,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,MAAM,EAAE;AAC3B,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,aAAa,CAAC,SAAS,EAAE;AAC/E,YAAY,MAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC;AAC/E,YAAY,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,QAAQ,EAAE;AACxD,QAAQ;AACR,QAAQ,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC;AACvC,IAAI;AACJ;;;;"}