File: /home/cafsindia/snap.cafsinfotech.in/node_modules/@sentry/browser/esm/transports/offline.js.map
{"version":3,"file":"offline.js","sources":["../../../../src/transports/offline.ts"],"sourcesContent":["import type { OfflineStore, OfflineTransportOptions } from '@sentry/core';\nimport { makeOfflineTransport } from '@sentry/core';\nimport type { Envelope, InternalBaseTransportOptions, Transport } from '@sentry/types';\nimport type { TextDecoderInternal } from '@sentry/utils';\nimport { parseEnvelope, serializeEnvelope } from '@sentry/utils';\n\n// 'Store', 'promisifyRequest' and 'createStore' were originally copied from the 'idb-keyval' package before being\n// modified and simplified: https://github.com/jakearchibald/idb-keyval\n//\n// At commit: 0420a704fd6cbb4225429c536b1f61112d012fca\n// Original licence:\n\n// Copyright 2016, Jake Archibald\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\ntype Store = <T>(callback: (store: IDBObjectStore) => T | PromiseLike<T>) => Promise<T>;\n\nfunction promisifyRequest<T = undefined>(request: IDBRequest<T> | IDBTransaction): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n // @ts-expect-error - file size hacks\n request.oncomplete = request.onsuccess = () => resolve(request.result);\n // @ts-expect-error - file size hacks\n request.onabort = request.onerror = () => reject(request.error);\n });\n}\n\n/** Create or open an IndexedDb store */\nexport function createStore(dbName: string, storeName: string): Store {\n const request = indexedDB.open(dbName);\n request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n const dbp = promisifyRequest(request);\n\n return callback => dbp.then(db => callback(db.transaction(storeName, 'readwrite').objectStore(storeName)));\n}\n\nfunction keys(store: IDBObjectStore): Promise<number[]> {\n return promisifyRequest(store.getAllKeys() as IDBRequest<number[]>);\n}\n\n/** Insert into the store */\nexport function insert(store: Store, value: Uint8Array | string, maxQueueSize: number): Promise<void> {\n return store(store => {\n return keys(store).then(keys => {\n if (keys.length >= maxQueueSize) {\n return;\n }\n\n // We insert with an incremented key so that the entries are popped in order\n store.put(value, Math.max(...keys, 0) + 1);\n return promisifyRequest(store.transaction);\n });\n });\n}\n\n/** Pop the oldest value from the store */\nexport function pop(store: Store): Promise<Uint8Array | string | undefined> {\n return store(store => {\n return keys(store).then(keys => {\n if (keys.length === 0) {\n return undefined;\n }\n\n return promisifyRequest(store.get(keys[0])).then(value => {\n store.delete(keys[0]);\n return promisifyRequest(store.transaction).then(() => value);\n });\n });\n });\n}\n\nexport interface BrowserOfflineTransportOptions extends OfflineTransportOptions {\n /**\n * Name of indexedDb database to store envelopes in\n * Default: 'sentry-offline'\n */\n dbName?: string;\n /**\n * Name of indexedDb object store to store envelopes in\n * Default: 'queue'\n */\n storeName?: string;\n /**\n * Maximum number of envelopes to store\n * Default: 30\n */\n maxQueueSize?: number;\n /**\n * Only required for testing on node.js\n * @ignore\n */\n textDecoder?: TextDecoderInternal;\n}\n\nfunction createIndexedDbStore(options: BrowserOfflineTransportOptions): OfflineStore {\n let store: Store | undefined;\n\n // Lazily create the store only when it's needed\n function getStore(): Store {\n if (store == undefined) {\n store = createStore(options.dbName || 'sentry-offline', options.storeName || 'queue');\n }\n\n return store;\n }\n\n return {\n insert: async (env: Envelope) => {\n try {\n const serialized = await serializeEnvelope(env, options.textEncoder);\n await insert(getStore(), serialized, options.maxQueueSize || 30);\n } catch (_) {\n //\n }\n },\n pop: async () => {\n try {\n const deserialized = await pop(getStore());\n if (deserialized) {\n return parseEnvelope(\n deserialized,\n options.textEncoder || new TextEncoder(),\n options.textDecoder || new TextDecoder(),\n );\n }\n } catch (_) {\n //\n }\n\n return undefined;\n },\n };\n}\n\nfunction makeIndexedDbOfflineTransport<T>(\n createTransport: (options: T) => Transport,\n): (options: T & BrowserOfflineTransportOptions) => Transport {\n return options => createTransport({ ...options, createStore: createIndexedDbStore });\n}\n\n/**\n * Creates a transport that uses IndexedDb to store events when offline.\n */\nexport function makeBrowserOfflineTransport<T extends InternalBaseTransportOptions>(\n createTransport: (options: T) => Transport,\n): (options: T & BrowserOfflineTransportOptions) => Transport {\n return makeIndexedDbOfflineTransport<T>(makeOfflineTransport(createTransport));\n}\n"],"names":[],"mappings":"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"}