@fixprompt/react-native 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +119 -0
- package/dist/__mocks__/async-storage.d.ts +9 -0
- package/dist/__mocks__/react-native.d.ts +11 -0
- package/dist/buffer.d.ts +23 -0
- package/dist/console.d.ts +12 -0
- package/dist/device.d.ts +7 -0
- package/dist/handlers.d.ts +7 -0
- package/dist/index.cjs +825 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +791 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +10 -0
- package/dist/init.spec.d.ts +1 -0
- package/dist/session.d.ts +12 -0
- package/dist/state.d.ts +23 -0
- package/dist/transport.d.ts +13 -0
- package/dist/types.d.ts +54 -0
- package/dist/version.d.ts +2 -0
- package/package.json +54 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../node_modules/promise/setimmediate/core.js","../node_modules/promise/setimmediate/rejection-tracking.js","../src/index.ts","../src/state.ts","../src/session.ts","../src/buffer.ts","../src/device.ts","../src/version.ts","../src/transport.ts","../src/handlers.ts","../src/console.ts","../src/init.ts"],"sourcesContent":["'use strict';\n\n\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n try {\n return obj.then;\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nfunction tryCallOne(fn, a) {\n try {\n return fn(a);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\nfunction tryCallTwo(fn, a, b) {\n try {\n fn(a, b);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n if (typeof this !== 'object') {\n throw new TypeError('Promises must be constructed via new');\n }\n if (typeof fn !== 'function') {\n throw new TypeError('Promise constructor\\'s argument is not a function');\n }\n this._x = 0;\n this._y = 0;\n this._z = null;\n this._A = null;\n if (fn === noop) return;\n doResolve(fn, this);\n}\nPromise._B = null;\nPromise._C = null;\nPromise._D = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n if (this.constructor !== Promise) {\n return safeThen(this, onFulfilled, onRejected);\n }\n var res = new Promise(noop);\n handle(this, new Handler(onFulfilled, onRejected, res));\n return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n return new self.constructor(function (resolve, reject) {\n var res = new Promise(noop);\n res.then(resolve, reject);\n handle(self, new Handler(onFulfilled, onRejected, res));\n });\n}\nfunction handle(self, deferred) {\n while (self._y === 3) {\n self = self._z;\n }\n if (Promise._B) {\n Promise._B(self);\n }\n if (self._y === 0) {\n if (self._x === 0) {\n self._x = 1;\n self._A = deferred;\n return;\n }\n if (self._x === 1) {\n self._x = 2;\n self._A = [self._A, deferred];\n return;\n }\n self._A.push(deferred);\n return;\n }\n handleResolved(self, deferred);\n}\n\nfunction handleResolved(self, deferred) {\n setImmediate(function() {\n var cb = self._y === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n if (self._y === 1) {\n resolve(deferred.promise, self._z);\n } else {\n reject(deferred.promise, self._z);\n }\n return;\n }\n var ret = tryCallOne(cb, self._z);\n if (ret === IS_ERROR) {\n reject(deferred.promise, LAST_ERROR);\n } else {\n resolve(deferred.promise, ret);\n }\n });\n}\nfunction resolve(self, newValue) {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) {\n return reject(\n self,\n new TypeError('A promise cannot be resolved with itself.')\n );\n }\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = getThen(newValue);\n if (then === IS_ERROR) {\n return reject(self, LAST_ERROR);\n }\n if (\n then === self.then &&\n newValue instanceof Promise\n ) {\n self._y = 3;\n self._z = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(then.bind(newValue), self);\n return;\n }\n }\n self._y = 1;\n self._z = newValue;\n finale(self);\n}\n\nfunction reject(self, newValue) {\n self._y = 2;\n self._z = newValue;\n if (Promise._C) {\n Promise._C(self, newValue);\n }\n finale(self);\n}\nfunction finale(self) {\n if (self._x === 1) {\n handle(self, self._A);\n self._A = null;\n }\n if (self._x === 2) {\n for (var i = 0; i < self._A.length; i++) {\n handle(self, self._A[i]);\n }\n self._A = null;\n }\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n var done = false;\n var res = tryCallTwo(fn, function (value) {\n if (done) return;\n done = true;\n resolve(promise, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(promise, reason);\n });\n if (!done && res === IS_ERROR) {\n done = true;\n reject(promise, LAST_ERROR);\n }\n}\n","'use strict';\n\nvar Promise = require('./core');\n\nvar DEFAULT_WHITELIST = [\n ReferenceError,\n TypeError,\n RangeError\n];\n\nvar enabled = false;\nexports.disable = disable;\nfunction disable() {\n enabled = false;\n Promise._B = null;\n Promise._C = null;\n}\n\nexports.enable = enable;\nfunction enable(options) {\n options = options || {};\n if (enabled) disable();\n enabled = true;\n var id = 0;\n var displayId = 0;\n var rejections = {};\n Promise._B = function (promise) {\n if (\n promise._y === 2 && // IS REJECTED\n rejections[promise._E]\n ) {\n if (rejections[promise._E].logged) {\n onHandled(promise._E);\n } else {\n clearTimeout(rejections[promise._E].timeout);\n }\n delete rejections[promise._E];\n }\n };\n Promise._C = function (promise, err) {\n if (promise._x === 0) { // not yet handled\n promise._E = id++;\n rejections[promise._E] = {\n displayId: null,\n error: err,\n timeout: setTimeout(\n onUnhandled.bind(null, promise._E),\n // For reference errors and type errors, this almost always\n // means the programmer made a mistake, so log them after just\n // 100ms\n // otherwise, wait 2 seconds to see if they get handled\n matchWhitelist(err, DEFAULT_WHITELIST)\n ? 100\n : 2000\n ),\n logged: false\n };\n }\n };\n function onUnhandled(id) {\n if (\n options.allRejections ||\n matchWhitelist(\n rejections[id].error,\n options.whitelist || DEFAULT_WHITELIST\n )\n ) {\n rejections[id].displayId = displayId++;\n if (options.onUnhandled) {\n rejections[id].logged = true;\n options.onUnhandled(\n rejections[id].displayId,\n rejections[id].error\n );\n } else {\n rejections[id].logged = true;\n logError(\n rejections[id].displayId,\n rejections[id].error\n );\n }\n }\n }\n function onHandled(id) {\n if (rejections[id].logged) {\n if (options.onHandled) {\n options.onHandled(rejections[id].displayId, rejections[id].error);\n } else if (!rejections[id].onUnhandled) {\n console.warn(\n 'Promise Rejection Handled (id: ' + rejections[id].displayId + '):'\n );\n console.warn(\n ' This means you can ignore any previous messages of the form \"Possible Unhandled Promise Rejection\" with id ' +\n rejections[id].displayId + '.'\n );\n }\n }\n }\n}\n\nfunction logError(id, error) {\n console.warn('Possible Unhandled Promise Rejection (id: ' + id + '):');\n var errStr = (error && (error.stack || error)) + '';\n errStr.split('\\n').forEach(function (line) {\n console.warn(' ' + line);\n });\n}\n\nfunction matchWhitelist(error, list) {\n return list.some(function (cls) {\n return error instanceof cls;\n });\n}","export { initFixPrompt, captureException, setUser, _resetForTests } from './init';\nexport type {\n InitOptions,\n ResolvedConfig,\n EventPayload,\n Severity,\n LogLevel,\n} from './types';\nexport { SDK_NAME, SDK_VERSION } from './version';\n","import type { ResolvedConfig } from './types';\n\nexport interface UserContext {\n id?: string;\n email?: string;\n [k: string]: any;\n}\n\ninterface CleanupHooks {\n removeErrorHandler?: () => void;\n removeRejectionHandler?: () => void;\n restoreConsoleError?: () => void;\n restoreConsoleWarn?: () => void;\n}\n\ninterface SdkState {\n initialized: boolean;\n config: ResolvedConfig | null;\n sessionId: string | null;\n deviceId: string | null;\n user: UserContext | null;\n cleanup: CleanupHooks;\n}\n\nconst STATE_KEY = '__fixprompt_rn_state__';\n\nfunction globalScope(): any {\n if (typeof globalThis !== 'undefined') return globalThis;\n return {};\n}\n\nexport function getState(): SdkState {\n const g = globalScope();\n if (!g[STATE_KEY]) {\n g[STATE_KEY] = {\n initialized: false,\n config: null,\n sessionId: null,\n deviceId: null,\n user: null,\n cleanup: {},\n } satisfies SdkState;\n }\n return g[STATE_KEY] as SdkState;\n}\n\nexport function resetStateForTests(): void {\n const g = globalScope();\n delete g[STATE_KEY];\n}\n","import AsyncStorage from '@react-native-async-storage/async-storage';\n\nconst DEVICE_KEY = '@fixprompt/device_id';\n\nfunction uuid(): string {\n if (typeof globalThis.crypto?.randomUUID === 'function') {\n return globalThis.crypto.randomUUID();\n }\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * One uuid per cold start. Lives in memory; resets when the app restarts.\n */\nexport function newSessionId(): string {\n return uuid();\n}\n\n/**\n * Stable per-device uuid. Tries expo-secure-store first (keychain-backed),\n * falls back to AsyncStorage. Generated lazily on first call.\n *\n * We deliberately don't use OS-provided device IDs (IDFV/Android ID) —\n * Apple flags them on review and they reset on reinstall anyway.\n */\nexport async function getDeviceId(): Promise<string> {\n // Optional expo-secure-store path\n try {\n // dynamic import so we don't crash when SecureStore isn't installed\n const SecureStore = await tryImport<any>('expo-secure-store');\n if (SecureStore) {\n const existing = await SecureStore.getItemAsync('fixprompt_device_id');\n if (existing) return existing;\n const fresh = uuid();\n await SecureStore.setItemAsync('fixprompt_device_id', fresh);\n return fresh;\n }\n } catch {\n // ignore — fall through to AsyncStorage\n }\n\n try {\n const existing = await AsyncStorage.getItem(DEVICE_KEY);\n if (existing) return existing;\n const fresh = uuid();\n await AsyncStorage.setItem(DEVICE_KEY, fresh);\n return fresh;\n } catch {\n // Final fallback — in-memory only (lost on reinstall)\n return uuid();\n }\n}\n\nasync function tryImport<T>(spec: string): Promise<T | null> {\n try {\n // require keeps Metro bundler quiet when the package isn't installed\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n return require(spec) as T;\n } catch {\n return null;\n }\n}\n","import AsyncStorage from '@react-native-async-storage/async-storage';\nimport type { EventPayload } from './types';\n\nconst STORAGE_KEY = '@fixprompt/buffer';\nconst MAX_BUFFER = 200;\nconst MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000;\n\ninterface BufferedEvent {\n ts: number;\n payload: EventPayload;\n}\n\n/**\n * In-memory ring buffer with AsyncStorage persistence.\n *\n * Events accumulate when the broker is unreachable (network error / 5xx /\n * timeout). On the next successful send, the whole buffer drains in order.\n * On cold start, any persisted buffer from a prior crash is replayed.\n */\nclass OfflineBuffer {\n private items: BufferedEvent[] = [];\n private loaded = false;\n private persistTimer: ReturnType<typeof setTimeout> | null = null;\n\n /** Load the persisted buffer once, on first use. */\n async load(): Promise<void> {\n if (this.loaded) return;\n this.loaded = true;\n try {\n const raw = await AsyncStorage.getItem(STORAGE_KEY);\n if (!raw) return;\n const parsed = JSON.parse(raw) as BufferedEvent[];\n const cutoff = Date.now() - MAX_AGE_MS;\n this.items = parsed.filter((e) => e?.ts > cutoff).slice(-MAX_BUFFER);\n } catch {\n this.items = [];\n }\n }\n\n push(payload: EventPayload): void {\n this.items.push({ ts: Date.now(), payload });\n if (this.items.length > MAX_BUFFER) this.items.shift();\n this.schedulePersist();\n }\n\n async drain(): Promise<EventPayload[]> {\n if (!this.loaded) await this.load();\n const out = this.items.map((e) => e.payload);\n this.items = [];\n this.schedulePersist();\n return out;\n }\n\n size(): number {\n return this.items.length;\n }\n\n private schedulePersist() {\n if (this.persistTimer) return;\n this.persistTimer = setTimeout(async () => {\n this.persistTimer = null;\n try {\n await AsyncStorage.setItem(STORAGE_KEY, JSON.stringify(this.items));\n } catch {\n // swallow — buffer survives in memory at least\n }\n }, 500);\n }\n\n /** Tests only. */\n _resetForTests(): void {\n this.items = [];\n this.loaded = false;\n if (this.persistTimer) {\n clearTimeout(this.persistTimer);\n this.persistTimer = null;\n }\n }\n}\n\nexport const offlineBuffer = new OfflineBuffer();\n","import { Platform } from 'react-native';\n\nexport interface DeviceAttrs {\n platform: string; // 'ios' | 'android' | 'web' | 'windows' | 'macos'\n os_version: string;\n /** RN runtime version (Hermes / JSC). Used for triage. */\n rn_version?: string;\n}\n\nexport function getDeviceAttrs(): DeviceAttrs {\n return {\n platform: String(Platform.OS),\n os_version: String((Platform as any).Version ?? 'unknown'),\n rn_version: (Platform as any).constants?.reactNativeVersion\n ? Object.values((Platform as any).constants.reactNativeVersion).join('.')\n : undefined,\n };\n}\n","export const SDK_NAME = '@fixprompt/react-native';\nexport const SDK_VERSION = '0.0.1';\n","import type { EventPayload, ResolvedConfig } from './types';\nimport { offlineBuffer } from './buffer';\nimport { getState } from './state';\nimport { getDeviceAttrs } from './device';\nimport { SDK_NAME, SDK_VERSION } from './version';\n\nconst REQUEST_TIMEOUT_MS = 8_000;\n\n/**\n * Sends one event. On network failure (timeout / 5xx / no-network) the event\n * gets buffered; the buffer drains on the next successful send.\n *\n * Never throws — RN apps don't want their event loop killed by a logger.\n */\nexport function sendEvent(\n config: ResolvedConfig,\n payload: Omit<EventPayload, 'service' | 'app' | 'env' | 'attrs'> & {\n attrs?: Record<string, any>;\n service?: string;\n app?: string;\n env?: string;\n },\n): void {\n const state = getState();\n\n const event: EventPayload = {\n service: payload.service ?? config.service,\n app: payload.app ?? config.app,\n env: payload.env ?? config.env,\n level: payload.level,\n message: payload.message,\n stack: payload.stack,\n attrs: {\n ...(payload.attrs ?? {}),\n ...getDeviceAttrs(),\n sdk: SDK_NAME,\n sdk_version: SDK_VERSION,\n release: config.release,\n session_id: state.sessionId,\n device_id: state.deviceId,\n user_id: state.user?.id,\n user_email: state.user?.email,\n },\n synthetic: payload.synthetic,\n };\n\n // Strip undefined attrs (broker accepts strings/numbers, not nulls/undef)\n for (const k of Object.keys(event.attrs)) {\n if (event.attrs[k] === undefined || event.attrs[k] === null) {\n delete event.attrs[k];\n }\n }\n\n void postOrBuffer(config, event);\n}\n\nasync function postOrBuffer(\n config: ResolvedConfig,\n event: EventPayload,\n): Promise<void> {\n // Always drain the buffer first so order is preserved.\n if (!(await tryPost(config, event, /* throwOnFail */ true))) {\n offlineBuffer.push(event);\n return;\n }\n\n // Successfully delivered this one — try to drain any backlog too.\n if (offlineBuffer.size() === 0) return;\n const queued = await offlineBuffer.drain();\n for (const buffered of queued) {\n if (!(await tryPost(config, buffered, true))) {\n // Re-buffer the rest including this one\n offlineBuffer.push(buffered);\n for (let i = queued.indexOf(buffered) + 1; i < queued.length; i++) {\n offlineBuffer.push(queued[i]);\n }\n return;\n }\n }\n}\n\nasync function tryPost(\n config: ResolvedConfig,\n event: EventPayload,\n throwOnFail: boolean,\n): Promise<boolean> {\n try {\n const ctrl = new AbortController();\n const timer = setTimeout(() => ctrl.abort(), REQUEST_TIMEOUT_MS);\n try {\n const res = await fetch(`${config.endpoint.replace(/\\/$/, '')}/ingest/log`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-loghub-source': config.source,\n 'x-loghub-key': config.projectKey,\n },\n body: JSON.stringify(event),\n signal: ctrl.signal,\n });\n // 4xx → bug on our side; drop, don't buffer\n if (res.status >= 400 && res.status < 500) {\n if (config.debug) {\n // eslint-disable-next-line no-console\n console.warn(`[fixprompt] ${res.status} from broker — dropping event`);\n }\n return true; // \"delivered\" in the sense that we won't re-try\n }\n return res.ok;\n } finally {\n clearTimeout(timer);\n }\n } catch (err) {\n if (config.debug) {\n // eslint-disable-next-line no-console\n console.warn(`[fixprompt] transport error: ${(err as Error).message}`);\n }\n return false;\n }\n}\n","import { sendEvent } from './transport';\nimport type { ResolvedConfig } from './types';\n\n/**\n * Returns the project's user-code stack frame (skips node_modules and the\n * SDK itself). Falls back to the raw stack.\n */\nfunction topStackFrame(stack: string | undefined): string {\n if (!stack) return '';\n for (const raw of stack.split('\\n')) {\n const line = raw.trim();\n if (!line) continue;\n if (line.startsWith('Error')) continue;\n if (/node_modules|@fixprompt/.test(line)) continue;\n return line.slice(0, 200);\n }\n return stack.split('\\n')[0]?.slice(0, 200) ?? '';\n}\n\nexport function installGlobalErrorHandler(config: ResolvedConfig): () => void {\n // ErrorUtils is a React Native global; not present in plain Node tests.\n const ErrorUtils: any = (globalThis as any).ErrorUtils;\n if (!ErrorUtils?.setGlobalHandler) {\n return () => undefined;\n }\n\n const previous = ErrorUtils.getGlobalHandler?.();\n\n const handler = (error: Error, isFatal?: boolean) => {\n try {\n sendEvent(config, {\n level: isFatal ? 'error' : 'warn',\n message: error?.message ?? 'Uncaught error',\n stack: typeof error?.stack === 'string' ? error.stack : undefined,\n attrs: {\n kind: 'rn.globalError',\n severity: isFatal ? 'critical' : 'error',\n error_name: error?.name,\n top_frame: topStackFrame(error?.stack),\n fatal: !!isFatal,\n },\n });\n } catch {\n // never let logger crash propagate\n }\n previous?.(error, isFatal);\n };\n\n ErrorUtils.setGlobalHandler(handler);\n\n return () => {\n if (previous) ErrorUtils.setGlobalHandler(previous);\n };\n}\n\n/**\n * Hook unhandled-promise-rejection tracking. Uses the bundled\n * `promise/setimmediate/rejection-tracking` module that ships with RN.\n */\nexport function installRejectionHandler(config: ResolvedConfig): () => void {\n let tracking: any;\n try {\n // RN's bundled polyfill — present on every RN runtime.\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n tracking = require('promise/setimmediate/rejection-tracking');\n } catch {\n return () => undefined;\n }\n\n tracking.enable({\n allRejections: true,\n onUnhandled: (id: string, error: unknown) => {\n try {\n const isErr = error instanceof Error;\n sendEvent(config, {\n level: 'error',\n message: isErr ? error.message : safeJson(error),\n stack: isErr && typeof error.stack === 'string' ? error.stack : undefined,\n attrs: {\n kind: 'rn.unhandledrejection',\n severity: 'error',\n error_name: isErr ? error.name : typeof error,\n top_frame: isErr ? topStackFrame(error.stack) : '',\n },\n });\n } catch {\n // ignore\n }\n },\n onHandled: () => undefined,\n });\n\n return () => {\n try {\n tracking.disable();\n } catch {\n // ignore\n }\n };\n}\n\nfunction safeJson(v: unknown): string {\n try {\n return JSON.stringify(v);\n } catch {\n return String(v);\n }\n}\n","import { sendEvent } from './transport';\nimport type { ResolvedConfig } from './types';\n\nfunction shouldCapture(args: any[], patterns: RegExp[]): boolean {\n if (patterns.length === 0) return true; // empty list = capture everything\n const first = typeof args[0] === 'string' ? args[0] : '';\n return patterns.some((re) => re.test(first));\n}\n\nfunction stringify(args: any[]): { message: string; stack?: string } {\n const errArg = args.find((a) => a instanceof Error) as Error | undefined;\n const message = args\n .map((a) => {\n if (a instanceof Error) return a.message;\n if (typeof a === 'string') return a;\n try {\n return JSON.stringify(a);\n } catch {\n return String(a);\n }\n })\n .join(' ')\n .slice(0, 4000);\n return {\n message,\n stack: errArg && typeof errArg.stack === 'string' ? errArg.stack : undefined,\n };\n}\n\n/**\n * Wrap console.error so tagged calls forward to the broker as warning-severity\n * events. The original console.error still runs (so RedBox / Metro logs still\n * show up).\n *\n * Pattern is intentional — ProofPix's existing log lines look like\n * `console.error('[Analytics] tracking failure', err)`. Devs prefix their\n * intentional captures and the broker only sees tagged ones.\n */\nexport function patchConsoleError(config: ResolvedConfig): () => void {\n const original = console.error.bind(console);\n console.error = (...args: any[]) => {\n try {\n if (shouldCapture(args, config.captureTags)) {\n const { message, stack } = stringify(args);\n sendEvent(config, {\n level: 'warn',\n message,\n stack,\n attrs: {\n kind: 'console.error',\n severity: 'warning',\n },\n });\n }\n } catch {\n // never block user logs\n }\n return original(...args);\n };\n return () => {\n console.error = original;\n };\n}\n\nexport function patchConsoleWarn(config: ResolvedConfig): () => void {\n const original = console.warn.bind(console);\n console.warn = (...args: any[]) => {\n try {\n if (shouldCapture(args, config.captureTags)) {\n const { message, stack } = stringify(args);\n sendEvent(config, {\n level: 'warn',\n message,\n stack,\n attrs: {\n kind: 'console.warn',\n severity: 'warning',\n },\n });\n }\n } catch {\n // never block\n }\n return original(...args);\n };\n return () => {\n console.warn = original;\n };\n}\n","import { getState, type UserContext } from './state';\nimport { newSessionId, getDeviceId } from './session';\nimport { installGlobalErrorHandler, installRejectionHandler } from './handlers';\nimport { patchConsoleError, patchConsoleWarn } from './console';\nimport { sendEvent } from './transport';\nimport { offlineBuffer } from './buffer';\nimport type { InitOptions, ResolvedConfig } from './types';\n\nconst DEFAULT_ENDPOINT = 'https://geosloghub-production.up.railway.app';\n\nfunction resolveConfig(opts: InitOptions): ResolvedConfig {\n if (!opts?.projectKey) throw new Error('initFixPrompt: projectKey is required');\n if (!opts?.source) throw new Error('initFixPrompt: source is required');\n if (!opts?.service) throw new Error('initFixPrompt: service is required');\n if (!opts?.app) throw new Error('initFixPrompt: app is required');\n\n return {\n projectKey: opts.projectKey,\n source: opts.source,\n endpoint: (opts.endpoint ?? DEFAULT_ENDPOINT).replace(/\\/$/, ''),\n service: opts.service,\n app: opts.app,\n env: opts.env ?? 'prod',\n release: opts.release ?? null,\n captureTags: opts.captureTags ?? [],\n patchConsoleWarn: opts.patchConsoleWarn ?? false,\n patchConsoleError: opts.patchConsoleError ?? true,\n debug: opts.debug ?? false,\n };\n}\n\nexport function initFixPrompt(opts: InitOptions): void {\n const state = getState();\n if (state.initialized) {\n if (opts?.debug) {\n // eslint-disable-next-line no-console\n console.warn('[fixprompt] already initialized — call ignored');\n }\n return;\n }\n\n const config = resolveConfig(opts);\n state.config = config;\n state.sessionId = newSessionId();\n\n state.cleanup.removeErrorHandler = installGlobalErrorHandler(config);\n state.cleanup.removeRejectionHandler = installRejectionHandler(config);\n if (config.patchConsoleError) {\n state.cleanup.restoreConsoleError = patchConsoleError(config);\n }\n if (config.patchConsoleWarn) {\n state.cleanup.restoreConsoleWarn = patchConsoleWarn(config);\n }\n\n state.initialized = true;\n\n // Resolve device id + drain any pre-init buffer, async.\n void (async () => {\n try {\n state.deviceId = await getDeviceId();\n await offlineBuffer.load();\n if (offlineBuffer.size() > 0) {\n // Triggers a drain via the transport's natural retry path.\n const items = await offlineBuffer.drain();\n for (const ev of items) {\n // Re-buffer if delivery still fails — transport handles it\n offlineBuffer.push(ev);\n }\n // Kick a drain attempt\n sendEvent(config, {\n level: 'debug',\n message: '[fixprompt] resumed from offline buffer',\n attrs: { kind: 'sdk.startup', buffered: items.length },\n });\n }\n } catch (err) {\n if (config.debug) {\n // eslint-disable-next-line no-console\n console.warn(`[fixprompt] init async setup failed: ${(err as Error).message}`);\n }\n }\n })();\n\n if (config.debug) {\n // eslint-disable-next-line no-console\n console.log('[fixprompt] initialized', {\n endpoint: config.endpoint,\n service: config.service,\n env: config.env,\n session_id: state.sessionId,\n });\n }\n}\n\nexport function captureException(\n err: unknown,\n options: { synthetic?: boolean; attrs?: Record<string, any> } = {},\n): void {\n const state = getState();\n if (!state.initialized || !state.config) return;\n const isErr = err instanceof Error;\n sendEvent(state.config, {\n level: 'error',\n message: isErr ? err.message : String(err),\n stack: isErr && typeof err.stack === 'string' ? err.stack : undefined,\n attrs: {\n kind: 'captureException',\n severity: 'error',\n error_name: isErr ? err.name : typeof err,\n ...(options.attrs ?? {}),\n },\n synthetic: options.synthetic === true,\n });\n}\n\nexport function setUser(user: UserContext | null): void {\n const state = getState();\n state.user = user;\n}\n\n/** Tests + HMR only. Not part of the supported API. @internal */\nexport function _resetForTests(): void {\n const state = getState();\n state.cleanup.removeErrorHandler?.();\n state.cleanup.removeRejectionHandler?.();\n state.cleanup.restoreConsoleError?.();\n state.cleanup.restoreConsoleWarn?.();\n state.initialized = false;\n state.config = null;\n state.sessionId = null;\n state.deviceId = null;\n state.user = null;\n state.cleanup = {};\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,8CAAAA,UAAAC,SAAA;AAAA;AAIA,aAAS,OAAO;AAAA,IAAC;AAmBjB,QAAI,aAAa;AACjB,QAAI,WAAW,CAAC;AAChB,aAAS,QAAQ,KAAK;AACpB,UAAI;AACF,eAAO,IAAI;AAAA,MACb,SAAS,IAAI;AACX,qBAAa;AACb,eAAO;AAAA,MACT;AAAA,IACF;AAEA,aAAS,WAAW,IAAI,GAAG;AACzB,UAAI;AACF,eAAO,GAAG,CAAC;AAAA,MACb,SAAS,IAAI;AACX,qBAAa;AACb,eAAO;AAAA,MACT;AAAA,IACF;AACA,aAAS,WAAW,IAAI,GAAG,GAAG;AAC5B,UAAI;AACF,WAAG,GAAG,CAAC;AAAA,MACT,SAAS,IAAI;AACX,qBAAa;AACb,eAAO;AAAA,MACT;AAAA,IACF;AAEA,IAAAA,QAAO,UAAUC;AAEjB,aAASA,SAAQ,IAAI;AACnB,UAAI,OAAO,SAAS,UAAU;AAC5B,cAAM,IAAI,UAAU,sCAAsC;AAAA,MAC5D;AACA,UAAI,OAAO,OAAO,YAAY;AAC5B,cAAM,IAAI,UAAU,kDAAmD;AAAA,MACzE;AACA,WAAK,KAAK;AACV,WAAK,KAAK;AACV,WAAK,KAAK;AACV,WAAK,KAAK;AACV,UAAI,OAAO,KAAM;AACjB,gBAAU,IAAI,IAAI;AAAA,IACpB;AACA,IAAAA,SAAQ,KAAK;AACb,IAAAA,SAAQ,KAAK;AACb,IAAAA,SAAQ,KAAK;AAEb,IAAAA,SAAQ,UAAU,OAAO,SAAS,aAAa,YAAY;AACzD,UAAI,KAAK,gBAAgBA,UAAS;AAChC,eAAO,SAAS,MAAM,aAAa,UAAU;AAAA,MAC/C;AACA,UAAI,MAAM,IAAIA,SAAQ,IAAI;AAC1B,aAAO,MAAM,IAAI,QAAQ,aAAa,YAAY,GAAG,CAAC;AACtD,aAAO;AAAA,IACT;AAEA,aAAS,SAAS,MAAM,aAAa,YAAY;AAC/C,aAAO,IAAI,KAAK,YAAY,SAAUC,UAASC,SAAQ;AACrD,YAAI,MAAM,IAAIF,SAAQ,IAAI;AAC1B,YAAI,KAAKC,UAASC,OAAM;AACxB,eAAO,MAAM,IAAI,QAAQ,aAAa,YAAY,GAAG,CAAC;AAAA,MACxD,CAAC;AAAA,IACH;AACA,aAAS,OAAO,MAAM,UAAU;AAC9B,aAAO,KAAK,OAAO,GAAG;AACpB,eAAO,KAAK;AAAA,MACd;AACA,UAAIF,SAAQ,IAAI;AACd,QAAAA,SAAQ,GAAG,IAAI;AAAA,MACjB;AACA,UAAI,KAAK,OAAO,GAAG;AACjB,YAAI,KAAK,OAAO,GAAG;AACjB,eAAK,KAAK;AACV,eAAK,KAAK;AACV;AAAA,QACF;AACA,YAAI,KAAK,OAAO,GAAG;AACjB,eAAK,KAAK;AACV,eAAK,KAAK,CAAC,KAAK,IAAI,QAAQ;AAC5B;AAAA,QACF;AACA,aAAK,GAAG,KAAK,QAAQ;AACrB;AAAA,MACF;AACA,qBAAe,MAAM,QAAQ;AAAA,IAC/B;AAEA,aAAS,eAAe,MAAM,UAAU;AACtC,mBAAa,WAAW;AACtB,YAAI,KAAK,KAAK,OAAO,IAAI,SAAS,cAAc,SAAS;AACzD,YAAI,OAAO,MAAM;AACf,cAAI,KAAK,OAAO,GAAG;AACjB,oBAAQ,SAAS,SAAS,KAAK,EAAE;AAAA,UACnC,OAAO;AACL,mBAAO,SAAS,SAAS,KAAK,EAAE;AAAA,UAClC;AACA;AAAA,QACF;AACA,YAAI,MAAM,WAAW,IAAI,KAAK,EAAE;AAChC,YAAI,QAAQ,UAAU;AACpB,iBAAO,SAAS,SAAS,UAAU;AAAA,QACrC,OAAO;AACL,kBAAQ,SAAS,SAAS,GAAG;AAAA,QAC/B;AAAA,MACF,CAAC;AAAA,IACH;AACA,aAAS,QAAQ,MAAM,UAAU;AAE/B,UAAI,aAAa,MAAM;AACrB,eAAO;AAAA,UACL;AAAA,UACA,IAAI,UAAU,2CAA2C;AAAA,QAC3D;AAAA,MACF;AACA,UACE,aACC,OAAO,aAAa,YAAY,OAAO,aAAa,aACrD;AACA,YAAI,OAAO,QAAQ,QAAQ;AAC3B,YAAI,SAAS,UAAU;AACrB,iBAAO,OAAO,MAAM,UAAU;AAAA,QAChC;AACA,YACE,SAAS,KAAK,QACd,oBAAoBA,UACpB;AACA,eAAK,KAAK;AACV,eAAK,KAAK;AACV,iBAAO,IAAI;AACX;AAAA,QACF,WAAW,OAAO,SAAS,YAAY;AACrC,oBAAU,KAAK,KAAK,QAAQ,GAAG,IAAI;AACnC;AAAA,QACF;AAAA,MACF;AACA,WAAK,KAAK;AACV,WAAK,KAAK;AACV,aAAO,IAAI;AAAA,IACb;AAEA,aAAS,OAAO,MAAM,UAAU;AAC9B,WAAK,KAAK;AACV,WAAK,KAAK;AACV,UAAIA,SAAQ,IAAI;AACd,QAAAA,SAAQ,GAAG,MAAM,QAAQ;AAAA,MAC3B;AACA,aAAO,IAAI;AAAA,IACb;AACA,aAAS,OAAO,MAAM;AACpB,UAAI,KAAK,OAAO,GAAG;AACjB,eAAO,MAAM,KAAK,EAAE;AACpB,aAAK,KAAK;AAAA,MACZ;AACA,UAAI,KAAK,OAAO,GAAG;AACjB,iBAAS,IAAI,GAAG,IAAI,KAAK,GAAG,QAAQ,KAAK;AACvC,iBAAO,MAAM,KAAK,GAAG,CAAC,CAAC;AAAA,QACzB;AACA,aAAK,KAAK;AAAA,MACZ;AAAA,IACF;AAEA,aAAS,QAAQ,aAAa,YAAY,SAAQ;AAChD,WAAK,cAAc,OAAO,gBAAgB,aAAa,cAAc;AACrE,WAAK,aAAa,OAAO,eAAe,aAAa,aAAa;AAClE,WAAK,UAAU;AAAA,IACjB;AAQA,aAAS,UAAU,IAAI,SAAS;AAC9B,UAAI,OAAO;AACX,UAAI,MAAM,WAAW,IAAI,SAAU,OAAO;AACxC,YAAI,KAAM;AACV,eAAO;AACP,gBAAQ,SAAS,KAAK;AAAA,MACxB,GAAG,SAAU,QAAQ;AACnB,YAAI,KAAM;AACV,eAAO;AACP,eAAO,SAAS,MAAM;AAAA,MACxB,CAAC;AACD,UAAI,CAAC,QAAQ,QAAQ,UAAU;AAC7B,eAAO;AACP,eAAO,SAAS,UAAU;AAAA,MAC5B;AAAA,IACF;AAAA;AAAA;;;ACpNA;AAAA,4DAAAG,UAAA;AAAA;AAEA,QAAIC,WAAU;AAEd,QAAI,oBAAoB;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,QAAI,UAAU;AACd,IAAAD,SAAQ,UAAU;AAClB,aAAS,UAAU;AACjB,gBAAU;AACV,MAAAC,SAAQ,KAAK;AACb,MAAAA,SAAQ,KAAK;AAAA,IACf;AAEA,IAAAD,SAAQ,SAAS;AACjB,aAAS,OAAO,SAAS;AACvB,gBAAU,WAAW,CAAC;AACtB,UAAI,QAAS,SAAQ;AACrB,gBAAU;AACV,UAAI,KAAK;AACT,UAAI,YAAY;AAChB,UAAI,aAAa,CAAC;AAClB,MAAAC,SAAQ,KAAK,SAAU,SAAS;AAC9B,YACE,QAAQ,OAAO;AAAA,QACf,WAAW,QAAQ,EAAE,GACrB;AACA,cAAI,WAAW,QAAQ,EAAE,EAAE,QAAQ;AACjC,sBAAU,QAAQ,EAAE;AAAA,UACtB,OAAO;AACL,yBAAa,WAAW,QAAQ,EAAE,EAAE,OAAO;AAAA,UAC7C;AACA,iBAAO,WAAW,QAAQ,EAAE;AAAA,QAC9B;AAAA,MACF;AACA,MAAAA,SAAQ,KAAK,SAAU,SAAS,KAAK;AACnC,YAAI,QAAQ,OAAO,GAAG;AACpB,kBAAQ,KAAK;AACb,qBAAW,QAAQ,EAAE,IAAI;AAAA,YACvB,WAAW;AAAA,YACX,OAAO;AAAA,YACP,SAAS;AAAA,cACP,YAAY,KAAK,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,cAKjC,eAAe,KAAK,iBAAiB,IACjC,MACA;AAAA,YACN;AAAA,YACA,QAAQ;AAAA,UACV;AAAA,QACF;AAAA,MACF;AACA,eAAS,YAAYC,KAAI;AACvB,YACE,QAAQ,iBACR;AAAA,UACE,WAAWA,GAAE,EAAE;AAAA,UACf,QAAQ,aAAa;AAAA,QACvB,GACA;AACA,qBAAWA,GAAE,EAAE,YAAY;AAC3B,cAAI,QAAQ,aAAa;AACvB,uBAAWA,GAAE,EAAE,SAAS;AACxB,oBAAQ;AAAA,cACN,WAAWA,GAAE,EAAE;AAAA,cACf,WAAWA,GAAE,EAAE;AAAA,YACjB;AAAA,UACF,OAAO;AACL,uBAAWA,GAAE,EAAE,SAAS;AACxB;AAAA,cACE,WAAWA,GAAE,EAAE;AAAA,cACf,WAAWA,GAAE,EAAE;AAAA,YACjB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,eAAS,UAAUA,KAAI;AACrB,YAAI,WAAWA,GAAE,EAAE,QAAQ;AACzB,cAAI,QAAQ,WAAW;AACrB,oBAAQ,UAAU,WAAWA,GAAE,EAAE,WAAW,WAAWA,GAAE,EAAE,KAAK;AAAA,UAClE,WAAW,CAAC,WAAWA,GAAE,EAAE,aAAa;AACtC,oBAAQ;AAAA,cACN,oCAAoC,WAAWA,GAAE,EAAE,YAAY;AAAA,YACjE;AACA,oBAAQ;AAAA,cACN,kHACA,WAAWA,GAAE,EAAE,YAAY;AAAA,YAC7B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,aAAS,SAAS,IAAI,OAAO;AAC3B,cAAQ,KAAK,+CAA+C,KAAK,IAAI;AACrE,UAAI,UAAU,UAAU,MAAM,SAAS,UAAU;AACjD,aAAO,MAAM,IAAI,EAAE,QAAQ,SAAU,MAAM;AACzC,gBAAQ,KAAK,OAAO,IAAI;AAAA,MAC1B,CAAC;AAAA,IACH;AAEA,aAAS,eAAe,OAAO,MAAM;AACnC,aAAO,KAAK,KAAK,SAAU,KAAK;AAC9B,eAAO,iBAAiB;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA;AAAA;;;AChHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACwBA,IAAM,YAAY;AAElB,SAAS,cAAmB;AAC1B,MAAI,OAAO,eAAe,YAAa,QAAO;AAC9C,SAAO,CAAC;AACV;AAEO,SAAS,WAAqB;AACnC,QAAM,IAAI,YAAY;AACtB,MAAI,CAAC,EAAE,SAAS,GAAG;AACjB,MAAE,SAAS,IAAI;AAAA,MACb,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,UAAU;AAAA,MACV,MAAM;AAAA,MACN,SAAS,CAAC;AAAA,IACZ;AAAA,EACF;AACA,SAAO,EAAE,SAAS;AACpB;;;AC5CA,2BAAyB;AAEzB,IAAM,aAAa;AAEnB,SAAS,OAAe;AACtB,MAAI,OAAO,WAAW,QAAQ,eAAe,YAAY;AACvD,WAAO,WAAW,OAAO,WAAW;AAAA,EACtC;AACA,SAAO,uCAAuC,QAAQ,SAAS,CAAC,MAAM;AACpE,UAAM,IAAK,KAAK,OAAO,IAAI,KAAM;AACjC,UAAM,IAAI,MAAM,MAAM,IAAK,IAAI,IAAO;AACtC,WAAO,EAAE,SAAS,EAAE;AAAA,EACtB,CAAC;AACH;AAKO,SAAS,eAAuB;AACrC,SAAO,KAAK;AACd;AASA,eAAsB,cAA+B;AAEnD,MAAI;AAEF,UAAM,cAAc,MAAM,UAAe,mBAAmB;AAC5D,QAAI,aAAa;AACf,YAAM,WAAW,MAAM,YAAY,aAAa,qBAAqB;AACrE,UAAI,SAAU,QAAO;AACrB,YAAM,QAAQ,KAAK;AACnB,YAAM,YAAY,aAAa,uBAAuB,KAAK;AAC3D,aAAO;AAAA,IACT;AAAA,EACF,QAAQ;AAAA,EAER;AAEA,MAAI;AACF,UAAM,WAAW,MAAM,qBAAAC,QAAa,QAAQ,UAAU;AACtD,QAAI,SAAU,QAAO;AACrB,UAAM,QAAQ,KAAK;AACnB,UAAM,qBAAAA,QAAa,QAAQ,YAAY,KAAK;AAC5C,WAAO;AAAA,EACT,QAAQ;AAEN,WAAO,KAAK;AAAA,EACd;AACF;AAEA,eAAe,UAAa,MAAiC;AAC3D,MAAI;AAGF,WAAO,QAAQ,IAAI;AAAA,EACrB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;;;ACjEA,IAAAC,wBAAyB;AAGzB,IAAM,cAAc;AACpB,IAAM,aAAa;AACnB,IAAM,aAAa,IAAI,KAAK,KAAK,KAAK;AActC,IAAM,gBAAN,MAAoB;AAAA,EAApB;AACE,SAAQ,QAAyB,CAAC;AAClC,SAAQ,SAAS;AACjB,SAAQ,eAAqD;AAAA;AAAA;AAAA,EAG7D,MAAM,OAAsB;AAC1B,QAAI,KAAK,OAAQ;AACjB,SAAK,SAAS;AACd,QAAI;AACF,YAAM,MAAM,MAAM,sBAAAC,QAAa,QAAQ,WAAW;AAClD,UAAI,CAAC,IAAK;AACV,YAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,YAAM,SAAS,KAAK,IAAI,IAAI;AAC5B,WAAK,QAAQ,OAAO,OAAO,CAAC,MAAM,GAAG,KAAK,MAAM,EAAE,MAAM,CAAC,UAAU;AAAA,IACrE,QAAQ;AACN,WAAK,QAAQ,CAAC;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,KAAK,SAA6B;AAChC,SAAK,MAAM,KAAK,EAAE,IAAI,KAAK,IAAI,GAAG,QAAQ,CAAC;AAC3C,QAAI,KAAK,MAAM,SAAS,WAAY,MAAK,MAAM,MAAM;AACrD,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEA,MAAM,QAAiC;AACrC,QAAI,CAAC,KAAK,OAAQ,OAAM,KAAK,KAAK;AAClC,UAAM,MAAM,KAAK,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO;AAC3C,SAAK,QAAQ,CAAC;AACd,SAAK,gBAAgB;AACrB,WAAO;AAAA,EACT;AAAA,EAEA,OAAe;AACb,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAEQ,kBAAkB;AACxB,QAAI,KAAK,aAAc;AACvB,SAAK,eAAe,WAAW,YAAY;AACzC,WAAK,eAAe;AACpB,UAAI;AACF,cAAM,sBAAAA,QAAa,QAAQ,aAAa,KAAK,UAAU,KAAK,KAAK,CAAC;AAAA,MACpE,QAAQ;AAAA,MAER;AAAA,IACF,GAAG,GAAG;AAAA,EACR;AAAA;AAAA,EAGA,iBAAuB;AACrB,SAAK,QAAQ,CAAC;AACd,SAAK,SAAS;AACd,QAAI,KAAK,cAAc;AACrB,mBAAa,KAAK,YAAY;AAC9B,WAAK,eAAe;AAAA,IACtB;AAAA,EACF;AACF;AAEO,IAAM,gBAAgB,IAAI,cAAc;;;AChF/C,0BAAyB;AASlB,SAAS,iBAA8B;AAC5C,SAAO;AAAA,IACL,UAAU,OAAO,6BAAS,EAAE;AAAA,IAC5B,YAAY,OAAQ,6BAAiB,WAAW,SAAS;AAAA,IACzD,YAAa,6BAAiB,WAAW,qBACrC,OAAO,OAAQ,6BAAiB,UAAU,kBAAkB,EAAE,KAAK,GAAG,IACtE;AAAA,EACN;AACF;;;ACjBO,IAAM,WAAW;AACjB,IAAM,cAAc;;;ACK3B,IAAM,qBAAqB;AAQpB,SAAS,UACd,QACA,SAMM;AACN,QAAM,QAAQ,SAAS;AAEvB,QAAM,QAAsB;AAAA,IAC1B,SAAS,QAAQ,WAAW,OAAO;AAAA,IACnC,KAAK,QAAQ,OAAO,OAAO;AAAA,IAC3B,KAAK,QAAQ,OAAO,OAAO;AAAA,IAC3B,OAAO,QAAQ;AAAA,IACf,SAAS,QAAQ;AAAA,IACjB,OAAO,QAAQ;AAAA,IACf,OAAO;AAAA,MACL,GAAI,QAAQ,SAAS,CAAC;AAAA,MACtB,GAAG,eAAe;AAAA,MAClB,KAAK;AAAA,MACL,aAAa;AAAA,MACb,SAAS,OAAO;AAAA,MAChB,YAAY,MAAM;AAAA,MAClB,WAAW,MAAM;AAAA,MACjB,SAAS,MAAM,MAAM;AAAA,MACrB,YAAY,MAAM,MAAM;AAAA,IAC1B;AAAA,IACA,WAAW,QAAQ;AAAA,EACrB;AAGA,aAAW,KAAK,OAAO,KAAK,MAAM,KAAK,GAAG;AACxC,QAAI,MAAM,MAAM,CAAC,MAAM,UAAa,MAAM,MAAM,CAAC,MAAM,MAAM;AAC3D,aAAO,MAAM,MAAM,CAAC;AAAA,IACtB;AAAA,EACF;AAEA,OAAK,aAAa,QAAQ,KAAK;AACjC;AAEA,eAAe,aACb,QACA,OACe;AAEf,MAAI,CAAE,MAAM;AAAA,IAAQ;AAAA,IAAQ;AAAA;AAAA,IAAyB;AAAA,EAAI,GAAI;AAC3D,kBAAc,KAAK,KAAK;AACxB;AAAA,EACF;AAGA,MAAI,cAAc,KAAK,MAAM,EAAG;AAChC,QAAM,SAAS,MAAM,cAAc,MAAM;AACzC,aAAW,YAAY,QAAQ;AAC7B,QAAI,CAAE,MAAM,QAAQ,QAAQ,UAAU,IAAI,GAAI;AAE5C,oBAAc,KAAK,QAAQ;AAC3B,eAAS,IAAI,OAAO,QAAQ,QAAQ,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACjE,sBAAc,KAAK,OAAO,CAAC,CAAC;AAAA,MAC9B;AACA;AAAA,IACF;AAAA,EACF;AACF;AAEA,eAAe,QACb,QACA,OACA,aACkB;AAClB,MAAI;AACF,UAAM,OAAO,IAAI,gBAAgB;AACjC,UAAM,QAAQ,WAAW,MAAM,KAAK,MAAM,GAAG,kBAAkB;AAC/D,QAAI;AACF,YAAM,MAAM,MAAM,MAAM,GAAG,OAAO,SAAS,QAAQ,OAAO,EAAE,CAAC,eAAe;AAAA,QAC1E,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,UAChB,mBAAmB,OAAO;AAAA,UAC1B,gBAAgB,OAAO;AAAA,QACzB;AAAA,QACA,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,QAAQ,KAAK;AAAA,MACf,CAAC;AAED,UAAI,IAAI,UAAU,OAAO,IAAI,SAAS,KAAK;AACzC,YAAI,OAAO,OAAO;AAEhB,kBAAQ,KAAK,eAAe,IAAI,MAAM,oCAA+B;AAAA,QACvE;AACA,eAAO;AAAA,MACT;AACA,aAAO,IAAI;AAAA,IACb,UAAE;AACA,mBAAa,KAAK;AAAA,IACpB;AAAA,EACF,SAAS,KAAK;AACZ,QAAI,OAAO,OAAO;AAEhB,cAAQ,KAAK,gCAAiC,IAAc,OAAO,EAAE;AAAA,IACvE;AACA,WAAO;AAAA,EACT;AACF;;;AChHA,SAAS,cAAc,OAAmC;AACxD,MAAI,CAAC,MAAO,QAAO;AACnB,aAAW,OAAO,MAAM,MAAM,IAAI,GAAG;AACnC,UAAM,OAAO,IAAI,KAAK;AACtB,QAAI,CAAC,KAAM;AACX,QAAI,KAAK,WAAW,OAAO,EAAG;AAC9B,QAAI,0BAA0B,KAAK,IAAI,EAAG;AAC1C,WAAO,KAAK,MAAM,GAAG,GAAG;AAAA,EAC1B;AACA,SAAO,MAAM,MAAM,IAAI,EAAE,CAAC,GAAG,MAAM,GAAG,GAAG,KAAK;AAChD;AAEO,SAAS,0BAA0B,QAAoC;AAE5E,QAAM,aAAmB,WAAmB;AAC5C,MAAI,CAAC,YAAY,kBAAkB;AACjC,WAAO,MAAM;AAAA,EACf;AAEA,QAAM,WAAW,WAAW,mBAAmB;AAE/C,QAAM,UAAU,CAAC,OAAc,YAAsB;AACnD,QAAI;AACF,gBAAU,QAAQ;AAAA,QAChB,OAAO,UAAU,UAAU;AAAA,QAC3B,SAAS,OAAO,WAAW;AAAA,QAC3B,OAAO,OAAO,OAAO,UAAU,WAAW,MAAM,QAAQ;AAAA,QACxD,OAAO;AAAA,UACL,MAAM;AAAA,UACN,UAAU,UAAU,aAAa;AAAA,UACjC,YAAY,OAAO;AAAA,UACnB,WAAW,cAAc,OAAO,KAAK;AAAA,UACrC,OAAO,CAAC,CAAC;AAAA,QACX;AAAA,MACF,CAAC;AAAA,IACH,QAAQ;AAAA,IAER;AACA,eAAW,OAAO,OAAO;AAAA,EAC3B;AAEA,aAAW,iBAAiB,OAAO;AAEnC,SAAO,MAAM;AACX,QAAI,SAAU,YAAW,iBAAiB,QAAQ;AAAA,EACpD;AACF;AAMO,SAAS,wBAAwB,QAAoC;AAC1E,MAAI;AACJ,MAAI;AAGF,eAAW;AAAA,EACb,QAAQ;AACN,WAAO,MAAM;AAAA,EACf;AAEA,WAAS,OAAO;AAAA,IACd,eAAe;AAAA,IACf,aAAa,CAAC,IAAY,UAAmB;AAC3C,UAAI;AACF,cAAM,QAAQ,iBAAiB;AAC/B,kBAAU,QAAQ;AAAA,UAChB,OAAO;AAAA,UACP,SAAS,QAAQ,MAAM,UAAU,SAAS,KAAK;AAAA,UAC/C,OAAO,SAAS,OAAO,MAAM,UAAU,WAAW,MAAM,QAAQ;AAAA,UAChE,OAAO;AAAA,YACL,MAAM;AAAA,YACN,UAAU;AAAA,YACV,YAAY,QAAQ,MAAM,OAAO,OAAO;AAAA,YACxC,WAAW,QAAQ,cAAc,MAAM,KAAK,IAAI;AAAA,UAClD;AAAA,QACF,CAAC;AAAA,MACH,QAAQ;AAAA,MAER;AAAA,IACF;AAAA,IACA,WAAW,MAAM;AAAA,EACnB,CAAC;AAED,SAAO,MAAM;AACX,QAAI;AACF,eAAS,QAAQ;AAAA,IACnB,QAAQ;AAAA,IAER;AAAA,EACF;AACF;AAEA,SAAS,SAAS,GAAoB;AACpC,MAAI;AACF,WAAO,KAAK,UAAU,CAAC;AAAA,EACzB,QAAQ;AACN,WAAO,OAAO,CAAC;AAAA,EACjB;AACF;;;ACxGA,SAAS,cAAc,MAAa,UAA6B;AAC/D,MAAI,SAAS,WAAW,EAAG,QAAO;AAClC,QAAM,QAAQ,OAAO,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC,IAAI;AACtD,SAAO,SAAS,KAAK,CAAC,OAAO,GAAG,KAAK,KAAK,CAAC;AAC7C;AAEA,SAAS,UAAU,MAAkD;AACnE,QAAM,SAAS,KAAK,KAAK,CAAC,MAAM,aAAa,KAAK;AAClD,QAAM,UAAU,KACb,IAAI,CAAC,MAAM;AACV,QAAI,aAAa,MAAO,QAAO,EAAE;AACjC,QAAI,OAAO,MAAM,SAAU,QAAO;AAClC,QAAI;AACF,aAAO,KAAK,UAAU,CAAC;AAAA,IACzB,QAAQ;AACN,aAAO,OAAO,CAAC;AAAA,IACjB;AAAA,EACF,CAAC,EACA,KAAK,GAAG,EACR,MAAM,GAAG,GAAI;AAChB,SAAO;AAAA,IACL;AAAA,IACA,OAAO,UAAU,OAAO,OAAO,UAAU,WAAW,OAAO,QAAQ;AAAA,EACrE;AACF;AAWO,SAAS,kBAAkB,QAAoC;AACpE,QAAM,WAAW,QAAQ,MAAM,KAAK,OAAO;AAC3C,UAAQ,QAAQ,IAAI,SAAgB;AAClC,QAAI;AACF,UAAI,cAAc,MAAM,OAAO,WAAW,GAAG;AAC3C,cAAM,EAAE,SAAS,MAAM,IAAI,UAAU,IAAI;AACzC,kBAAU,QAAQ;AAAA,UAChB,OAAO;AAAA,UACP;AAAA,UACA;AAAA,UACA,OAAO;AAAA,YACL,MAAM;AAAA,YACN,UAAU;AAAA,UACZ;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,QAAQ;AAAA,IAER;AACA,WAAO,SAAS,GAAG,IAAI;AAAA,EACzB;AACA,SAAO,MAAM;AACX,YAAQ,QAAQ;AAAA,EAClB;AACF;AAEO,SAAS,iBAAiB,QAAoC;AACnE,QAAM,WAAW,QAAQ,KAAK,KAAK,OAAO;AAC1C,UAAQ,OAAO,IAAI,SAAgB;AACjC,QAAI;AACF,UAAI,cAAc,MAAM,OAAO,WAAW,GAAG;AAC3C,cAAM,EAAE,SAAS,MAAM,IAAI,UAAU,IAAI;AACzC,kBAAU,QAAQ;AAAA,UAChB,OAAO;AAAA,UACP;AAAA,UACA;AAAA,UACA,OAAO;AAAA,YACL,MAAM;AAAA,YACN,UAAU;AAAA,UACZ;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,QAAQ;AAAA,IAER;AACA,WAAO,SAAS,GAAG,IAAI;AAAA,EACzB;AACA,SAAO,MAAM;AACX,YAAQ,OAAO;AAAA,EACjB;AACF;;;AChFA,IAAM,mBAAmB;AAEzB,SAAS,cAAc,MAAmC;AACxD,MAAI,CAAC,MAAM,WAAY,OAAM,IAAI,MAAM,uCAAuC;AAC9E,MAAI,CAAC,MAAM,OAAQ,OAAM,IAAI,MAAM,mCAAmC;AACtE,MAAI,CAAC,MAAM,QAAS,OAAM,IAAI,MAAM,oCAAoC;AACxE,MAAI,CAAC,MAAM,IAAK,OAAM,IAAI,MAAM,gCAAgC;AAEhE,SAAO;AAAA,IACL,YAAY,KAAK;AAAA,IACjB,QAAQ,KAAK;AAAA,IACb,WAAW,KAAK,YAAY,kBAAkB,QAAQ,OAAO,EAAE;AAAA,IAC/D,SAAS,KAAK;AAAA,IACd,KAAK,KAAK;AAAA,IACV,KAAK,KAAK,OAAO;AAAA,IACjB,SAAS,KAAK,WAAW;AAAA,IACzB,aAAa,KAAK,eAAe,CAAC;AAAA,IAClC,kBAAkB,KAAK,oBAAoB;AAAA,IAC3C,mBAAmB,KAAK,qBAAqB;AAAA,IAC7C,OAAO,KAAK,SAAS;AAAA,EACvB;AACF;AAEO,SAAS,cAAc,MAAyB;AACrD,QAAM,QAAQ,SAAS;AACvB,MAAI,MAAM,aAAa;AACrB,QAAI,MAAM,OAAO;AAEf,cAAQ,KAAK,qDAAgD;AAAA,IAC/D;AACA;AAAA,EACF;AAEA,QAAM,SAAS,cAAc,IAAI;AACjC,QAAM,SAAS;AACf,QAAM,YAAY,aAAa;AAE/B,QAAM,QAAQ,qBAAqB,0BAA0B,MAAM;AACnE,QAAM,QAAQ,yBAAyB,wBAAwB,MAAM;AACrE,MAAI,OAAO,mBAAmB;AAC5B,UAAM,QAAQ,sBAAsB,kBAAkB,MAAM;AAAA,EAC9D;AACA,MAAI,OAAO,kBAAkB;AAC3B,UAAM,QAAQ,qBAAqB,iBAAiB,MAAM;AAAA,EAC5D;AAEA,QAAM,cAAc;AAGpB,QAAM,YAAY;AAChB,QAAI;AACF,YAAM,WAAW,MAAM,YAAY;AACnC,YAAM,cAAc,KAAK;AACzB,UAAI,cAAc,KAAK,IAAI,GAAG;AAE5B,cAAM,QAAQ,MAAM,cAAc,MAAM;AACxC,mBAAW,MAAM,OAAO;AAEtB,wBAAc,KAAK,EAAE;AAAA,QACvB;AAEA,kBAAU,QAAQ;AAAA,UAChB,OAAO;AAAA,UACP,SAAS;AAAA,UACT,OAAO,EAAE,MAAM,eAAe,UAAU,MAAM,OAAO;AAAA,QACvD,CAAC;AAAA,MACH;AAAA,IACF,SAAS,KAAK;AACZ,UAAI,OAAO,OAAO;AAEhB,gBAAQ,KAAK,wCAAyC,IAAc,OAAO,EAAE;AAAA,MAC/E;AAAA,IACF;AAAA,EACF,GAAG;AAEH,MAAI,OAAO,OAAO;AAEhB,YAAQ,IAAI,2BAA2B;AAAA,MACrC,UAAU,OAAO;AAAA,MACjB,SAAS,OAAO;AAAA,MAChB,KAAK,OAAO;AAAA,MACZ,YAAY,MAAM;AAAA,IACpB,CAAC;AAAA,EACH;AACF;AAEO,SAAS,iBACd,KACA,UAAgE,CAAC,GAC3D;AACN,QAAM,QAAQ,SAAS;AACvB,MAAI,CAAC,MAAM,eAAe,CAAC,MAAM,OAAQ;AACzC,QAAM,QAAQ,eAAe;AAC7B,YAAU,MAAM,QAAQ;AAAA,IACtB,OAAO;AAAA,IACP,SAAS,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,IACzC,OAAO,SAAS,OAAO,IAAI,UAAU,WAAW,IAAI,QAAQ;AAAA,IAC5D,OAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA,MACV,YAAY,QAAQ,IAAI,OAAO,OAAO;AAAA,MACtC,GAAI,QAAQ,SAAS,CAAC;AAAA,IACxB;AAAA,IACA,WAAW,QAAQ,cAAc;AAAA,EACnC,CAAC;AACH;AAEO,SAAS,QAAQ,MAAgC;AACtD,QAAM,QAAQ,SAAS;AACvB,QAAM,OAAO;AACf;AAGO,SAAS,iBAAuB;AACrC,QAAM,QAAQ,SAAS;AACvB,QAAM,QAAQ,qBAAqB;AACnC,QAAM,QAAQ,yBAAyB;AACvC,QAAM,QAAQ,sBAAsB;AACpC,QAAM,QAAQ,qBAAqB;AACnC,QAAM,cAAc;AACpB,QAAM,SAAS;AACf,QAAM,YAAY;AAClB,QAAM,WAAW;AACjB,QAAM,OAAO;AACb,QAAM,UAAU,CAAC;AACnB;","names":["exports","module","Promise","resolve","reject","exports","Promise","id","AsyncStorage","import_async_storage","AsyncStorage"]}
|
package/dist/index.d.ts
ADDED