{"version":3,"file":"createQueuedStorage.native.mjs","sources":["../../../../src/utils/queuedStorage/createQueuedStorage.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 { DATABASE_NAME } from './constants';\nimport { getAddItemBytesSize } from './getAddItemBytesSize';\nexport const keyPrefix = `@${DATABASE_NAME}`;\nexport const createQueuedStorage = () => {\n    let currentBytesSize = 0;\n    let error;\n    const openDBPromise = new Promise((resolve, _reject) => {\n        try {\n            const asyncStorage = loadAsyncStorage();\n            getQueuedItemKeys(asyncStorage)\n                .then(keys => getQueuedItems(asyncStorage, keys))\n                .then(items => {\n                for (const item of items) {\n                    currentBytesSize += item.bytesSize;\n                }\n                return undefined;\n            })\n                .then(__ => {\n                resolve(asyncStorage);\n            });\n        }\n        catch (err) {\n            error = err;\n            resolve(undefined);\n        }\n    });\n    const getAsyncStorage = async () => {\n        const as = await openDBPromise;\n        if (!as) {\n            throw error;\n        }\n        return as;\n    };\n    const _peek = async (n) => {\n        const as = await getAsyncStorage();\n        const queuedItemKeys = await getQueuedItemKeys(as, true);\n        const keysToGetValues = queuedItemKeys.slice(0, n);\n        return getQueuedItems(as, keysToGetValues);\n    };\n    return {\n        async add(item, { dequeueBeforeEnqueue } = { dequeueBeforeEnqueue: false }) {\n            if (dequeueBeforeEnqueue) {\n                const itemsToDelete = await this.peek(1);\n                await this.delete(itemsToDelete);\n            }\n            const as = await getAsyncStorage();\n            const itemBytesSize = getAddItemBytesSize(item);\n            const key = `${keyPrefix}_${Date.now()}`;\n            const queuedItem = {\n                ...item,\n                bytesSize: itemBytesSize,\n                key,\n            };\n            await as.setItem(key, JSON.stringify(queuedItem));\n            currentBytesSize += itemBytesSize;\n        },\n        async peek(n) {\n            return _peek(n);\n        },\n        async peekAll() {\n            return _peek();\n        },\n        async delete(items) {\n            const as = await getAsyncStorage();\n            const keysToDelete = items\n                .map(item => item.key)\n                .filter((id) => id !== undefined);\n            await as.multiRemove(keysToDelete);\n            for (const item of items) {\n                currentBytesSize -= item.bytesSize;\n            }\n        },\n        async clear() {\n            const as = await getAsyncStorage();\n            const keysToDelete = await getQueuedItemKeys(as);\n            await as.multiRemove(keysToDelete);\n            currentBytesSize = 0;\n        },\n        isFull(maxBytesSizeInMiB) {\n            return currentBytesSize >= maxBytesSizeInMiB * 1024 * 1024;\n        },\n    };\n};\nconst getQueuedItemKeys = async (as, sortKeys = false) => {\n    const keys = (await as.getAllKeys()).filter(key => key.startsWith(keyPrefix));\n    return sortKeys\n        ? keys.sort((a, b) => {\n            const timestampA = a.split('_').pop();\n            const timestampB = b.split('_').pop();\n            return parseInt(timestampA) - parseInt(timestampB);\n        })\n        : keys;\n};\nconst getQueuedItems = async (as, keys) => (await as.multiGet(keys))\n    .filter((item) => item[1] !== null)\n    .map(([_, value]) => JSON.parse(value));\n"],"names":[],"mappings":"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"}