@panoptic-eng/sdk 1.0.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["obj: {\n [key: string]:\n | Record<string, any>\n | string\n | readonly string[]\n | boolean\n | number\n | bigint\n | undefined\n }","options: { casing: 'kebab' | 'snake' }","flag","str: string","args?: AnvilArgs","port: number","#setup","#cleanup","#focused","#setup","#cleanup","#online","#gcTimeout","#abortSignalConsumed","#defaultOptions","#cache","#initialState","#retryer","#dispatch","#revertState","getDefaultState","#queries","#mutationCache","#observers","#retryer","#dispatch","#mutations","#mutationId","#queryCache","#mutationCache","#defaultOptions","#queryDefaults","#mutationDefaults","#mountCount","#unsubscribeFocus","#unsubscribeOnline","alice: Address","bob: Address","charlie: Address"],"sources":["../../src/test/test-utils.ts","../../../../node_modules/.pnpm/@tanstack+query-core@5.45.0/node_modules/@tanstack/query-core/build/modern/subscribable.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.45.0/node_modules/@tanstack/query-core/build/modern/utils.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.45.0/node_modules/@tanstack/query-core/build/modern/focusManager.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.45.0/node_modules/@tanstack/query-core/build/modern/onlineManager.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.45.0/node_modules/@tanstack/query-core/build/modern/retryer.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.45.0/node_modules/@tanstack/query-core/build/modern/notifyManager.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.45.0/node_modules/@tanstack/query-core/build/modern/removable.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.45.0/node_modules/@tanstack/query-core/build/modern/query.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.45.0/node_modules/@tanstack/query-core/build/modern/queryCache.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.45.0/node_modules/@tanstack/query-core/build/modern/mutation.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.45.0/node_modules/@tanstack/query-core/build/modern/mutationCache.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.45.0/node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.45.0/node_modules/@tanstack/query-core/build/modern/queryClient.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.45.1_react@18.3.0-canary-c3048aab4-20240326/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js","../../src/test/react-test-utils.tsx","../../src/test/test-accounts.ts"],"sourcesContent":["/* eslint-disable no-console -- the console message are necessary to provide human-readable output to test runners */\nimport { exec, execSync, spawn } from 'node:child_process'\n\n/**\n * Converts an object of options to an array of command line arguments.\n *\n * @param options The options object.\n * @returns The command line arguments.\n */\nfunction toArgs(\n obj: {\n [key: string]:\n | Record<string, any>\n | string\n | readonly string[]\n | boolean\n | number\n | bigint\n | undefined\n },\n options: { casing: 'kebab' | 'snake' } = { casing: 'kebab' },\n) {\n const { casing } = options\n return Object.entries(obj).flatMap(([key, value]) => {\n if (value === undefined) return []\n\n if (Array.isArray(value)) return [toFlagCase(key), value.join(',')]\n\n if (typeof value === 'object' && value !== null) {\n return Object.entries(value).flatMap(([subKey, subValue]) => {\n if (subValue === undefined) return []\n const flag = toFlagCase(`${key}.${subKey}`, casing === 'kebab' ? '-' : '_')\n return [flag, Array.isArray(subValue) ? subValue.join(',') : subValue]\n })\n }\n\n const flag = toFlagCase(key, casing === 'kebab' ? '-' : '_')\n\n if (value === false) return [flag, 'false']\n if (value === true) return [flag]\n\n const stringified = value.toString()\n if (stringified === '') return [flag]\n\n return [flag, stringified]\n })\n}\n\n/** Converts to a --flag-case string. */\nfunction toFlagCase(str: string, separator = '-') {\n const keys = []\n for (let i = 0; i < str.split('.').length; i++) {\n const key = str.split('.')[i]\n if (!key) continue\n keys.push(\n key\n .replace(/\\s+/g, separator)\n .replace(/([a-z])([A-Z])/g, `$1${separator}$2`)\n .toLowerCase(),\n )\n }\n return `--${keys.join('.')}`\n}\n\n// Relevant prior work:\n// https://github.com/wevm/prool/blob/7016a5be99937715da8356e4cade6de03a8496e0/src/instances/anvil.ts#L5\n// https://github.com/morpho-org/sdks/blob/main/packages/test/src/anvil.ts\nexport const spawnAnvil = (args?: AnvilArgs) => {\n return new Promise<void>((resolve, reject) => {\n const subprocess = spawn(\n 'anvil',\n toArgs({\n // Use newly generated mnemonic to avoid drainers deployed on mainnet and delegated to by default anvil accounts (https://getfoundry.sh/anvil/overview/#eip-7702-and-default-accounts)\n ...args,\n }),\n // [\n // `--fork-url`,\n // `https://eth-mainnet.g.alchemy.com/v2/${process.env.ALCHEMY_API_KEY}`,\n // `--chain-id`,\n // `31337`,\n // `-vvvvv`,\n // `--no-cors`,\n // `--fork-block-number`,\n // `23146780`,\n // ]\n )\n\n subprocess.stdout.on('data', (data) => {\n process.stdout.write(data)\n if (data.toString().includes('Listening on')) {\n process.stdout.write(data)\n console.log(data.toString())\n resolve()\n }\n })\n\n subprocess.stderr.on('data', (data) => {\n process.stderr.write(data)\n })\n\n subprocess.on('exit', (code) => {\n if (code !== 0) {\n console.error(`Child process exited with code ${code}`)\n reject(new Error(`Anvil process exited with code ${code}`))\n }\n })\n\n subprocess.on('error', (err) => {\n console.error('Failed to start child process:', err)\n reject(err)\n })\n })\n}\n\nexport const killAnvilProcess = async (port: number) => {\n try {\n const data = execSync(`lsof -iTCP:${port} -sTCP:LISTEN -t`)\n\n const pids = data.toString().split('\\n').slice(0, -1)\n\n console.debug(`Clearing ports: ${pids.join(', ')}`)\n\n for (const pid of pids) {\n exec(`kill -9 ${pid}`, (error) => {\n if (error) console.error(`Error while killing ${pid}: ${error}`)\n })\n }\n } catch (e) {\n console.error('Cleanup error: ', (e as any).toString())\n }\n}\n\nexport const killAllAnvilProcesses = async () => {\n try {\n const data = execSync('lsof -c anvil -t')\n\n const pids = data.toString().split('\\n').slice(0, -1)\n\n console.debug(`Clearing ports: ${pids.join(', ')}`)\n\n for (const pid of pids) {\n exec(`kill -9 ${pid}`, (error) => {\n if (error) console.error(`Error while killing ${pid}: ${error}`)\n })\n }\n } catch (e) {\n console.error('Cleanup error: ', (e as any).toString())\n }\n}\n\ntype AnvilArgs = {\n /**\n * Number of dev accounts to generate and configure.\n *\n * @defaultValue 10\n */\n accounts?: number | undefined\n /**\n * Set the Access-Control-Allow-Origin response header (CORS).\n *\n * @defaultValue *\n */\n allowOrigin?: string | undefined\n /**\n * Enable autoImpersonate on startup\n */\n autoImpersonate?: boolean | undefined\n /**\n * The balance of every dev account in Ether.\n *\n * @defaultValue 10000\n */\n balance?: number | bigint | undefined\n /**\n * The base fee in a block.\n */\n blockBaseFeePerGas?: number | bigint | undefined\n /**\n * Block time in seconds for interval mining.\n */\n blockTime?: number | undefined\n /**\n * Path or alias to the Anvil binary.\n */\n binary?: string | undefined\n /**\n * The chain id.\n */\n chainId?: number | undefined\n /**\n * EIP-170: Contract code size limit in bytes. Useful to increase this because of tests.\n *\n * @defaultValue 0x6000 (~25kb)\n */\n codeSizeLimit?: number | undefined\n /**\n * Sets the number of assumed available compute units per second for this fork provider.\n *\n * @defaultValue 350\n * @see https://github.com/alchemyplatform/alchemy-docs/blob/master/documentation/compute-units.md#rate-limits-cups\n */\n computeUnitsPerSecond?: number | undefined\n /**\n * Writes output of `anvil` as json to user-specified file.\n */\n configOut?: string | undefined\n /**\n * Sets the derivation path of the child key to be derived.\n *\n * @defaultValue m/44'/60'/0'/0/\n */\n derivationPath?: string | undefined\n /**\n * Disable the `call.gas_limit <= block.gas_limit` constraint.\n */\n disableBlockGasLimit?: boolean | undefined\n /**\n * Dump the state of chain on exit to the given file. If the value is a directory, the state will be\n * written to `<VALUE>/state.json`.\n */\n dumpState?: string | undefined\n /**\n * Fetch state over a remote endpoint instead of starting from an empty state.\n *\n * If you want to fetch state from a specific block number, add a block number like `http://localhost:8545@1400000`\n * or use the `forkBlockNumber` option.\n */\n forkUrl?: string | undefined\n /**\n * Fetch state from a specific block number over a remote endpoint.\n *\n * Requires `forkUrl` to be set.\n */\n forkBlockNumber?: number | bigint | undefined\n /**\n * Specify chain id to skip fetching it from remote endpoint. This enables offline-start mode.\n *\n * You still must pass both `forkUrl` and `forkBlockNumber`, and already have your required state cached\n * on disk, anything missing locally would be fetched from the remote.\n */\n forkChainId?: number | undefined\n /**\n * Specify headers to send along with any request to the remote JSON-RPC server in forking mode.\n *\n * e.g. \"User-Agent: test-agent\"\n *\n * Requires `forkUrl` to be set.\n */\n forkHeader?: Record<string, string> | undefined\n /**\n * Initial retry backoff on encountering errors.\n */\n forkRetryBackoff?: number | undefined\n /**\n * The block gas limit.\n */\n gasLimit?: number | bigint | undefined\n /**\n * The gas price.\n */\n gasPrice?: number | bigint | undefined\n /**\n * The EVM hardfork to use.\n */\n hardfork?:\n | 'Frontier'\n | 'Homestead'\n | 'Dao'\n | 'Tangerine'\n | 'SpuriousDragon'\n | 'Byzantium'\n | 'Constantinople'\n | 'Petersburg'\n | 'Istanbul'\n | 'Muirglacier'\n | 'Berlin'\n | 'London'\n | 'ArrowGlacier'\n | 'GrayGlacier'\n | 'Paris'\n | 'Shanghai'\n | 'Cancun'\n | 'Prague'\n | 'Latest'\n | undefined\n /**\n * The host the server will listen on.\n */\n host?: string | undefined\n /**\n * Initialize the genesis block with the given `genesis.json` file.\n */\n init?: string | undefined\n /**\n * Launch an ipc server at the given path or default path = `/tmp/anvil.ipc`.\n */\n ipc?: string | undefined\n /**\n * Initialize the chain from a previously saved state snapshot.\n */\n loadState?: string | undefined\n /**\n * BIP39 mnemonic phrase used for generating accounts.\n */\n mnemonic?: string | undefined\n /**\n * Automatically generates a BIP39 mnemonic phrase, and derives accounts from it.\n */\n mnemonicRandom?: boolean | undefined\n /**\n * Disable CORS.\n */\n noCors?: boolean | undefined\n /**\n * Disable auto and interval mining, and mine on demand instead.\n */\n noMining?: boolean | undefined\n /**\n * Disables rate limiting for this node's provider.\n *\n * @defaultValue false\n * @see https://github.com/alchemyplatform/alchemy-docs/blob/master/documentation/compute-units.md#rate-limits-cups\n */\n noRateLimit?: boolean | undefined\n /**\n * Explicitly disables the use of RPC caching.\n *\n * All storage slots are read entirely from the endpoint.\n */\n noStorageCaching?: boolean | undefined\n /**\n * How transactions are sorted in the mempool.\n *\n * @defaultValue fees\n */\n order?: string | undefined\n /**\n * Run an Optimism chain.\n */\n optimism?: boolean | undefined\n /**\n * Port number to listen on.\n *\n * @defaultValue 8545\n */\n port?: number | undefined\n /**\n * Don't keep full chain history. If a number argument is specified, at most this number of states is kept in memory.\n */\n pruneHistory?: number | undefined | boolean\n /**\n * Number of retry requests for spurious networks (timed out requests).\n *\n * @defaultValue 5\n */\n retries?: number | undefined\n /**\n * Don't print anything on startup and don't print logs.\n */\n silent?: boolean | undefined\n /**\n * Slots in an epoch.\n */\n slotsInAnEpoch?: number | undefined\n /**\n * Enable steps tracing used for debug calls returning geth-style traces.\n */\n stepsTracing?: boolean | undefined\n /**\n * Interval in seconds at which the status is to be dumped to disk.\n */\n stateInterval?: number | undefined\n /**\n * This is an alias for both `loadState` and `dumpState`. It initializes the chain with the state stored at the\n * file, if it exists, and dumps the chain's state on exit\n */\n state?: string | undefined\n /**\n * Timeout in ms for requests sent to remote JSON-RPC server in forking mode.\n *\n * @defaultValue 45000\n */\n timeout?: number | undefined\n /**\n * The timestamp of the genesis block.\n */\n timestamp?: number | bigint | undefined\n /**\n * Number of blocks with transactions to keep in memory.\n */\n transactionBlockKeeper?: number | undefined\n}\n","// src/subscribable.ts\nvar Subscribable = class {\n constructor() {\n this.listeners = /* @__PURE__ */ new Set();\n this.subscribe = this.subscribe.bind(this);\n }\n subscribe(listener) {\n this.listeners.add(listener);\n this.onSubscribe();\n return () => {\n this.listeners.delete(listener);\n this.onUnsubscribe();\n };\n }\n hasListeners() {\n return this.listeners.size > 0;\n }\n onSubscribe() {\n }\n onUnsubscribe() {\n }\n};\nexport {\n Subscribable\n};\n//# sourceMappingURL=subscribable.js.map","// src/utils.ts\nvar isServer = typeof window === \"undefined\" || \"Deno\" in globalThis;\nfunction noop() {\n return void 0;\n}\nfunction functionalUpdate(updater, input) {\n return typeof updater === \"function\" ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n return typeof value === \"number\" && value >= 0 && value !== Infinity;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction resolveStaleTime(staleTime, query) {\n return typeof staleTime === \"function\" ? staleTime(query) : staleTime;\n}\nfunction matchQuery(filters, query) {\n const {\n type = \"all\",\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale\n } = filters;\n if (queryKey) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false;\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false;\n }\n }\n if (type !== \"all\") {\n const isActive = query.isActive();\n if (type === \"active\" && !isActive) {\n return false;\n }\n if (type === \"inactive\" && isActive) {\n return false;\n }\n }\n if (typeof stale === \"boolean\" && query.isStale() !== stale) {\n return false;\n }\n if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n return false;\n }\n if (predicate && !predicate(query)) {\n return false;\n }\n return true;\n}\nfunction matchMutation(filters, mutation) {\n const { exact, status, predicate, mutationKey } = filters;\n if (mutationKey) {\n if (!mutation.options.mutationKey) {\n return false;\n }\n if (exact) {\n if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n return false;\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false;\n }\n }\n if (status && mutation.state.status !== status) {\n return false;\n }\n if (predicate && !predicate(mutation)) {\n return false;\n }\n return true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n const hashFn = options?.queryKeyHashFn || hashKey;\n return hashFn(queryKey);\n}\nfunction hashKey(queryKey) {\n return JSON.stringify(\n queryKey,\n (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n result[key] = val[key];\n return result;\n }, {}) : val\n );\n}\nfunction partialMatchKey(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n return !Object.keys(b).some((key) => !partialMatchKey(a[key], b[key]));\n }\n return false;\n}\nfunction replaceEqualDeep(a, b) {\n if (a === b) {\n return a;\n }\n const array = isPlainArray(a) && isPlainArray(b);\n if (array || isPlainObject(a) && isPlainObject(b)) {\n const aItems = array ? a : Object.keys(a);\n const aSize = aItems.length;\n const bItems = array ? b : Object.keys(b);\n const bSize = bItems.length;\n const copy = array ? [] : {};\n let equalItems = 0;\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i];\n if ((!array && aItems.includes(key) || array) && a[key] === void 0 && b[key] === void 0) {\n copy[key] = void 0;\n equalItems++;\n } else {\n copy[key] = replaceEqualDeep(a[key], b[key]);\n if (copy[key] === a[key] && a[key] !== void 0) {\n equalItems++;\n }\n }\n }\n return aSize === bSize && equalItems === aSize ? a : copy;\n }\n return b;\n}\nfunction shallowEqualObjects(a, b) {\n if (!b || Object.keys(a).length !== Object.keys(b).length) {\n return false;\n }\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n}\nfunction isPlainArray(value) {\n return Array.isArray(value) && value.length === Object.keys(value).length;\n}\nfunction isPlainObject(o) {\n if (!hasObjectPrototype(o)) {\n return false;\n }\n const ctor = o.constructor;\n if (ctor === void 0) {\n return true;\n }\n const prot = ctor.prototype;\n if (!hasObjectPrototype(prot)) {\n return false;\n }\n if (!prot.hasOwnProperty(\"isPrototypeOf\")) {\n return false;\n }\n if (Object.getPrototypeOf(o) !== Object.prototype) {\n return false;\n }\n return true;\n}\nfunction hasObjectPrototype(o) {\n return Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction sleep(ms) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\nfunction replaceData(prevData, data, options) {\n if (typeof options.structuralSharing === \"function\") {\n return options.structuralSharing(prevData, data);\n } else if (options.structuralSharing !== false) {\n return replaceEqualDeep(prevData, data);\n }\n return data;\n}\nfunction keepPreviousData(previousData) {\n return previousData;\n}\nfunction addToEnd(items, item, max = 0) {\n const newItems = [...items, item];\n return max && newItems.length > max ? newItems.slice(1) : newItems;\n}\nfunction addToStart(items, item, max = 0) {\n const newItems = [item, ...items];\n return max && newItems.length > max ? newItems.slice(0, -1) : newItems;\n}\nvar skipToken = Symbol();\nvar ensureQueryFn = (options, fetchOptions) => {\n if (process.env.NODE_ENV !== \"production\") {\n if (options.queryFn === skipToken) {\n console.error(\n `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`\n );\n }\n }\n if (!options.queryFn && fetchOptions?.initialPromise) {\n return () => fetchOptions.initialPromise;\n }\n if (!options.queryFn || options.queryFn === skipToken) {\n return () => Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`));\n }\n return options.queryFn;\n};\nexport {\n addToEnd,\n addToStart,\n ensureQueryFn,\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n isPlainArray,\n isPlainObject,\n isServer,\n isValidTimeout,\n keepPreviousData,\n matchMutation,\n matchQuery,\n noop,\n partialMatchKey,\n replaceData,\n replaceEqualDeep,\n resolveStaleTime,\n shallowEqualObjects,\n skipToken,\n sleep,\n timeUntilStale\n};\n//# sourceMappingURL=utils.js.map","// src/focusManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar FocusManager = class extends Subscribable {\n #focused;\n #cleanup;\n #setup;\n constructor() {\n super();\n this.#setup = (onFocus) => {\n if (!isServer && window.addEventListener) {\n const listener = () => onFocus();\n window.addEventListener(\"visibilitychange\", listener, false);\n return () => {\n window.removeEventListener(\"visibilitychange\", listener);\n };\n }\n return;\n };\n }\n onSubscribe() {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.();\n this.#cleanup = void 0;\n }\n }\n setEventListener(setup) {\n this.#setup = setup;\n this.#cleanup?.();\n this.#cleanup = setup((focused) => {\n if (typeof focused === \"boolean\") {\n this.setFocused(focused);\n } else {\n this.onFocus();\n }\n });\n }\n setFocused(focused) {\n const changed = this.#focused !== focused;\n if (changed) {\n this.#focused = focused;\n this.onFocus();\n }\n }\n onFocus() {\n const isFocused = this.isFocused();\n this.listeners.forEach((listener) => {\n listener(isFocused);\n });\n }\n isFocused() {\n if (typeof this.#focused === \"boolean\") {\n return this.#focused;\n }\n return globalThis.document?.visibilityState !== \"hidden\";\n }\n};\nvar focusManager = new FocusManager();\nexport {\n FocusManager,\n focusManager\n};\n//# sourceMappingURL=focusManager.js.map","// src/onlineManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar OnlineManager = class extends Subscribable {\n #online = true;\n #cleanup;\n #setup;\n constructor() {\n super();\n this.#setup = (onOnline) => {\n if (!isServer && window.addEventListener) {\n const onlineListener = () => onOnline(true);\n const offlineListener = () => onOnline(false);\n window.addEventListener(\"online\", onlineListener, false);\n window.addEventListener(\"offline\", offlineListener, false);\n return () => {\n window.removeEventListener(\"online\", onlineListener);\n window.removeEventListener(\"offline\", offlineListener);\n };\n }\n return;\n };\n }\n onSubscribe() {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.();\n this.#cleanup = void 0;\n }\n }\n setEventListener(setup) {\n this.#setup = setup;\n this.#cleanup?.();\n this.#cleanup = setup(this.setOnline.bind(this));\n }\n setOnline(online) {\n const changed = this.#online !== online;\n if (changed) {\n this.#online = online;\n this.listeners.forEach((listener) => {\n listener(online);\n });\n }\n }\n isOnline() {\n return this.#online;\n }\n};\nvar onlineManager = new OnlineManager();\nexport {\n OnlineManager,\n onlineManager\n};\n//# sourceMappingURL=onlineManager.js.map","// src/retryer.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { isServer, sleep } from \"./utils.js\";\nfunction defaultRetryDelay(failureCount) {\n return Math.min(1e3 * 2 ** failureCount, 3e4);\n}\nfunction canFetch(networkMode) {\n return (networkMode ?? \"online\") === \"online\" ? onlineManager.isOnline() : true;\n}\nvar CancelledError = class {\n constructor(options) {\n this.revert = options?.revert;\n this.silent = options?.silent;\n }\n};\nfunction isCancelledError(value) {\n return value instanceof CancelledError;\n}\nfunction createRetryer(config) {\n let isRetryCancelled = false;\n let failureCount = 0;\n let isResolved = false;\n let continueFn;\n let promiseResolve;\n let promiseReject;\n const promise = new Promise((outerResolve, outerReject) => {\n promiseResolve = outerResolve;\n promiseReject = outerReject;\n });\n const cancel = (cancelOptions) => {\n if (!isResolved) {\n reject(new CancelledError(cancelOptions));\n config.abort?.();\n }\n };\n const cancelRetry = () => {\n isRetryCancelled = true;\n };\n const continueRetry = () => {\n isRetryCancelled = false;\n };\n const canContinue = () => focusManager.isFocused() && (config.networkMode === \"always\" || onlineManager.isOnline()) && config.canRun();\n const canStart = () => canFetch(config.networkMode) && config.canRun();\n const resolve = (value) => {\n if (!isResolved) {\n isResolved = true;\n config.onSuccess?.(value);\n continueFn?.();\n promiseResolve(value);\n }\n };\n const reject = (value) => {\n if (!isResolved) {\n isResolved = true;\n config.onError?.(value);\n continueFn?.();\n promiseReject(value);\n }\n };\n const pause = () => {\n return new Promise((continueResolve) => {\n continueFn = (value) => {\n if (isResolved || canContinue()) {\n continueResolve(value);\n }\n };\n config.onPause?.();\n }).then(() => {\n continueFn = void 0;\n if (!isResolved) {\n config.onContinue?.();\n }\n });\n };\n const run = () => {\n if (isResolved) {\n return;\n }\n let promiseOrValue;\n const initialPromise = failureCount === 0 ? config.initialPromise : void 0;\n try {\n promiseOrValue = initialPromise ?? config.fn();\n } catch (error) {\n promiseOrValue = Promise.reject(error);\n }\n Promise.resolve(promiseOrValue).then(resolve).catch((error) => {\n if (isResolved) {\n return;\n }\n const retry = config.retry ?? (isServer ? 0 : 3);\n const retryDelay = config.retryDelay ?? defaultRetryDelay;\n const delay = typeof retryDelay === \"function\" ? retryDelay(failureCount, error) : retryDelay;\n const shouldRetry = retry === true || typeof retry === \"number\" && failureCount < retry || typeof retry === \"function\" && retry(failureCount, error);\n if (isRetryCancelled || !shouldRetry) {\n reject(error);\n return;\n }\n failureCount++;\n config.onFail?.(failureCount, error);\n sleep(delay).then(() => {\n return canContinue() ? void 0 : pause();\n }).then(() => {\n if (isRetryCancelled) {\n reject(error);\n } else {\n run();\n }\n });\n });\n };\n return {\n promise,\n cancel,\n continue: () => {\n continueFn?.();\n return promise;\n },\n cancelRetry,\n continueRetry,\n canStart,\n start: () => {\n if (canStart()) {\n run();\n } else {\n pause().then(run);\n }\n return promise;\n }\n };\n}\nexport {\n CancelledError,\n canFetch,\n createRetryer,\n isCancelledError\n};\n//# sourceMappingURL=retryer.js.map","// src/notifyManager.ts\nfunction createNotifyManager() {\n let queue = [];\n let transactions = 0;\n let notifyFn = (callback) => {\n callback();\n };\n let batchNotifyFn = (callback) => {\n callback();\n };\n let scheduleFn = (cb) => setTimeout(cb, 0);\n const setScheduler = (fn) => {\n scheduleFn = fn;\n };\n const batch = (callback) => {\n let result;\n transactions++;\n try {\n result = callback();\n } finally {\n transactions--;\n if (!transactions) {\n flush();\n }\n }\n return result;\n };\n const schedule = (callback) => {\n if (transactions) {\n queue.push(callback);\n } else {\n scheduleFn(() => {\n notifyFn(callback);\n });\n }\n };\n const batchCalls = (callback) => {\n return (...args) => {\n schedule(() => {\n callback(...args);\n });\n };\n };\n const flush = () => {\n const originalQueue = queue;\n queue = [];\n if (originalQueue.length) {\n scheduleFn(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback);\n });\n });\n });\n }\n };\n const setNotifyFunction = (fn) => {\n notifyFn = fn;\n };\n const setBatchNotifyFunction = (fn) => {\n batchNotifyFn = fn;\n };\n return {\n batch,\n batchCalls,\n schedule,\n setNotifyFunction,\n setBatchNotifyFunction,\n setScheduler\n };\n}\nvar notifyManager = createNotifyManager();\nexport {\n createNotifyManager,\n notifyManager\n};\n//# sourceMappingURL=notifyManager.js.map","// src/removable.ts\nimport { isServer, isValidTimeout } from \"./utils.js\";\nvar Removable = class {\n #gcTimeout;\n destroy() {\n this.clearGcTimeout();\n }\n scheduleGc() {\n this.clearGcTimeout();\n if (isValidTimeout(this.gcTime)) {\n this.#gcTimeout = setTimeout(() => {\n this.optionalRemove();\n }, this.gcTime);\n }\n }\n updateGcTime(newGcTime) {\n this.gcTime = Math.max(\n this.gcTime || 0,\n newGcTime ?? (isServer ? Infinity : 5 * 60 * 1e3)\n );\n }\n clearGcTimeout() {\n if (this.#gcTimeout) {\n clearTimeout(this.#gcTimeout);\n this.#gcTimeout = void 0;\n }\n }\n};\nexport {\n Removable\n};\n//# sourceMappingURL=removable.js.map","// src/query.ts\nimport { ensureQueryFn, noop, replaceData, timeUntilStale } from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { canFetch, createRetryer, isCancelledError } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\nvar Query = class extends Removable {\n #initialState;\n #revertState;\n #cache;\n #retryer;\n #defaultOptions;\n #abortSignalConsumed;\n constructor(config) {\n super();\n this.#abortSignalConsumed = false;\n this.#defaultOptions = config.defaultOptions;\n this.setOptions(config.options);\n this.observers = [];\n this.#cache = config.cache;\n this.queryKey = config.queryKey;\n this.queryHash = config.queryHash;\n this.#initialState = config.state || getDefaultState(this.options);\n this.state = this.#initialState;\n this.scheduleGc();\n }\n get meta() {\n return this.options.meta;\n }\n get promise() {\n return this.#retryer?.promise;\n }\n setOptions(options) {\n this.options = { ...this.#defaultOptions, ...options };\n this.updateGcTime(this.options.gcTime);\n }\n optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === \"idle\") {\n this.#cache.remove(this);\n }\n }\n setData(newData, options) {\n const data = replaceData(this.state.data, newData, this.options);\n this.#dispatch({\n data,\n type: \"success\",\n dataUpdatedAt: options?.updatedAt,\n manual: options?.manual\n });\n return data;\n }\n setState(state, setStateOptions) {\n this.#dispatch({ type: \"setState\", state, setStateOptions });\n }\n cancel(options) {\n const promise = this.#retryer?.promise;\n this.#retryer?.cancel(options);\n return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n }\n destroy() {\n super.destroy();\n this.cancel({ silent: true });\n }\n reset() {\n this.destroy();\n this.setState(this.#initialState);\n }\n isActive() {\n return this.observers.some((observer) => observer.options.enabled !== false);\n }\n isDisabled() {\n return this.getObserversCount() > 0 && !this.isActive();\n }\n isStale() {\n if (this.state.isInvalidated) {\n return true;\n }\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => observer.getCurrentResult().isStale\n );\n }\n return this.state.data === void 0;\n }\n isStaleByTime(staleTime = 0) {\n return this.state.isInvalidated || this.state.data === void 0 || !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n }\n onFocus() {\n const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus());\n observer?.refetch({ cancelRefetch: false });\n this.#retryer?.continue();\n }\n onOnline() {\n const observer = this.observers.find((x) => x.shouldFetchOnReconnect());\n observer?.refetch({ cancelRefetch: false });\n this.#retryer?.continue();\n }\n addObserver(observer) {\n if (!this.observers.includes(observer)) {\n this.observers.push(observer);\n this.clearGcTimeout();\n this.#cache.notify({ type: \"observerAdded\", query: this, observer });\n }\n }\n removeObserver(observer) {\n if (this.observers.includes(observer)) {\n this.observers = this.observers.filter((x) => x !== observer);\n if (!this.observers.length) {\n if (this.#retryer) {\n if (this.#abortSignalConsumed) {\n this.#retryer.cancel({ revert: true });\n } else {\n this.#retryer.cancelRetry();\n }\n }\n this.scheduleGc();\n }\n this.#cache.notify({ type: \"observerRemoved\", query: this, observer });\n }\n }\n getObserversCount() {\n return this.observers.length;\n }\n invalidate() {\n if (!this.state.isInvalidated) {\n this.#dispatch({ type: \"invalidate\" });\n }\n }\n fetch(options, fetchOptions) {\n if (this.state.fetchStatus !== \"idle\") {\n if (this.state.data !== void 0 && fetchOptions?.cancelRefetch) {\n this.cancel({ silent: true });\n } else if (this.#retryer) {\n this.#retryer.continueRetry();\n return this.#retryer.promise;\n }\n }\n if (options) {\n this.setOptions(options);\n }\n if (!this.options.queryFn) {\n const observer = this.observers.find((x) => x.options.queryFn);\n if (observer) {\n this.setOptions(observer.options);\n }\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!Array.isArray(this.options.queryKey)) {\n console.error(\n `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`\n );\n }\n }\n const abortController = new AbortController();\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n this.#abortSignalConsumed = true;\n return abortController.signal;\n }\n });\n };\n const fetchFn = () => {\n const queryFn = ensureQueryFn(this.options, fetchOptions);\n const queryFnContext = {\n queryKey: this.queryKey,\n meta: this.meta\n };\n addSignalProperty(queryFnContext);\n this.#abortSignalConsumed = false;\n if (this.options.persister) {\n return this.options.persister(\n queryFn,\n queryFnContext,\n this\n );\n }\n return queryFn(queryFnContext);\n };\n const context = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn\n };\n addSignalProperty(context);\n this.options.behavior?.onFetch(\n context,\n this\n );\n this.#revertState = this.state;\n if (this.state.fetchStatus === \"idle\" || this.state.fetchMeta !== context.fetchOptions?.meta) {\n this.#dispatch({ type: \"fetch\", meta: context.fetchOptions?.meta });\n }\n const onError = (error) => {\n if (!(isCancelledError(error) && error.silent)) {\n this.#dispatch({\n type: \"error\",\n error\n });\n }\n if (!isCancelledError(error)) {\n this.#cache.config.onError?.(\n error,\n this\n );\n this.#cache.config.onSettled?.(\n this.state.data,\n error,\n this\n );\n }\n if (!this.isFetchingOptimistic) {\n this.scheduleGc();\n }\n this.isFetchingOptimistic = false;\n };\n this.#retryer = createRetryer({\n initialPromise: fetchOptions?.initialPromise,\n fn: context.fetchFn,\n abort: abortController.abort.bind(abortController),\n onSuccess: (data) => {\n if (data === void 0) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\n `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`\n );\n }\n onError(new Error(`${this.queryHash} data is undefined`));\n return;\n }\n this.setData(data);\n this.#cache.config.onSuccess?.(data, this);\n this.#cache.config.onSettled?.(\n data,\n this.state.error,\n this\n );\n if (!this.isFetchingOptimistic) {\n this.scheduleGc();\n }\n this.isFetchingOptimistic = false;\n },\n onError,\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue: () => {\n this.#dispatch({ type: \"continue\" });\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode,\n canRun: () => true\n });\n return this.#retryer.start();\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n fetchStatus: \"paused\"\n };\n case \"continue\":\n return {\n ...state,\n fetchStatus: \"fetching\"\n };\n case \"fetch\":\n return {\n ...state,\n ...fetchState(state.data, this.options),\n fetchMeta: action.meta ?? null\n };\n case \"success\":\n return {\n ...state,\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: action.dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: \"success\",\n ...!action.manual && {\n fetchStatus: \"idle\",\n fetchFailureCount: 0,\n fetchFailureReason: null\n }\n };\n case \"error\":\n const error = action.error;\n if (isCancelledError(error) && error.revert && this.#revertState) {\n return { ...this.#revertState, fetchStatus: \"idle\" };\n }\n return {\n ...state,\n error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error,\n fetchStatus: \"idle\",\n status: \"error\"\n };\n case \"invalidate\":\n return {\n ...state,\n isInvalidated: true\n };\n case \"setState\":\n return {\n ...state,\n ...action.state\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onQueryUpdate();\n });\n this.#cache.notify({ query: this, type: \"updated\", action });\n });\n }\n};\nfunction fetchState(data, options) {\n return {\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchStatus: canFetch(options.networkMode) ? \"fetching\" : \"paused\",\n ...data === void 0 && {\n error: null,\n status: \"pending\"\n }\n };\n}\nfunction getDefaultState(options) {\n const data = typeof options.initialData === \"function\" ? options.initialData() : options.initialData;\n const hasData = data !== void 0;\n const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === \"function\" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? \"success\" : \"pending\",\n fetchStatus: \"idle\"\n };\n}\nexport {\n Query,\n fetchState\n};\n//# sourceMappingURL=query.js.map","// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#queries = /* @__PURE__ */ new Map();\n }\n #queries;\n build(client, options, state) {\n const queryKey = options.queryKey;\n const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n let query = this.get(queryHash);\n if (!query) {\n query = new Query({\n cache: this,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query);\n }\n return query;\n }\n add(query) {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query);\n this.notify({\n type: \"added\",\n query\n });\n }\n }\n remove(query) {\n const queryInMap = this.#queries.get(query.queryHash);\n if (queryInMap) {\n query.destroy();\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash);\n }\n this.notify({ type: \"removed\", query });\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query);\n });\n });\n }\n get(queryHash) {\n return this.#queries.get(queryHash);\n }\n getAll() {\n return [...this.#queries.values()];\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (query) => matchQuery(defaultedFilters, query)\n );\n }\n findAll(filters = {}) {\n const queries = this.getAll();\n return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n onFocus() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus();\n });\n });\n }\n onOnline() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline();\n });\n });\n }\n};\nexport {\n QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/mutation.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Removable } from \"./removable.js\";\nimport { createRetryer } from \"./retryer.js\";\nvar Mutation = class extends Removable {\n #observers;\n #mutationCache;\n #retryer;\n constructor(config) {\n super();\n this.mutationId = config.mutationId;\n this.#mutationCache = config.mutationCache;\n this.#observers = [];\n this.state = config.state || getDefaultState();\n this.setOptions(config.options);\n this.scheduleGc();\n }\n setOptions(options) {\n this.options = options;\n this.updateGcTime(this.options.gcTime);\n }\n get meta() {\n return this.options.meta;\n }\n addObserver(observer) {\n if (!this.#observers.includes(observer)) {\n this.#observers.push(observer);\n this.clearGcTimeout();\n this.#mutationCache.notify({\n type: \"observerAdded\",\n mutation: this,\n observer\n });\n }\n }\n removeObserver(observer) {\n this.#observers = this.#observers.filter((x) => x !== observer);\n this.scheduleGc();\n this.#mutationCache.notify({\n type: \"observerRemoved\",\n mutation: this,\n observer\n });\n }\n optionalRemove() {\n if (!this.#observers.length) {\n if (this.state.status === \"pending\") {\n this.scheduleGc();\n } else {\n this.#mutationCache.remove(this);\n }\n }\n }\n continue() {\n return this.#retryer?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n this.execute(this.state.variables);\n }\n async execute(variables) {\n this.#retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject(new Error(\"No mutationFn found\"));\n }\n return this.options.mutationFn(variables);\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue: () => {\n this.#dispatch({ type: \"continue\" });\n },\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n canRun: () => this.#mutationCache.canRun(this)\n });\n const restored = this.state.status === \"pending\";\n const isPaused = !this.#retryer.canStart();\n try {\n if (!restored) {\n this.#dispatch({ type: \"pending\", variables, isPaused });\n await this.#mutationCache.config.onMutate?.(\n variables,\n this\n );\n const context = await this.options.onMutate?.(variables);\n if (context !== this.state.context) {\n this.#dispatch({\n type: \"pending\",\n context,\n variables,\n isPaused\n });\n }\n }\n const data = await this.#retryer.start();\n await this.#mutationCache.config.onSuccess?.(\n data,\n variables,\n this.state.context,\n this\n );\n await this.options.onSuccess?.(data, variables, this.state.context);\n await this.#mutationCache.config.onSettled?.(\n data,\n null,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(data, null, variables, this.state.context);\n this.#dispatch({ type: \"success\", data });\n return data;\n } catch (error) {\n try {\n await this.#mutationCache.config.onError?.(\n error,\n variables,\n this.state.context,\n this\n );\n await this.options.onError?.(\n error,\n variables,\n this.state.context\n );\n await this.#mutationCache.config.onSettled?.(\n void 0,\n error,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(\n void 0,\n error,\n variables,\n this.state.context\n );\n throw error;\n } finally {\n this.#dispatch({ type: \"error\", error });\n }\n } finally {\n this.#mutationCache.runNext(this);\n }\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n failureCount: action.failureCount,\n failureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n isPaused: true\n };\n case \"continue\":\n return {\n ...state,\n isPaused: false\n };\n case \"pending\":\n return {\n ...state,\n context: action.context,\n data: void 0,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: action.isPaused,\n status: \"pending\",\n variables: action.variables,\n submittedAt: Date.now()\n };\n case \"success\":\n return {\n ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: \"success\",\n isPaused: false\n };\n case \"error\":\n return {\n ...state,\n data: void 0,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: \"error\"\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.#observers.forEach((observer) => {\n observer.onMutationUpdate(action);\n });\n this.#mutationCache.notify({\n mutation: this,\n type: \"updated\",\n action\n });\n });\n }\n};\nfunction getDefaultState() {\n return {\n context: void 0,\n data: void 0,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: \"idle\",\n variables: void 0,\n submittedAt: 0\n };\n}\nexport {\n Mutation,\n getDefaultState\n};\n//# sourceMappingURL=mutation.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#mutations = /* @__PURE__ */ new Map();\n this.#mutationId = Date.now();\n }\n #mutations;\n #mutationId;\n build(client, options, state) {\n const mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state\n });\n this.add(mutation);\n return mutation;\n }\n add(mutation) {\n const scope = scopeFor(mutation);\n const mutations = this.#mutations.get(scope) ?? [];\n mutations.push(mutation);\n this.#mutations.set(scope, mutations);\n this.notify({ type: \"added\", mutation });\n }\n remove(mutation) {\n const scope = scopeFor(mutation);\n if (this.#mutations.has(scope)) {\n const mutations = this.#mutations.get(scope)?.filter((x) => x !== mutation);\n if (mutations) {\n if (mutations.length === 0) {\n this.#mutations.delete(scope);\n } else {\n this.#mutations.set(scope, mutations);\n }\n }\n }\n this.notify({ type: \"removed\", mutation });\n }\n canRun(mutation) {\n const firstPendingMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m.state.status === \"pending\");\n return !firstPendingMutation || firstPendingMutation === mutation;\n }\n runNext(mutation) {\n const foundMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m !== mutation && m.state.isPaused);\n return foundMutation?.continue() ?? Promise.resolve();\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((mutation) => {\n this.remove(mutation);\n });\n });\n }\n getAll() {\n return [...this.#mutations.values()].flat();\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (mutation) => matchMutation(defaultedFilters, mutation)\n );\n }\n findAll(filters = {}) {\n return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n resumePausedMutations() {\n const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n return notifyManager.batch(\n () => Promise.all(\n pausedMutations.map((mutation) => mutation.continue().catch(noop))\n )\n );\n }\n};\nfunction scopeFor(mutation) {\n return mutation.options.scope?.id ?? String(mutation.mutationId);\n}\nexport {\n MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/infiniteQueryBehavior.ts\nimport { addToEnd, addToStart, ensureQueryFn } from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n return {\n onFetch: (context, query) => {\n const fetchFn = async () => {\n const options = context.options;\n const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n const oldPages = context.state.data?.pages || [];\n const oldPageParams = context.state.data?.pageParams || [];\n const empty = { pages: [], pageParams: [] };\n let cancelled = false;\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n if (context.signal.aborted) {\n cancelled = true;\n } else {\n context.signal.addEventListener(\"abort\", () => {\n cancelled = true;\n });\n }\n return context.signal;\n }\n });\n };\n const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n const fetchPage = async (data, param, previous) => {\n if (cancelled) {\n return Promise.reject();\n }\n if (param == null && data.pages.length) {\n return Promise.resolve(data);\n }\n const queryFnContext = {\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? \"backward\" : \"forward\",\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext);\n const page = await queryFn(\n queryFnContext\n );\n const { maxPages } = context.options;\n const addTo = previous ? addToStart : addToEnd;\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages)\n };\n };\n let result;\n if (direction && oldPages.length) {\n const previous = direction === \"backward\";\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams\n };\n const param = pageParamFn(options, oldData);\n result = await fetchPage(oldData, param, previous);\n } else {\n result = await fetchPage(\n empty,\n oldPageParams[0] ?? options.initialPageParam\n );\n const remainingPages = pages ?? oldPages.length;\n for (let i = 1; i < remainingPages; i++) {\n const param = getNextPageParam(options, result);\n result = await fetchPage(result, param);\n }\n }\n return result;\n };\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn,\n {\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal\n },\n query\n );\n };\n } else {\n context.fetchFn = fetchFn;\n }\n }\n };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n const lastIndex = pages.length - 1;\n return options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams\n );\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n return options.getPreviousPageParam?.(\n pages[0],\n pages,\n pageParams[0],\n pageParams\n );\n}\nfunction hasNextPage(options, data) {\n if (!data)\n return false;\n return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n if (!data || !options.getPreviousPageParam)\n return false;\n return getPreviousPageParam(options, data) != null;\n}\nexport {\n hasNextPage,\n hasPreviousPage,\n infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","// src/queryClient.ts\nimport {\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n noop,\n partialMatchKey,\n resolveStaleTime,\n skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar QueryClient = class {\n #queryCache;\n #mutationCache;\n #defaultOptions;\n #queryDefaults;\n #mutationDefaults;\n #mountCount;\n #unsubscribeFocus;\n #unsubscribeOnline;\n constructor(config = {}) {\n this.#queryCache = config.queryCache || new QueryCache();\n this.#mutationCache = config.mutationCache || new MutationCache();\n this.#defaultOptions = config.defaultOptions || {};\n this.#queryDefaults = /* @__PURE__ */ new Map();\n this.#mutationDefaults = /* @__PURE__ */ new Map();\n this.#mountCount = 0;\n }\n mount() {\n this.#mountCount++;\n if (this.#mountCount !== 1)\n return;\n this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n if (focused) {\n await this.resumePausedMutations();\n this.#queryCache.onFocus();\n }\n });\n this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n if (online) {\n await this.resumePausedMutations();\n this.#queryCache.onOnline();\n }\n });\n }\n unmount() {\n this.#mountCount--;\n if (this.#mountCount !== 0)\n return;\n this.#unsubscribeFocus?.();\n this.#unsubscribeFocus = void 0;\n this.#unsubscribeOnline?.();\n this.#unsubscribeOnline = void 0;\n }\n isFetching(filters) {\n return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n }\n isMutating(filters) {\n return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n }\n getQueryData(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state.data;\n }\n ensureQueryData(options) {\n const cachedData = this.getQueryData(options.queryKey);\n if (cachedData === void 0)\n return this.fetchQuery(options);\n else {\n const defaultedOptions = this.defaultQueryOptions(options);\n const query = this.#queryCache.build(this, defaultedOptions);\n if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n void this.prefetchQuery(defaultedOptions);\n }\n return Promise.resolve(cachedData);\n }\n }\n getQueriesData(filters) {\n return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n setQueryData(queryKey, updater, options) {\n const defaultedOptions = this.defaultQueryOptions({ queryKey });\n const query = this.#queryCache.get(\n defaultedOptions.queryHash\n );\n const prevData = query?.state.data;\n const data = functionalUpdate(updater, prevData);\n if (data === void 0) {\n return void 0;\n }\n return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n }\n setQueriesData(filters, updater, options) {\n return notifyManager.batch(\n () => this.#queryCache.findAll(filters).map(({ queryKey }) => [\n queryKey,\n this.setQueryData(queryKey, updater, options)\n ])\n );\n }\n getQueryState(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state;\n }\n removeQueries(filters) {\n const queryCache = this.#queryCache;\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query);\n });\n });\n }\n resetQueries(filters, options) {\n const queryCache = this.#queryCache;\n const refetchFilters = {\n type: \"active\",\n ...filters\n };\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset();\n });\n return this.refetchQueries(refetchFilters, options);\n });\n }\n cancelQueries(filters = {}, cancelOptions = {}) {\n const defaultedCancelOptions = { revert: true, ...cancelOptions };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n );\n return Promise.all(promises).then(noop).catch(noop);\n }\n invalidateQueries(filters = {}, options = {}) {\n return notifyManager.batch(() => {\n this.#queryCache.findAll(filters).forEach((query) => {\n query.invalidate();\n });\n if (filters.refetchType === \"none\") {\n return Promise.resolve();\n }\n const refetchFilters = {\n ...filters,\n type: filters.refetchType ?? filters.type ?? \"active\"\n };\n return this.refetchQueries(refetchFilters, options);\n });\n }\n refetchQueries(filters = {}, options) {\n const fetchOptions = {\n ...options,\n cancelRefetch: options?.cancelRefetch ?? true\n };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled()).map((query) => {\n let promise = query.fetch(void 0, fetchOptions);\n if (!fetchOptions.throwOnError) {\n promise = promise.catch(noop);\n }\n return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n })\n );\n return Promise.all(promises).then(noop);\n }\n fetchQuery(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n if (defaultedOptions.retry === void 0) {\n defaultedOptions.retry = false;\n }\n const query = this.#queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(\n resolveStaleTime(defaultedOptions.staleTime, query)\n ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n prefetchQuery(options) {\n return this.fetchQuery(options).then(noop).catch(noop);\n }\n fetchInfiniteQuery(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.fetchQuery(options);\n }\n prefetchInfiniteQuery(options) {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n }\n resumePausedMutations() {\n if (onlineManager.isOnline()) {\n return this.#mutationCache.resumePausedMutations();\n }\n return Promise.resolve();\n }\n getQueryCache() {\n return this.#queryCache;\n }\n getMutationCache() {\n return this.#mutationCache;\n }\n getDefaultOptions() {\n return this.#defaultOptions;\n }\n setDefaultOptions(options) {\n this.#defaultOptions = options;\n }\n setQueryDefaults(queryKey, options) {\n this.#queryDefaults.set(hashKey(queryKey), {\n queryKey,\n defaultOptions: options\n });\n }\n getQueryDefaults(queryKey) {\n const defaults = [...this.#queryDefaults.values()];\n let result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n result = { ...result, ...queryDefault.defaultOptions };\n }\n });\n return result;\n }\n setMutationDefaults(mutationKey, options) {\n this.#mutationDefaults.set(hashKey(mutationKey), {\n mutationKey,\n defaultOptions: options\n });\n }\n getMutationDefaults(mutationKey) {\n const defaults = [...this.#mutationDefaults.values()];\n let result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n result = { ...result, ...queryDefault.defaultOptions };\n }\n });\n return result;\n }\n defaultQueryOptions(options) {\n if (options._defaulted) {\n return options;\n }\n const defaultedOptions = {\n ...this.#defaultOptions.queries,\n ...this.getQueryDefaults(options.queryKey),\n ...options,\n _defaulted: true\n };\n if (!defaultedOptions.queryHash) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions\n );\n }\n if (defaultedOptions.refetchOnReconnect === void 0) {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n }\n if (defaultedOptions.throwOnError === void 0) {\n defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n }\n if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n defaultedOptions.networkMode = \"offlineFirst\";\n }\n if (defaultedOptions.enabled !== true && defaultedOptions.queryFn === skipToken) {\n defaultedOptions.enabled = false;\n }\n return defaultedOptions;\n }\n defaultMutationOptions(options) {\n if (options?._defaulted) {\n return options;\n }\n return {\n ...this.#defaultOptions.mutations,\n ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n clear() {\n this.#queryCache.clear();\n this.#mutationCache.clear();\n }\n};\nexport {\n QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","\"use client\";\n\n// src/QueryClientProvider.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar QueryClientContext = React.createContext(\n void 0\n);\nvar useQueryClient = (queryClient) => {\n const client = React.useContext(QueryClientContext);\n if (queryClient) {\n return queryClient;\n }\n if (!client) {\n throw new Error(\"No QueryClient set, use QueryClientProvider to set one\");\n }\n return client;\n};\nvar QueryClientProvider = ({\n client,\n children\n}) => {\n React.useEffect(() => {\n client.mount();\n return () => {\n client.unmount();\n };\n }, [client]);\n return /* @__PURE__ */ jsx(QueryClientContext.Provider, { value: client, children });\n};\nexport {\n QueryClientContext,\n QueryClientProvider,\n useQueryClient\n};\n//# sourceMappingURL=QueryClientProvider.js.map","import { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { type ReactNode, useEffect } from 'react'\nimport { type Config, useConnect, WagmiProvider } from 'wagmi'\n\nconst Connect = () => {\n const { connectors, connect } = useConnect()\n\n useEffect(() => {\n if (connectors[0] === undefined) {\n return undefined\n }\n\n connect({ connector: connectors[0] })\n }, [connect, connectors])\n\n return <></>\n}\n\nexport const ReactTestWrapper = ({\n children,\n wagmiConfig,\n}: {\n children?: ReactNode\n wagmiConfig: Config\n}) => {\n const testQueryClient = new QueryClient({\n defaultOptions: {\n queries: {\n retry: false,\n },\n mutations: {\n retry: false,\n },\n },\n })\n\n return (\n <WagmiProvider config={wagmiConfig}>\n <QueryClientProvider client={testQueryClient}>\n <>\n <Connect />\n {children}\n </>\n </QueryClientProvider>\n </WagmiProvider>\n )\n}\n","import type { Address } from 'viem'\n\n// Test accounts for impersonation\nexport const alice: Address = '0x0000000000000000000000000000000000001234'\nexport const bob: Address = '0x0000000000000000000000000000000000002345'\nexport const charlie: Address = '0x0000000000000000000000000000000000003456'\n"],"x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "@panoptic-eng/sdk",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js"
11
+ },
12
+ "./test": {
13
+ "types": "./dist/test/index.d.ts",
14
+ "import": "./dist/test/index.js"
15
+ }
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "scripts": {
21
+ "build": "pnpm run codegen && pnpm tsdown",
22
+ "dev": "pnpm concurrently \"pnpm run codegen --watch\" \"pnpm tsdown --watch\"",
23
+ "typecheck": "tsc --noEmit -p tsconfig.build.json",
24
+ "lint": "eslint . --ext .ts,.tsx --ignore-pattern 'dist/**' --ignore-pattern 'graphql/**' --ignore-pattern 'src/graphql/**' --max-warnings=0",
25
+ "lint:fix": "pnpm lint --fix",
26
+ "test": "vitest run",
27
+ "codegen": "graphql-codegen-esm --config ./codegen.ts",
28
+ "prepack": "pnpm build",
29
+ "prepublishOnly": "pnpm build"
30
+ },
31
+ "dependencies": {
32
+ "graphql": "^16.12.0",
33
+ "graphql-request": "^7.3.1",
34
+ "graphql-tag": "^2.12.6",
35
+ "zod": "^4.3.6"
36
+ },
37
+ "peerDependencies": {
38
+ "react": "18.3.0-canary-c3048aab4-20240326",
39
+ "react-dom": "18.3.0-canary-c3048aab4-20240326",
40
+ "viem": "2.41.2",
41
+ "wagmi": "2.14.11"
42
+ },
43
+ "devDependencies": {
44
+ "@graphql-codegen/cli": "^6.0.1",
45
+ "@graphql-codegen/import-types-preset": "^2.2.6",
46
+ "@graphql-codegen/typescript-graphql-request": "^6.3.0",
47
+ "@tanstack/react-query": "5.45.1",
48
+ "@testing-library/dom": "^10.4.1",
49
+ "@testing-library/react": "^16.3.2",
50
+ "@types/node": "^20.19.25",
51
+ "@types/react": "^18.0.25",
52
+ "@types/react-dom": "^18.0.8",
53
+ "@wagmi/cli": "^2.9.0",
54
+ "concurrently": "^7.6.0",
55
+ "tiny-invariant": "^1.3.1",
56
+ "dotenv": "^17.2.3",
57
+ "jsdom": "^27.4.0",
58
+ "react": "18.3.0-canary-c3048aab4-20240326",
59
+ "react-dom": "18.3.0-canary-c3048aab4-20240326",
60
+ "tsdown": "^0.9.0",
61
+ "typescript": "5.1.6",
62
+ "viem-deal": "^2.0.4",
63
+ "vite": "^5.4.2",
64
+ "vite-tsconfig-paths": "^5.0.1",
65
+ "viem": "^2.41.2",
66
+ "vitest": "^2.0.5",
67
+ "wagmi": "^2.14.11"
68
+ }
69
+ }