@aave/client 0.1.0 → 0.3.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.
- package/dist/actions/index.cjs +1 -1
- package/dist/actions/index.cjs.map +1 -1
- package/dist/actions/index.d.cts +107 -3
- package/dist/actions/index.d.ts +107 -3
- package/dist/actions/index.js +1 -1
- package/dist/chunk-7O7GNNAR.js +2 -0
- package/dist/chunk-7O7GNNAR.js.map +1 -0
- package/dist/{chunk-ETBFQJV6.js → chunk-HMEUZQNX.js} +3 -3
- package/dist/{chunk-ETBFQJV6.js.map → chunk-HMEUZQNX.js.map} +1 -1
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/test-utils.cjs +21 -21
- package/dist/test-utils.cjs.map +1 -1
- package/dist/test-utils.js +2 -2
- package/package.json +2 -2
- package/dist/chunk-VZCSH4TP.js +0 -2
- package/dist/chunk-VZCSH4TP.js.map +0 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/actions/misc.ts","../src/errors.ts","../src/batch.ts","../src/environments.ts","../src/fragments.ts","../src/context.ts","../src/logger.ts","../src/types.ts","../src/utils.ts","../src/client.ts"],"names":["hasProcessedKnownTransaction","client","request","HasProcessedKnownTransactionQuery","GraphQLErrorCode","hasExtensionCode","error","code","gqlError","UnexpectedError","ResultAwareError","SigningError","TransactionError","_TransactionError","message","cause","args","txHash","link","TimeoutError","ValidationError","_ValidationError","BatchQueryBuilder","document","variables","invariant","alias","deferred","Deferred","ResultAsync","err","allFragments","selections","variableDefinitions","mergedVariables","varId","operation","fragments","extractQueryParts","fragment","name","varMapping","localDefs","v","newVarName","never","Kind","rewritten","visit","node","renamed","mergedOperation","OperationTypeNode","data","definition","production","staging","local","FragmentDeduplicator","operationDefs","fragmentDefs","toRemove","fragmentNameUsed","fragmentDef","fragName","collectedNames","nodesToVisit","spread","spreads","setsToVisit","set","selection","defNode","FragmentResolver","_FragmentResolver","nodes","injected","configureContext","from","Logger","_Logger","level","methodName","index","isHasProcessedKnownTransactionRequest","result","delay","ms","resolve","takeValue","AaveClient","_AaveClient","context","createClient","options","query","cb","builder","combined","startedAt","ok","fetchExchange","source","errAsync","okAsync"],"mappings":"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","file":"index.cjs","sourcesContent":["import {\n type Chain,\n ChainsFilter,\n ChainsQuery,\n HasProcessedKnownTransactionQuery,\n type HasProcessedKnownTransactionRequest,\n HealthQuery,\n type UsdExchangeRate,\n UsdExchangeRatesQuery,\n type UsdExchangeRatesRequest,\n} from '@aave/graphql';\nimport type { ResultAsync } from '@aave/types';\nimport type { AaveClient } from '../client';\nimport type { UnexpectedError } from '../errors';\n\n/**\n * Health check query.\n *\n * ```ts\n * const result = await health(client);\n * ```\n *\n * @param client - Aave client.\n * @returns True or false\n */\nexport function health(\n client: AaveClient,\n): ResultAsync<boolean, UnexpectedError> {\n return client.query(HealthQuery, {});\n}\n\n/**\n * Fetches the list of supported chains.\n *\n * ```ts\n * const result = await chains(client, { filter: ChainsFilter.MAINNET_ONLY });\n * ```\n *\n * @param client - Aave client.\n * @param filter - The filter for the chains.\n * @returns The list of supported chains.\n */\nexport function chains(\n client: AaveClient,\n filter: ChainsFilter = ChainsFilter.ALL,\n): ResultAsync<Chain[], UnexpectedError> {\n return client.query(ChainsQuery, { filter });\n}\n\n/**\n * Fetches USD exchange rates for different tokens on a given market.\n *\n * ```ts\n * const result = await usdExchangeRates(client, {\n * market: evmAddress('0x1234…'),\n * underlyingTokens: [evmAddress('0x5678…'), evmAddress('0x90ab…')],\n * chainId: chainId(1),\n * });\n * ```\n *\n * @param client - Aave client.\n * @param request - The USD exchange rates request parameters.\n * @returns The list of USD exchange rates.\n */\nexport function usdExchangeRates(\n client: AaveClient,\n request: UsdExchangeRatesRequest,\n): ResultAsync<UsdExchangeRate[], UnexpectedError> {\n return client.query(UsdExchangeRatesQuery, { request });\n}\n\n/**\n * Checks if the API has processed a known transaction hash.\n *\n * This is useful to know when cached data has been invalidated after\n * a transaction is complete, as the API uses caching and has an\n * invalidation task that may take 100-200ms longer.\n *\n * ```ts\n * const result = await borrow(client, request)\n * .andThen(sendWith(wallet))\n * .andThen(client.waitForTransaction);\n *\n * if (result.isErr()) {\n * // Handle error\n * return;\n * }\n *\n * // Check if the transaction has been processed by the API\n * const processed = await hasProcessedKnownTransaction(client, {\n * txHash: result.value,\n * operation: OperationType.Borrow\n * });\n *\n * if (processed.isErr()) {\n * // Handle error\n * return;\n * }\n *\n * if (processed.value) {\n * // Transaction processed, cached data is up to date\n * console.log('Transaction processed, data is fresh');\n * } else {\n * // Transaction not yet processed, may need to wait\n * console.log('Transaction not yet processed');\n * }\n * ```\n *\n * @param client - Aave client.\n * @param request - The request containing transaction hash and operation type to check.\n * @returns True if the transaction has been processed, false otherwise.\n */\nexport function hasProcessedKnownTransaction(\n client: AaveClient,\n request: HasProcessedKnownTransactionRequest,\n): ResultAsync<boolean, UnexpectedError> {\n return client.query(HasProcessedKnownTransactionQuery, { request });\n}\n","import type { TransactionRequest, TypedSelectionSet } from '@aave/graphql';\nimport { ResultAwareError, type TxHash } from '@aave/types';\nimport type { CombinedError } from '@urql/core';\n\n/**\n * @internal\n */\nexport enum GraphQLErrorCode {\n UNAUTHENTICATED = 'UNAUTHENTICATED',\n FORBIDDEN = 'FORBIDDEN',\n INTERNAL_SERVER_ERROR = 'INTERNAL_SERVER_ERROR',\n BAD_USER_INPUT = 'BAD_USER_INPUT',\n BAD_REQUEST = 'BAD_REQUEST',\n}\n/**\n * @internal\n */\nexport function hasExtensionCode(\n error: CombinedError,\n code: GraphQLErrorCode,\n): boolean {\n return error.graphQLErrors.some((gqlError) => {\n return gqlError.extensions?.code === code;\n });\n}\n\n/**\n * Error indicating an unexpected condition occurred.\n */\nexport class UnexpectedError extends ResultAwareError {\n name = 'UnexpectedError' as const;\n}\n\n/**\n * Error indicating an error occurred while signing.\n */\nexport class SigningError extends ResultAwareError {\n name = 'SigningError' as const;\n}\n\nexport type TransactionErrorArgs = {\n txHash: TxHash;\n request: TransactionRequest;\n link?: string;\n};\n\n/**\n * Error indicating a transaction failed.\n */\nexport class TransactionError extends ResultAwareError {\n name = 'TransactionError' as const;\n\n protected constructor(message: string, cause: TransactionRequest) {\n super(message, { cause });\n }\n\n static new(args: TransactionErrorArgs) {\n const { txHash, request, link } = args;\n const message = link\n ? `Transaction failed: ${txHash}\\n→ View on explorer: ${link}`\n : `Transaction failed: ${txHash}`;\n return new TransactionError(message, request);\n }\n}\n\n/**\n * Error indicating a timeout occurred.\n */\nexport class TimeoutError extends ResultAwareError {\n name = 'TimeoutError' as const;\n}\n\n/**\n * Error indicating an operation was not executed due to a validation error.\n * See the `cause` property for more information.\n */\nexport class ValidationError<\n TGqlNode extends TypedSelectionSet,\n> extends ResultAwareError {\n name = 'ValidationError' as const;\n\n constructor(public readonly cause: TGqlNode) {\n super(cause.__typename);\n }\n\n static fromGqlNode<TGqlNode extends TypedSelectionSet>(\n error: TGqlNode,\n ): ValidationError<TGqlNode> {\n return new ValidationError(error);\n }\n}\n","import type { AnyVariables, StandardData } from '@aave/graphql';\nimport { Deferred, invariant, never, ResultAsync } from '@aave/types';\nimport type { TypedDocumentNode } from '@urql/core';\nimport {\n type DocumentNode,\n type FieldNode,\n type FragmentDefinitionNode,\n Kind,\n type OperationDefinitionNode,\n OperationTypeNode,\n type VariableDefinitionNode,\n visit,\n} from 'graphql';\n\nimport { UnexpectedError } from './errors';\n\ninterface StoredQuery<TValue, TVariables extends AnyVariables> {\n alias: string;\n document: TypedDocumentNode<StandardData<TValue>, TVariables>;\n variables: AnyVariables;\n deferred: Deferred<TValue>;\n}\n\nexport type BatchQueryData = Record<string, unknown>;\n\nexport class BatchQueryBuilder {\n // biome-ignore lint/suspicious/noExplicitAny: intentional due to the etherogenous nature of the queries\n private queries: StoredQuery<any, any>[] = [];\n\n addQuery = <TValue, TVariables extends AnyVariables>(\n document: TypedDocumentNode<StandardData<TValue>, TVariables>,\n variables: TVariables,\n ): ResultAsync<TValue, UnexpectedError> => {\n invariant(\n this.queries.length < 10,\n 'Batch queries supports a maximum of 10 queries',\n );\n\n const alias = `value_${this.queries.length}`;\n const deferred = new Deferred<TValue>();\n\n this.queries.push({ alias, document, variables, deferred });\n\n return ResultAsync.fromPromise(deferred.promise, (err) => {\n if (UnexpectedError.is(err)) {\n return err;\n }\n return UnexpectedError.from(err);\n });\n };\n\n build<TVariables extends AnyVariables>(): [\n TypedDocumentNode<BatchQueryData, TVariables>,\n TVariables,\n ] {\n const allFragments: Map<string, FragmentDefinitionNode> = new Map();\n const selections: FieldNode[] = [];\n const variableDefinitions: VariableDefinitionNode[] = [];\n const mergedVariables: AnyVariables = {};\n\n let varId = 0;\n for (const { alias, document, variables } of this.queries) {\n const [operation, fragments] = extractQueryParts(document);\n\n for (const fragment of fragments) {\n const name = fragment.name.value;\n if (!allFragments.has(name)) {\n allFragments.set(name, fragment);\n }\n }\n\n const varMapping = new Map<string, string>();\n const localDefs =\n operation.variableDefinitions?.map((v): VariableDefinitionNode => {\n const newVarName = `${v.variable.name.value}_${varId++}`;\n varMapping.set(v.variable.name.value, newVarName);\n\n mergedVariables[newVarName] =\n variables[v.variable.name.value] ?? never();\n\n return {\n ...v,\n variable: {\n ...v.variable,\n name: { kind: Kind.NAME, value: newVarName },\n },\n };\n }) ?? [];\n\n variableDefinitions.push(...localDefs);\n\n const rewritten = visit(operation.selectionSet, {\n Variable(node) {\n const renamed = varMapping.get(node.name.value);\n if (!renamed) return node;\n return {\n ...node,\n name: { kind: Kind.NAME, value: renamed },\n };\n },\n Field(node) {\n return {\n ...node,\n alias: { kind: Kind.NAME, value: alias },\n };\n },\n });\n\n selections.push(...(rewritten.selections as FieldNode[]));\n }\n\n const mergedOperation: OperationDefinitionNode = {\n kind: Kind.OPERATION_DEFINITION,\n operation: OperationTypeNode.QUERY,\n variableDefinitions,\n selectionSet: {\n kind: Kind.SELECTION_SET,\n selections,\n },\n };\n\n const mergedDocument: DocumentNode = {\n kind: Kind.DOCUMENT,\n definitions: [mergedOperation, ...allFragments.values()],\n };\n return [mergedDocument, mergedVariables as TVariables];\n }\n\n resolve(data: BatchQueryData) {\n for (const { alias, deferred } of this.queries) {\n if (Object.hasOwn(data, alias) && data[alias] !== undefined) {\n deferred.resolve(data[alias]);\n } else {\n deferred.reject(\n UnexpectedError.from(\n `Missing response data for query alias \"${alias}\". Please report this issue to the Avara team.`,\n ),\n );\n }\n }\n }\n}\n\nfunction extractQueryParts(\n document: TypedDocumentNode<StandardData<unknown>>,\n): [OperationDefinitionNode, FragmentDefinitionNode[]] {\n let operation: OperationDefinitionNode | undefined;\n const fragments: FragmentDefinitionNode[] = [];\n for (const definition of document.definitions) {\n switch (definition.kind) {\n case Kind.OPERATION_DEFINITION:\n invariant(\n definition.operation === OperationTypeNode.QUERY,\n 'Only query operations are supported',\n );\n invariant(\n operation === undefined,\n 'Only one operation definition is supported',\n );\n\n operation = definition;\n break;\n\n case Kind.FRAGMENT_DEFINITION:\n fragments.push(definition);\n break;\n\n default:\n never(`Unexpected definition kind: ${definition.kind}`);\n }\n }\n\n invariant(operation, 'No operation definition found in the document');\n\n return [operation, fragments];\n}\n","/**\n * The environment configuration type.\n */\nexport type EnvironmentConfig = {\n name: string;\n backend: string;\n indexingTimeout: number;\n pollingInterval: number;\n};\n\n/**\n * The production environment configuration.\n */\nexport const production: EnvironmentConfig = {\n name: 'production',\n backend: 'https://api.v3.aave.com/graphql',\n indexingTimeout: 60_000,\n pollingInterval: 100,\n};\n\n/**\n * @internal\n */\nexport const staging: EnvironmentConfig = {\n name: 'staging',\n backend: 'https://api.v3.staging.aave.com/graphql',\n indexingTimeout: 60_000,\n pollingInterval: 100,\n};\n\n/**\n * @internal\n */\nexport const local: EnvironmentConfig = {\n name: 'local',\n backend: 'http://localhost:3011/graphql',\n indexingTimeout: 60_000,\n pollingInterval: 1000,\n};\n","import { invariant } from '@aave/types';\nimport type { AnyVariables, TypedDocumentNode } from '@urql/core';\nimport {\n type FragmentDefinitionNode,\n type FragmentSpreadNode,\n Kind,\n type OperationDefinitionNode,\n type SelectionSetNode,\n visit,\n} from 'graphql';\nimport type { Maybe } from 'graphql/jsutils/Maybe';\nimport type { ObjMap } from 'graphql/jsutils/ObjMap';\n\nclass FragmentDeduplicator<TResult, TVariables extends AnyVariables> {\n private _fragments: ObjMap<FragmentDefinitionNode> | undefined;\n private _fragmentSpreads: Map<SelectionSetNode, Array<FragmentSpreadNode>>;\n private _recursivelyReferencedFragments: Map<\n OperationDefinitionNode,\n Array<FragmentDefinitionNode>\n >;\n\n constructor(\n private readonly document: TypedDocumentNode<TResult, TVariables>,\n ) {\n this._fragmentSpreads = new Map();\n this._recursivelyReferencedFragments = new Map();\n }\n\n dedupe(): TypedDocumentNode<TResult, TVariables> {\n const operationDefs: Array<OperationDefinitionNode> = [];\n const fragmentDefs: Array<FragmentDefinitionNode> = [];\n\n const toRemove: Array<FragmentDefinitionNode> = [];\n\n visit(this.document, {\n OperationDefinition: (node) => {\n operationDefs.push(node);\n return false;\n },\n FragmentDefinition: (node) => {\n fragmentDefs.push(node);\n return false;\n },\n Document: {\n leave: () => {\n const fragmentNameUsed = Object.create(null);\n for (const operation of operationDefs) {\n for (const fragment of this.getRecursivelyReferencedFragments(\n operation,\n )) {\n fragmentNameUsed[fragment.name.value] = true;\n }\n }\n\n for (const fragmentDef of fragmentDefs) {\n const fragName = fragmentDef.name.value;\n if (fragmentNameUsed[fragName] !== true) {\n toRemove.push(fragmentDef);\n }\n }\n },\n },\n });\n\n return visit(this.document, {\n FragmentDefinition: (node) => {\n if (toRemove.indexOf(node) !== -1) {\n return null;\n }\n return node;\n },\n });\n }\n\n private getRecursivelyReferencedFragments(\n operation: OperationDefinitionNode,\n ): ReadonlyArray<FragmentDefinitionNode> {\n let fragments = this._recursivelyReferencedFragments.get(operation);\n if (!fragments) {\n fragments = [];\n const collectedNames = Object.create(null);\n const nodesToVisit: Array<SelectionSetNode> = [operation.selectionSet];\n let node: SelectionSetNode | undefined;\n // biome-ignore lint/suspicious/noAssignInExpressions: for now\n while ((node = nodesToVisit.pop())) {\n for (const spread of this.getFragmentSpreads(node)) {\n const fragName = spread.name.value;\n if (collectedNames[fragName] !== true) {\n collectedNames[fragName] = true;\n const fragment = this.getFragment(fragName);\n if (fragment) {\n fragments.push(fragment);\n nodesToVisit.push(fragment.selectionSet);\n }\n }\n }\n }\n this._recursivelyReferencedFragments.set(operation, fragments);\n }\n return fragments;\n }\n\n private getFragmentSpreads(\n node: SelectionSetNode,\n ): ReadonlyArray<FragmentSpreadNode> {\n let spreads = this._fragmentSpreads.get(node);\n if (!spreads) {\n spreads = [];\n const setsToVisit: Array<SelectionSetNode> = [node];\n let set: SelectionSetNode | undefined;\n // biome-ignore lint/suspicious/noAssignInExpressions: safe\n while ((set = setsToVisit.pop())) {\n for (const selection of set.selections) {\n if (selection.kind === Kind.FRAGMENT_SPREAD) {\n spreads.push(selection);\n } else if (selection.selectionSet) {\n setsToVisit.push(selection.selectionSet);\n }\n }\n }\n this._fragmentSpreads.set(node, spreads);\n }\n return spreads;\n }\n\n private getFragment(name: string): Maybe<FragmentDefinitionNode> {\n let fragments: ObjMap<FragmentDefinitionNode>;\n if (this._fragments) {\n fragments = this._fragments;\n } else {\n fragments = Object.create(null);\n for (const defNode of this.document.definitions) {\n if (defNode.kind === Kind.FRAGMENT_DEFINITION) {\n fragments[defNode.name.value] = defNode;\n }\n }\n this._fragments = fragments;\n }\n return fragments[name];\n }\n}\n\n/**\n * @internal\n */\nexport class FragmentResolver {\n private constructor(\n private readonly fragments: Map<string, FragmentDefinitionNode>,\n ) {}\n\n static from(nodes: TypedDocumentNode[]): FragmentResolver {\n const fragments = new Map<string, FragmentDefinitionNode>();\n\n for (const fragment of nodes) {\n for (const definition of fragment.definitions) {\n invariant(\n definition.kind === 'FragmentDefinition',\n `expected a fragment definition, got ${fragment.definitions[0]?.kind}`,\n );\n invariant(\n !fragments.has(definition.name.value),\n `Duplicate fragment detected. A fragment named \"${definition.name.value}\" has already been provided, either directly or as part of another fragment document.`,\n );\n fragments.set(definition.name.value, definition);\n }\n }\n\n return new FragmentResolver(fragments);\n }\n\n replaceFrom<TResult, TVariables extends AnyVariables>(\n document: TypedDocumentNode<TResult, TVariables>,\n ): TypedDocumentNode<TResult, TVariables> {\n const injected = visit(document, {\n FragmentDefinition: (node) => {\n if (this.fragments.has(node.name.value)) {\n return null;\n }\n return node;\n },\n Document: {\n leave: (node) => {\n return {\n ...node,\n definitions: [...node.definitions, ...this.fragments.values()],\n };\n },\n },\n });\n\n return new FragmentDeduplicator(injected).dedupe();\n }\n}\n","import type { ClientConfig } from './config';\nimport { type EnvironmentConfig, production } from './environments';\nimport { FragmentResolver } from './fragments';\n\n/**\n * @internal\n */\nexport type Context = {\n environment: EnvironmentConfig;\n headers?: Record<string, string>;\n cache: boolean;\n debug: boolean;\n fragments: FragmentResolver;\n};\n\n/**\n * @internal\n */\nexport function configureContext(from: ClientConfig): Context {\n return {\n environment: from.environment ?? production,\n headers: from.headers,\n cache: from.cache ?? false,\n debug: from.debug ?? false,\n fragments: FragmentResolver.from(from.fragments ?? []),\n };\n}\n","type LogMethod = (...args: unknown[]) => void;\n\nexport enum LogLevel {\n TRACE = 0,\n DEBUG = 1,\n INFO = 2,\n WARN = 3,\n ERROR = 4,\n SILENT = 5,\n}\n\nexport class Logger {\n private level: LogLevel;\n private name: string;\n\n private constructor(name: string, level: LogLevel = LogLevel.WARN) {\n this.name = name;\n this.level = level;\n this.replaceMethods();\n }\n\n static named(name: string, level: LogLevel = LogLevel.WARN): Logger {\n return new Logger(name, level);\n }\n\n trace: LogMethod = () => {};\n debug: LogMethod = () => {};\n info: LogMethod = () => {};\n warn: LogMethod = () => {};\n error: LogMethod = () => {};\n log: LogMethod = () => {}; // alias for debug\n\n private replaceMethods() {\n (['trace', 'debug', 'info', 'warn', 'error'] as const).forEach(\n (methodName, index) => {\n if (index >= this.level) {\n this[methodName] = () => {};\n } else {\n this[methodName] = (...args) =>\n console[methodName === 'debug' ? 'log' : methodName](\n `[${this.name}]`,\n ...args,\n );\n }\n },\n );\n this.log = this.debug;\n }\n}\n","import type {\n ERC712Signature,\n ExecutionPlan,\n HasProcessedKnownTransactionRequest,\n InsufficientBalanceError,\n OperationType,\n PermitTypedDataResponse,\n} from '@aave/graphql';\nimport type { ResultAsync, TxHash } from '@aave/types';\nimport type { SigningError, TransactionError, ValidationError } from './errors';\n\nexport type TransactionExecutionResult = {\n txHash: TxHash;\n operation: OperationType | null;\n};\n\n/**\n * @internal\n */\nexport function isHasProcessedKnownTransactionRequest(\n result: TransactionExecutionResult,\n): result is HasProcessedKnownTransactionRequest {\n return result.operation !== null;\n}\n\nexport type ExecutionPlanHandler<T extends ExecutionPlan = ExecutionPlan> = (\n result: T,\n) => ResultAsync<\n TransactionExecutionResult,\n SigningError | TransactionError | ValidationError<InsufficientBalanceError>\n>;\n\nexport type PermitHandler = (\n result: PermitTypedDataResponse,\n) => ResultAsync<ERC712Signature, SigningError>;\n","/**\n * @internal\n */\nexport function delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import type {\n HasProcessedKnownTransactionRequest,\n StandardData,\n} from '@aave/graphql';\nimport {\n errAsync,\n invariant,\n okAsync,\n ResultAsync,\n type TxHash,\n} from '@aave/types';\nimport {\n type AnyVariables,\n createClient,\n type Exchange,\n fetchExchange,\n type OperationResult,\n type OperationResultSource,\n type TypedDocumentNode,\n type Client as UrqlClient,\n} from '@urql/core';\nimport { hasProcessedKnownTransaction } from './actions';\nimport { BatchQueryBuilder } from './batch';\nimport type { ClientConfig } from './config';\nimport { type Context, configureContext } from './context';\nimport { TimeoutError, UnexpectedError } from './errors';\nimport { Logger, LogLevel } from './logger';\nimport {\n isHasProcessedKnownTransactionRequest,\n type TransactionExecutionResult,\n} from './types';\nimport { delay } from './utils';\n\nfunction takeValue<T>({\n data,\n error,\n}: OperationResult<StandardData<T> | undefined, AnyVariables>): T {\n invariant(data, `Expected a value, got: ${error?.message}`);\n return data.value;\n}\n\nexport class AaveClient {\n /**\n * @internal\n */\n public readonly urql: UrqlClient;\n\n private readonly logger: Logger;\n\n private constructor(private readonly context: Context) {\n this.logger = Logger.named(\n this.constructor.name,\n context.debug ? LogLevel.DEBUG : LogLevel.SILENT,\n );\n\n this.urql = createClient({\n url: context.environment.backend,\n fetchOptions: {\n credentials: 'omit',\n headers: context.headers,\n },\n exchanges: this.exchanges(),\n });\n }\n\n /**\n * Create a new instance of the {@link AaveClient}.\n *\n * ```ts\n * const client = AaveClient.create({\n * environment: production,\n * origin: 'http://example.com',\n * });\n * ```\n *\n * @param options - The options to configure the client.\n * @returns The new instance of the client.\n */\n static create(options?: ClientConfig): AaveClient {\n return new AaveClient(configureContext(options ?? {}));\n }\n\n /**\n * Execute a GraphQL query operation.\n *\n * @param document - The GraphQL document to execute.\n * @param variables - The variables to pass to the operation.\n * @returns The result of the operation.\n */\n public query<TValue, TVariables extends AnyVariables>(\n document: TypedDocumentNode<StandardData<TValue>, TVariables>,\n variables: TVariables,\n ): ResultAsync<TValue, UnexpectedError> {\n const query = this.context.fragments.replaceFrom(document);\n return this.resultFrom(this.urql.query(query, variables)).map(takeValue);\n }\n\n /**\n * Execute a GraphQL mutation operation.\n *\n * @param document - The GraphQL document to execute.\n * @param variables - The variables to pass to the operation.\n * @returns The result of the operation.\n */\n public mutation<TValue, TVariables extends AnyVariables>(\n document: TypedDocumentNode<StandardData<TValue>, TVariables>,\n variables: TVariables,\n ): ResultAsync<TValue, UnexpectedError> {\n return this.resultFrom(this.urql.mutation(document, variables)).map(\n takeValue,\n );\n }\n\n // TODO update example below\n /**\n * Execute a batch of GraphQL query operations.\n *\n * @alpha This is an alpha API and may be subject to breaking changes.\n *\n * ```ts\n * const result = await client.batch((c) => [\n * fetchAccount(c, { address: evmAddress('0x1234…') }).map(nonNullable),\n * fetchBalancesBulk(c, {\n * includeNative: true,\n * tokens: [\n * evmAddress(\"0x5678…\"),\n * evmAddress(\"0x9012…\"),\n * ],\n * }),\n * ]);\n *\n * // const result: Result<\n * // [\n * // Account,\n * // AnyAccountBalance[],\n * // ],\n * // UnauthenticatedError | UnexpectedError\n * // >\n * ```\n *\n * @param cb - The callback with the scoped client to execute the actions with.\n * @returns The results of all queries in the same order as they were added.\n */\n batch<T1, T2, E1 extends Error, E2 extends Error>(\n cb: (client: this) => [ResultAsync<T1, E1>, ResultAsync<T2, E2>],\n ): ResultAsync<[T1, T2], E1 | E2>;\n batch<T1, T2, T3, E1 extends Error, E2 extends Error, E3 extends Error>(\n cb: (\n client: this,\n ) => [ResultAsync<T1, E1>, ResultAsync<T2, E2>, ResultAsync<T3, E3>],\n ): ResultAsync<[T1, T2, T3], E1 | E2 | E3>;\n batch<\n T1,\n T2,\n T3,\n T4,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ],\n ): ResultAsync<[T1, T2, T3, T4], E1 | E2 | E3 | E4>;\n batch<\n T1,\n T2,\n T3,\n T4,\n T5,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n E5 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ResultAsync<T5, E5>,\n ],\n ): ResultAsync<[T1, T2, T3, T4, T5], E1 | E2 | E3 | E4 | E5>;\n batch<\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n E5 extends Error,\n E6 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ResultAsync<T5, E5>,\n ResultAsync<T6, E6>,\n ],\n ): ResultAsync<[T1, T2, T3, T4, T5, T6], E1 | E2 | E3 | E4 | E5 | E6>;\n batch<\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n E5 extends Error,\n E6 extends Error,\n E7 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ResultAsync<T5, E5>,\n ResultAsync<T6, E6>,\n ResultAsync<T7, E7>,\n ],\n ): ResultAsync<\n [T1, T2, T3, T4, T5, T6, T7],\n E1 | E2 | E3 | E4 | E5 | E6 | E7\n >;\n batch<\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n E5 extends Error,\n E6 extends Error,\n E7 extends Error,\n E8 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ResultAsync<T5, E5>,\n ResultAsync<T6, E6>,\n ResultAsync<T7, E7>,\n ResultAsync<T8, E8>,\n ],\n ): ResultAsync<\n [T1, T2, T3, T4, T5, T6, T7, T8],\n E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8\n >;\n batch<\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n T9,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n E5 extends Error,\n E6 extends Error,\n E7 extends Error,\n E8 extends Error,\n E9 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ResultAsync<T5, E5>,\n ResultAsync<T6, E6>,\n ResultAsync<T7, E7>,\n ResultAsync<T8, E8>,\n ResultAsync<T9, E9>,\n ],\n ): ResultAsync<\n [T1, T2, T3, T4, T5, T6, T7, T8, T9],\n E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9\n >;\n batch<\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n T9,\n T10,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n E5 extends Error,\n E6 extends Error,\n E7 extends Error,\n E8 extends Error,\n E9 extends Error,\n E10 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ResultAsync<T5, E5>,\n ResultAsync<T6, E6>,\n ResultAsync<T7, E7>,\n ResultAsync<T8, E8>,\n ResultAsync<T9, E9>,\n ResultAsync<T10, E10>,\n ],\n ): ResultAsync<\n [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10],\n E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9 | E10\n >;\n batch<T, E extends Error>(\n cb: (client: this) => ResultAsync<T, E>[],\n ): ResultAsync<T[], E>;\n batch(\n cb: (client: this) => ResultAsync<unknown[], unknown>[],\n ): ResultAsync<unknown[], unknown> {\n const builder = new BatchQueryBuilder();\n\n const client: this = Object.create(this, {\n query: {\n value: builder.addQuery,\n },\n });\n\n const combined = ResultAsync.combine(cb(client));\n const [document, variables] = builder.build();\n\n const query = this.context.fragments.replaceFrom(document);\n\n return this.resultFrom(this.urql.query(query, variables))\n .andTee(({ data, error }) => {\n invariant(data, `Expected a value, got: ${error?.message}`);\n builder.resolve(data);\n })\n .andThen(() => combined);\n }\n\n /**\n * Given the transaction hash of an Aave protocol transaction, wait for the transaction to be\n * processed by the Aave v3 API.\n *\n * Returns a {@link TimeoutError} if the transaction is not processed within the expected timeout period.\n *\n * @param result - The transaction execution result to wait for.\n * @returns The transaction hash or a TimeoutError\n */\n readonly waitForTransaction = (\n result: TransactionExecutionResult,\n ): ResultAsync<TxHash, TimeoutError | UnexpectedError> => {\n invariant(\n isHasProcessedKnownTransactionRequest(result),\n `Received a transaction result for an untracked operation. Make sure you're following the instructions in the docs.`,\n );\n\n return ResultAsync.fromPromise(\n this.pollTransactionStatus(result),\n (err) => {\n if (err instanceof TimeoutError || err instanceof UnexpectedError) {\n return err;\n }\n return UnexpectedError.from(err);\n },\n );\n };\n\n protected async pollTransactionStatus(\n request: HasProcessedKnownTransactionRequest,\n ): Promise<TxHash> {\n const startedAt = Date.now();\n\n while (Date.now() - startedAt < this.context.environment.indexingTimeout) {\n const processed = await hasProcessedKnownTransaction(this, request).match(\n (ok) => ok,\n (err) => {\n throw err;\n },\n );\n\n if (processed) {\n return request.txHash;\n }\n\n await delay(this.context.environment.pollingInterval);\n }\n throw TimeoutError.from(\n `Timeout waiting for transaction ${request.txHash} to be processed.`,\n );\n }\n\n protected exchanges(): Exchange[] {\n return [fetchExchange];\n }\n\n protected resultFrom<TData, TVariables extends AnyVariables>(\n source: OperationResultSource<OperationResult<TData, TVariables>>,\n ): ResultAsync<OperationResult<TData, TVariables>, UnexpectedError> {\n return ResultAsync.fromPromise(source.toPromise(), (err: unknown) => {\n this.logger.error(err);\n console.log(err);\n return UnexpectedError.from(err);\n }).andThen((result) => {\n if (result.error?.networkError) {\n return errAsync(UnexpectedError.from(result.error.networkError));\n }\n return okAsync(result);\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/actions/misc.ts","../src/errors.ts","../src/batch.ts","../src/environments.ts","../src/fragments.ts","../src/context.ts","../src/logger.ts","../src/types.ts","../src/utils.ts","../src/client.ts"],"names":["hasProcessedKnownTransaction","client","request","HasProcessedKnownTransactionQuery","GraphQLErrorCode","hasExtensionCode","error","code","gqlError","UnexpectedError","ResultAwareError","SigningError","TransactionError","_TransactionError","message","cause","args","txHash","link","TimeoutError","ValidationError","_ValidationError","BatchQueryBuilder","document","variables","invariant","alias","deferred","Deferred","ResultAsync","err","allFragments","selections","variableDefinitions","mergedVariables","varId","operation","fragments","extractQueryParts","fragment","name","varMapping","localDefs","v","newVarName","never","Kind","rewritten","visit","node","renamed","mergedOperation","OperationTypeNode","data","definition","production","staging","local","FragmentDeduplicator","operationDefs","fragmentDefs","toRemove","fragmentNameUsed","fragmentDef","fragName","collectedNames","nodesToVisit","spread","spreads","setsToVisit","set","selection","defNode","FragmentResolver","_FragmentResolver","nodes","injected","configureContext","from","Logger","_Logger","level","methodName","index","isHasProcessedKnownTransactionRequest","result","delay","ms","resolve","takeValue","AaveClient","_AaveClient","context","createClient","options","query","cb","builder","combined","startedAt","ok","fetchExchange","source","errAsync","okAsync"],"mappings":"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","file":"index.cjs","sourcesContent":["import {\n type Chain,\n ChainsFilter,\n ChainsQuery,\n HasProcessedKnownTransactionQuery,\n type HasProcessedKnownTransactionRequest,\n HealthFactorPreviewQuery,\n type HealthFactorPreviewRequest,\n type HealthFactorPreviewResponse,\n HealthQuery,\n type UsdExchangeRate,\n UsdExchangeRatesQuery,\n type UsdExchangeRatesRequest,\n} from '@aave/graphql';\nimport type { ResultAsync } from '@aave/types';\nimport type { AaveClient } from '../client';\nimport type { UnexpectedError } from '../errors';\n\n/**\n * Health check query.\n *\n * ```ts\n * const result = await health(client);\n * ```\n *\n * @param client - Aave client.\n * @returns True or false\n */\nexport function health(\n client: AaveClient,\n): ResultAsync<boolean, UnexpectedError> {\n return client.query(HealthQuery, {});\n}\n\n/**\n * Fetches the list of supported chains.\n *\n * ```ts\n * const result = await chains(client, ChainsFilter.MAINNET_ONLY);\n * ```\n *\n * @param client - Aave client.\n * @param filter - The filter for the chains.\n * @returns The list of supported chains.\n */\nexport function chains(\n client: AaveClient,\n filter: ChainsFilter = ChainsFilter.ALL,\n): ResultAsync<Chain[], UnexpectedError> {\n return client.query(ChainsQuery, { filter });\n}\n\n/**\n * Fetches USD exchange rates for different tokens on a given market.\n *\n * ```ts\n * const result = await usdExchangeRates(client, {\n * market: evmAddress('0x1234…'),\n * underlyingTokens: [evmAddress('0x5678…'), evmAddress('0x90ab…')],\n * chainId: chainId(1),\n * });\n * ```\n *\n * @param client - Aave client.\n * @param request - The USD exchange rates request parameters.\n * @returns The list of USD exchange rates.\n */\nexport function usdExchangeRates(\n client: AaveClient,\n request: UsdExchangeRatesRequest,\n): ResultAsync<UsdExchangeRate[], UnexpectedError> {\n return client.query(UsdExchangeRatesQuery, { request });\n}\n\n/**\n * Checks if the API has processed a known transaction hash.\n *\n * This is useful to know when cached data has been invalidated after\n * a transaction is complete, as the API uses caching and has an\n * invalidation task that may take 100-200ms longer.\n *\n * ```ts\n * const result = await borrow(client, request)\n * .andThen(sendWith(wallet))\n * .andThen(client.waitForTransaction);\n *\n * if (result.isErr()) {\n * // Handle error\n * return;\n * }\n *\n * // Check if the transaction has been processed by the API\n * const processed = await hasProcessedKnownTransaction(client, {\n * txHash: result.value,\n * operation: OperationType.Borrow\n * });\n *\n * if (processed.isErr()) {\n * // Handle error\n * return;\n * }\n *\n * if (processed.value) {\n * // Transaction processed, cached data is up to date\n * console.log('Transaction processed, data is fresh');\n * } else {\n * // Transaction not yet processed, may need to wait\n * console.log('Transaction not yet processed');\n * }\n * ```\n *\n * @param client - Aave client.\n * @param request - The request containing transaction hash and operation type to check.\n * @returns True if the transaction has been processed, false otherwise.\n */\nexport function hasProcessedKnownTransaction(\n client: AaveClient,\n request: HasProcessedKnownTransactionRequest,\n): ResultAsync<boolean, UnexpectedError> {\n return client.query(HasProcessedKnownTransactionQuery, { request });\n}\n\n/**\n * Fetches health factor preview for a given market action.\n *\n * ```ts\n * const result = await healthFactorPreview(client, {\n * action: {\n * borrow: {\n * market: market.address,\n * amount: {\n * erc20: {\n * currency: evmAddress('0x5678…'),\n * value: '1000',\n * },\n * },\n * borrower: evmAddress('0x9abc…'),\n * chainId: market.chain.chainId,\n * },\n * },\n * });\n * ```\n *\n * @param client - Aave client.\n * @param request - The health factor preview request parameters.\n * @returns The health factor preview response with before and after values.\n */\nexport function healthFactorPreview(\n client: AaveClient,\n request: HealthFactorPreviewRequest,\n): ResultAsync<HealthFactorPreviewResponse, UnexpectedError> {\n return client.query(HealthFactorPreviewQuery, { request });\n}\n","import type { TransactionRequest, TypedSelectionSet } from '@aave/graphql';\nimport { ResultAwareError, type TxHash } from '@aave/types';\nimport type { CombinedError } from '@urql/core';\n\n/**\n * @internal\n */\nexport enum GraphQLErrorCode {\n UNAUTHENTICATED = 'UNAUTHENTICATED',\n FORBIDDEN = 'FORBIDDEN',\n INTERNAL_SERVER_ERROR = 'INTERNAL_SERVER_ERROR',\n BAD_USER_INPUT = 'BAD_USER_INPUT',\n BAD_REQUEST = 'BAD_REQUEST',\n}\n/**\n * @internal\n */\nexport function hasExtensionCode(\n error: CombinedError,\n code: GraphQLErrorCode,\n): boolean {\n return error.graphQLErrors.some((gqlError) => {\n return gqlError.extensions?.code === code;\n });\n}\n\n/**\n * Error indicating an unexpected condition occurred.\n */\nexport class UnexpectedError extends ResultAwareError {\n name = 'UnexpectedError' as const;\n}\n\n/**\n * Error indicating an error occurred while signing.\n */\nexport class SigningError extends ResultAwareError {\n name = 'SigningError' as const;\n}\n\nexport type TransactionErrorArgs = {\n txHash: TxHash;\n request: TransactionRequest;\n link?: string;\n};\n\n/**\n * Error indicating a transaction failed.\n */\nexport class TransactionError extends ResultAwareError {\n name = 'TransactionError' as const;\n\n protected constructor(message: string, cause: TransactionRequest) {\n super(message, { cause });\n }\n\n static new(args: TransactionErrorArgs) {\n const { txHash, request, link } = args;\n const message = link\n ? `Transaction failed: ${txHash}\\n→ View on explorer: ${link}`\n : `Transaction failed: ${txHash}`;\n return new TransactionError(message, request);\n }\n}\n\n/**\n * Error indicating a timeout occurred.\n */\nexport class TimeoutError extends ResultAwareError {\n name = 'TimeoutError' as const;\n}\n\n/**\n * Error indicating an operation was not executed due to a validation error.\n * See the `cause` property for more information.\n */\nexport class ValidationError<\n TGqlNode extends TypedSelectionSet,\n> extends ResultAwareError {\n name = 'ValidationError' as const;\n\n constructor(public readonly cause: TGqlNode) {\n super(cause.__typename);\n }\n\n static fromGqlNode<TGqlNode extends TypedSelectionSet>(\n error: TGqlNode,\n ): ValidationError<TGqlNode> {\n return new ValidationError(error);\n }\n}\n","import type { AnyVariables, StandardData } from '@aave/graphql';\nimport { Deferred, invariant, never, ResultAsync } from '@aave/types';\nimport type { TypedDocumentNode } from '@urql/core';\nimport {\n type DocumentNode,\n type FieldNode,\n type FragmentDefinitionNode,\n Kind,\n type OperationDefinitionNode,\n OperationTypeNode,\n type VariableDefinitionNode,\n visit,\n} from 'graphql';\n\nimport { UnexpectedError } from './errors';\n\ninterface StoredQuery<TValue, TVariables extends AnyVariables> {\n alias: string;\n document: TypedDocumentNode<StandardData<TValue>, TVariables>;\n variables: AnyVariables;\n deferred: Deferred<TValue>;\n}\n\nexport type BatchQueryData = Record<string, unknown>;\n\nexport class BatchQueryBuilder {\n // biome-ignore lint/suspicious/noExplicitAny: intentional due to the etherogenous nature of the queries\n private queries: StoredQuery<any, any>[] = [];\n\n addQuery = <TValue, TVariables extends AnyVariables>(\n document: TypedDocumentNode<StandardData<TValue>, TVariables>,\n variables: TVariables,\n ): ResultAsync<TValue, UnexpectedError> => {\n invariant(\n this.queries.length < 10,\n 'Batch queries supports a maximum of 10 queries',\n );\n\n const alias = `value_${this.queries.length}`;\n const deferred = new Deferred<TValue>();\n\n this.queries.push({ alias, document, variables, deferred });\n\n return ResultAsync.fromPromise(deferred.promise, (err) => {\n if (UnexpectedError.is(err)) {\n return err;\n }\n return UnexpectedError.from(err);\n });\n };\n\n build<TVariables extends AnyVariables>(): [\n TypedDocumentNode<BatchQueryData, TVariables>,\n TVariables,\n ] {\n const allFragments: Map<string, FragmentDefinitionNode> = new Map();\n const selections: FieldNode[] = [];\n const variableDefinitions: VariableDefinitionNode[] = [];\n const mergedVariables: AnyVariables = {};\n\n let varId = 0;\n for (const { alias, document, variables } of this.queries) {\n const [operation, fragments] = extractQueryParts(document);\n\n for (const fragment of fragments) {\n const name = fragment.name.value;\n if (!allFragments.has(name)) {\n allFragments.set(name, fragment);\n }\n }\n\n const varMapping = new Map<string, string>();\n const localDefs =\n operation.variableDefinitions?.map((v): VariableDefinitionNode => {\n const newVarName = `${v.variable.name.value}_${varId++}`;\n varMapping.set(v.variable.name.value, newVarName);\n\n mergedVariables[newVarName] =\n variables[v.variable.name.value] ?? never();\n\n return {\n ...v,\n variable: {\n ...v.variable,\n name: { kind: Kind.NAME, value: newVarName },\n },\n };\n }) ?? [];\n\n variableDefinitions.push(...localDefs);\n\n const rewritten = visit(operation.selectionSet, {\n Variable(node) {\n const renamed = varMapping.get(node.name.value);\n if (!renamed) return node;\n return {\n ...node,\n name: { kind: Kind.NAME, value: renamed },\n };\n },\n Field(node) {\n return {\n ...node,\n alias: { kind: Kind.NAME, value: alias },\n };\n },\n });\n\n selections.push(...(rewritten.selections as FieldNode[]));\n }\n\n const mergedOperation: OperationDefinitionNode = {\n kind: Kind.OPERATION_DEFINITION,\n operation: OperationTypeNode.QUERY,\n variableDefinitions,\n selectionSet: {\n kind: Kind.SELECTION_SET,\n selections,\n },\n };\n\n const mergedDocument: DocumentNode = {\n kind: Kind.DOCUMENT,\n definitions: [mergedOperation, ...allFragments.values()],\n };\n return [mergedDocument, mergedVariables as TVariables];\n }\n\n resolve(data: BatchQueryData) {\n for (const { alias, deferred } of this.queries) {\n if (Object.hasOwn(data, alias) && data[alias] !== undefined) {\n deferred.resolve(data[alias]);\n } else {\n deferred.reject(\n UnexpectedError.from(\n `Missing response data for query alias \"${alias}\". Please report this issue to the Avara team.`,\n ),\n );\n }\n }\n }\n}\n\nfunction extractQueryParts(\n document: TypedDocumentNode<StandardData<unknown>>,\n): [OperationDefinitionNode, FragmentDefinitionNode[]] {\n let operation: OperationDefinitionNode | undefined;\n const fragments: FragmentDefinitionNode[] = [];\n for (const definition of document.definitions) {\n switch (definition.kind) {\n case Kind.OPERATION_DEFINITION:\n invariant(\n definition.operation === OperationTypeNode.QUERY,\n 'Only query operations are supported',\n );\n invariant(\n operation === undefined,\n 'Only one operation definition is supported',\n );\n\n operation = definition;\n break;\n\n case Kind.FRAGMENT_DEFINITION:\n fragments.push(definition);\n break;\n\n default:\n never(`Unexpected definition kind: ${definition.kind}`);\n }\n }\n\n invariant(operation, 'No operation definition found in the document');\n\n return [operation, fragments];\n}\n","/**\n * The environment configuration type.\n */\nexport type EnvironmentConfig = {\n name: string;\n backend: string;\n indexingTimeout: number;\n pollingInterval: number;\n};\n\n/**\n * The production environment configuration.\n */\nexport const production: EnvironmentConfig = {\n name: 'production',\n backend: 'https://api.v3.aave.com/graphql',\n indexingTimeout: 60_000,\n pollingInterval: 100,\n};\n\n/**\n * @internal\n */\nexport const staging: EnvironmentConfig = {\n name: 'staging',\n backend: 'https://api.v3.staging.aave.com/graphql',\n indexingTimeout: 60_000,\n pollingInterval: 100,\n};\n\n/**\n * @internal\n */\nexport const local: EnvironmentConfig = {\n name: 'local',\n backend: 'http://localhost:3011/graphql',\n indexingTimeout: 60_000,\n pollingInterval: 1000,\n};\n","import { invariant } from '@aave/types';\nimport type { AnyVariables, TypedDocumentNode } from '@urql/core';\nimport {\n type FragmentDefinitionNode,\n type FragmentSpreadNode,\n Kind,\n type OperationDefinitionNode,\n type SelectionSetNode,\n visit,\n} from 'graphql';\nimport type { Maybe } from 'graphql/jsutils/Maybe';\nimport type { ObjMap } from 'graphql/jsutils/ObjMap';\n\nclass FragmentDeduplicator<TResult, TVariables extends AnyVariables> {\n private _fragments: ObjMap<FragmentDefinitionNode> | undefined;\n private _fragmentSpreads: Map<SelectionSetNode, Array<FragmentSpreadNode>>;\n private _recursivelyReferencedFragments: Map<\n OperationDefinitionNode,\n Array<FragmentDefinitionNode>\n >;\n\n constructor(\n private readonly document: TypedDocumentNode<TResult, TVariables>,\n ) {\n this._fragmentSpreads = new Map();\n this._recursivelyReferencedFragments = new Map();\n }\n\n dedupe(): TypedDocumentNode<TResult, TVariables> {\n const operationDefs: Array<OperationDefinitionNode> = [];\n const fragmentDefs: Array<FragmentDefinitionNode> = [];\n\n const toRemove: Array<FragmentDefinitionNode> = [];\n\n visit(this.document, {\n OperationDefinition: (node) => {\n operationDefs.push(node);\n return false;\n },\n FragmentDefinition: (node) => {\n fragmentDefs.push(node);\n return false;\n },\n Document: {\n leave: () => {\n const fragmentNameUsed = Object.create(null);\n for (const operation of operationDefs) {\n for (const fragment of this.getRecursivelyReferencedFragments(\n operation,\n )) {\n fragmentNameUsed[fragment.name.value] = true;\n }\n }\n\n for (const fragmentDef of fragmentDefs) {\n const fragName = fragmentDef.name.value;\n if (fragmentNameUsed[fragName] !== true) {\n toRemove.push(fragmentDef);\n }\n }\n },\n },\n });\n\n return visit(this.document, {\n FragmentDefinition: (node) => {\n if (toRemove.indexOf(node) !== -1) {\n return null;\n }\n return node;\n },\n });\n }\n\n private getRecursivelyReferencedFragments(\n operation: OperationDefinitionNode,\n ): ReadonlyArray<FragmentDefinitionNode> {\n let fragments = this._recursivelyReferencedFragments.get(operation);\n if (!fragments) {\n fragments = [];\n const collectedNames = Object.create(null);\n const nodesToVisit: Array<SelectionSetNode> = [operation.selectionSet];\n let node: SelectionSetNode | undefined;\n // biome-ignore lint/suspicious/noAssignInExpressions: for now\n while ((node = nodesToVisit.pop())) {\n for (const spread of this.getFragmentSpreads(node)) {\n const fragName = spread.name.value;\n if (collectedNames[fragName] !== true) {\n collectedNames[fragName] = true;\n const fragment = this.getFragment(fragName);\n if (fragment) {\n fragments.push(fragment);\n nodesToVisit.push(fragment.selectionSet);\n }\n }\n }\n }\n this._recursivelyReferencedFragments.set(operation, fragments);\n }\n return fragments;\n }\n\n private getFragmentSpreads(\n node: SelectionSetNode,\n ): ReadonlyArray<FragmentSpreadNode> {\n let spreads = this._fragmentSpreads.get(node);\n if (!spreads) {\n spreads = [];\n const setsToVisit: Array<SelectionSetNode> = [node];\n let set: SelectionSetNode | undefined;\n // biome-ignore lint/suspicious/noAssignInExpressions: safe\n while ((set = setsToVisit.pop())) {\n for (const selection of set.selections) {\n if (selection.kind === Kind.FRAGMENT_SPREAD) {\n spreads.push(selection);\n } else if (selection.selectionSet) {\n setsToVisit.push(selection.selectionSet);\n }\n }\n }\n this._fragmentSpreads.set(node, spreads);\n }\n return spreads;\n }\n\n private getFragment(name: string): Maybe<FragmentDefinitionNode> {\n let fragments: ObjMap<FragmentDefinitionNode>;\n if (this._fragments) {\n fragments = this._fragments;\n } else {\n fragments = Object.create(null);\n for (const defNode of this.document.definitions) {\n if (defNode.kind === Kind.FRAGMENT_DEFINITION) {\n fragments[defNode.name.value] = defNode;\n }\n }\n this._fragments = fragments;\n }\n return fragments[name];\n }\n}\n\n/**\n * @internal\n */\nexport class FragmentResolver {\n private constructor(\n private readonly fragments: Map<string, FragmentDefinitionNode>,\n ) {}\n\n static from(nodes: TypedDocumentNode[]): FragmentResolver {\n const fragments = new Map<string, FragmentDefinitionNode>();\n\n for (const fragment of nodes) {\n for (const definition of fragment.definitions) {\n invariant(\n definition.kind === 'FragmentDefinition',\n `expected a fragment definition, got ${fragment.definitions[0]?.kind}`,\n );\n invariant(\n !fragments.has(definition.name.value),\n `Duplicate fragment detected. A fragment named \"${definition.name.value}\" has already been provided, either directly or as part of another fragment document.`,\n );\n fragments.set(definition.name.value, definition);\n }\n }\n\n return new FragmentResolver(fragments);\n }\n\n replaceFrom<TResult, TVariables extends AnyVariables>(\n document: TypedDocumentNode<TResult, TVariables>,\n ): TypedDocumentNode<TResult, TVariables> {\n const injected = visit(document, {\n FragmentDefinition: (node) => {\n if (this.fragments.has(node.name.value)) {\n return null;\n }\n return node;\n },\n Document: {\n leave: (node) => {\n return {\n ...node,\n definitions: [...node.definitions, ...this.fragments.values()],\n };\n },\n },\n });\n\n return new FragmentDeduplicator(injected).dedupe();\n }\n}\n","import type { ClientConfig } from './config';\nimport { type EnvironmentConfig, production } from './environments';\nimport { FragmentResolver } from './fragments';\n\n/**\n * @internal\n */\nexport type Context = {\n environment: EnvironmentConfig;\n headers?: Record<string, string>;\n cache: boolean;\n debug: boolean;\n fragments: FragmentResolver;\n};\n\n/**\n * @internal\n */\nexport function configureContext(from: ClientConfig): Context {\n return {\n environment: from.environment ?? production,\n headers: from.headers,\n cache: from.cache ?? false,\n debug: from.debug ?? false,\n fragments: FragmentResolver.from(from.fragments ?? []),\n };\n}\n","type LogMethod = (...args: unknown[]) => void;\n\nexport enum LogLevel {\n TRACE = 0,\n DEBUG = 1,\n INFO = 2,\n WARN = 3,\n ERROR = 4,\n SILENT = 5,\n}\n\nexport class Logger {\n private level: LogLevel;\n private name: string;\n\n private constructor(name: string, level: LogLevel = LogLevel.WARN) {\n this.name = name;\n this.level = level;\n this.replaceMethods();\n }\n\n static named(name: string, level: LogLevel = LogLevel.WARN): Logger {\n return new Logger(name, level);\n }\n\n trace: LogMethod = () => {};\n debug: LogMethod = () => {};\n info: LogMethod = () => {};\n warn: LogMethod = () => {};\n error: LogMethod = () => {};\n log: LogMethod = () => {}; // alias for debug\n\n private replaceMethods() {\n (['trace', 'debug', 'info', 'warn', 'error'] as const).forEach(\n (methodName, index) => {\n if (index >= this.level) {\n this[methodName] = () => {};\n } else {\n this[methodName] = (...args) =>\n console[methodName === 'debug' ? 'log' : methodName](\n `[${this.name}]`,\n ...args,\n );\n }\n },\n );\n this.log = this.debug;\n }\n}\n","import type {\n ERC712Signature,\n ExecutionPlan,\n HasProcessedKnownTransactionRequest,\n InsufficientBalanceError,\n OperationType,\n PermitTypedDataResponse,\n} from '@aave/graphql';\nimport type { ResultAsync, TxHash } from '@aave/types';\nimport type { SigningError, TransactionError, ValidationError } from './errors';\n\nexport type TransactionExecutionResult = {\n txHash: TxHash;\n operation: OperationType | null;\n};\n\n/**\n * @internal\n */\nexport function isHasProcessedKnownTransactionRequest(\n result: TransactionExecutionResult,\n): result is HasProcessedKnownTransactionRequest {\n return result.operation !== null;\n}\n\nexport type ExecutionPlanHandler<T extends ExecutionPlan = ExecutionPlan> = (\n result: T,\n) => ResultAsync<\n TransactionExecutionResult,\n SigningError | TransactionError | ValidationError<InsufficientBalanceError>\n>;\n\nexport type PermitHandler = (\n result: PermitTypedDataResponse,\n) => ResultAsync<ERC712Signature, SigningError>;\n","/**\n * @internal\n */\nexport function delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import type {\n HasProcessedKnownTransactionRequest,\n StandardData,\n} from '@aave/graphql';\nimport {\n errAsync,\n invariant,\n okAsync,\n ResultAsync,\n type TxHash,\n} from '@aave/types';\nimport {\n type AnyVariables,\n createClient,\n type Exchange,\n fetchExchange,\n type OperationResult,\n type OperationResultSource,\n type TypedDocumentNode,\n type Client as UrqlClient,\n} from '@urql/core';\nimport { hasProcessedKnownTransaction } from './actions';\nimport { BatchQueryBuilder } from './batch';\nimport type { ClientConfig } from './config';\nimport { type Context, configureContext } from './context';\nimport { TimeoutError, UnexpectedError } from './errors';\nimport { Logger, LogLevel } from './logger';\nimport {\n isHasProcessedKnownTransactionRequest,\n type TransactionExecutionResult,\n} from './types';\nimport { delay } from './utils';\n\nfunction takeValue<T>({\n data,\n error,\n}: OperationResult<StandardData<T> | undefined, AnyVariables>): T {\n invariant(data, `Expected a value, got: ${error?.message}`);\n return data.value;\n}\n\nexport class AaveClient {\n /**\n * @internal\n */\n public readonly urql: UrqlClient;\n\n private readonly logger: Logger;\n\n private constructor(private readonly context: Context) {\n this.logger = Logger.named(\n this.constructor.name,\n context.debug ? LogLevel.DEBUG : LogLevel.SILENT,\n );\n\n this.urql = createClient({\n url: context.environment.backend,\n fetchOptions: {\n credentials: 'omit',\n headers: context.headers,\n },\n exchanges: this.exchanges(),\n });\n }\n\n /**\n * Create a new instance of the {@link AaveClient}.\n *\n * ```ts\n * const client = AaveClient.create({\n * environment: production,\n * origin: 'http://example.com',\n * });\n * ```\n *\n * @param options - The options to configure the client.\n * @returns The new instance of the client.\n */\n static create(options?: ClientConfig): AaveClient {\n return new AaveClient(configureContext(options ?? {}));\n }\n\n /**\n * Execute a GraphQL query operation.\n *\n * @param document - The GraphQL document to execute.\n * @param variables - The variables to pass to the operation.\n * @returns The result of the operation.\n */\n public query<TValue, TVariables extends AnyVariables>(\n document: TypedDocumentNode<StandardData<TValue>, TVariables>,\n variables: TVariables,\n ): ResultAsync<TValue, UnexpectedError> {\n const query = this.context.fragments.replaceFrom(document);\n return this.resultFrom(this.urql.query(query, variables)).map(takeValue);\n }\n\n /**\n * Execute a GraphQL mutation operation.\n *\n * @param document - The GraphQL document to execute.\n * @param variables - The variables to pass to the operation.\n * @returns The result of the operation.\n */\n public mutation<TValue, TVariables extends AnyVariables>(\n document: TypedDocumentNode<StandardData<TValue>, TVariables>,\n variables: TVariables,\n ): ResultAsync<TValue, UnexpectedError> {\n return this.resultFrom(this.urql.mutation(document, variables)).map(\n takeValue,\n );\n }\n\n // TODO update example below\n /**\n * Execute a batch of GraphQL query operations.\n *\n * @alpha This is an alpha API and may be subject to breaking changes.\n *\n * ```ts\n * const result = await client.batch((c) => [\n * fetchAccount(c, { address: evmAddress('0x1234…') }).map(nonNullable),\n * fetchBalancesBulk(c, {\n * includeNative: true,\n * tokens: [\n * evmAddress(\"0x5678…\"),\n * evmAddress(\"0x9012…\"),\n * ],\n * }),\n * ]);\n *\n * // const result: Result<\n * // [\n * // Account,\n * // AnyAccountBalance[],\n * // ],\n * // UnauthenticatedError | UnexpectedError\n * // >\n * ```\n *\n * @param cb - The callback with the scoped client to execute the actions with.\n * @returns The results of all queries in the same order as they were added.\n */\n batch<T1, T2, E1 extends Error, E2 extends Error>(\n cb: (client: this) => [ResultAsync<T1, E1>, ResultAsync<T2, E2>],\n ): ResultAsync<[T1, T2], E1 | E2>;\n batch<T1, T2, T3, E1 extends Error, E2 extends Error, E3 extends Error>(\n cb: (\n client: this,\n ) => [ResultAsync<T1, E1>, ResultAsync<T2, E2>, ResultAsync<T3, E3>],\n ): ResultAsync<[T1, T2, T3], E1 | E2 | E3>;\n batch<\n T1,\n T2,\n T3,\n T4,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ],\n ): ResultAsync<[T1, T2, T3, T4], E1 | E2 | E3 | E4>;\n batch<\n T1,\n T2,\n T3,\n T4,\n T5,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n E5 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ResultAsync<T5, E5>,\n ],\n ): ResultAsync<[T1, T2, T3, T4, T5], E1 | E2 | E3 | E4 | E5>;\n batch<\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n E5 extends Error,\n E6 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ResultAsync<T5, E5>,\n ResultAsync<T6, E6>,\n ],\n ): ResultAsync<[T1, T2, T3, T4, T5, T6], E1 | E2 | E3 | E4 | E5 | E6>;\n batch<\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n E5 extends Error,\n E6 extends Error,\n E7 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ResultAsync<T5, E5>,\n ResultAsync<T6, E6>,\n ResultAsync<T7, E7>,\n ],\n ): ResultAsync<\n [T1, T2, T3, T4, T5, T6, T7],\n E1 | E2 | E3 | E4 | E5 | E6 | E7\n >;\n batch<\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n E5 extends Error,\n E6 extends Error,\n E7 extends Error,\n E8 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ResultAsync<T5, E5>,\n ResultAsync<T6, E6>,\n ResultAsync<T7, E7>,\n ResultAsync<T8, E8>,\n ],\n ): ResultAsync<\n [T1, T2, T3, T4, T5, T6, T7, T8],\n E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8\n >;\n batch<\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n T9,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n E5 extends Error,\n E6 extends Error,\n E7 extends Error,\n E8 extends Error,\n E9 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ResultAsync<T5, E5>,\n ResultAsync<T6, E6>,\n ResultAsync<T7, E7>,\n ResultAsync<T8, E8>,\n ResultAsync<T9, E9>,\n ],\n ): ResultAsync<\n [T1, T2, T3, T4, T5, T6, T7, T8, T9],\n E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9\n >;\n batch<\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n T9,\n T10,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n E5 extends Error,\n E6 extends Error,\n E7 extends Error,\n E8 extends Error,\n E9 extends Error,\n E10 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ResultAsync<T5, E5>,\n ResultAsync<T6, E6>,\n ResultAsync<T7, E7>,\n ResultAsync<T8, E8>,\n ResultAsync<T9, E9>,\n ResultAsync<T10, E10>,\n ],\n ): ResultAsync<\n [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10],\n E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9 | E10\n >;\n batch<T, E extends Error>(\n cb: (client: this) => ResultAsync<T, E>[],\n ): ResultAsync<T[], E>;\n batch(\n cb: (client: this) => ResultAsync<unknown[], unknown>[],\n ): ResultAsync<unknown[], unknown> {\n const builder = new BatchQueryBuilder();\n\n const client: this = Object.create(this, {\n query: {\n value: builder.addQuery,\n },\n });\n\n const combined = ResultAsync.combine(cb(client));\n const [document, variables] = builder.build();\n\n const query = this.context.fragments.replaceFrom(document);\n\n return this.resultFrom(this.urql.query(query, variables))\n .andTee(({ data, error }) => {\n invariant(data, `Expected a value, got: ${error?.message}`);\n builder.resolve(data);\n })\n .andThen(() => combined);\n }\n\n /**\n * Given the transaction hash of an Aave protocol transaction, wait for the transaction to be\n * processed by the Aave v3 API.\n *\n * Returns a {@link TimeoutError} if the transaction is not processed within the expected timeout period.\n *\n * @param result - The transaction execution result to wait for.\n * @returns The transaction hash or a TimeoutError\n */\n readonly waitForTransaction = (\n result: TransactionExecutionResult,\n ): ResultAsync<TxHash, TimeoutError | UnexpectedError> => {\n invariant(\n isHasProcessedKnownTransactionRequest(result),\n `Received a transaction result for an untracked operation. Make sure you're following the instructions in the docs.`,\n );\n\n return ResultAsync.fromPromise(\n this.pollTransactionStatus(result),\n (err) => {\n if (err instanceof TimeoutError || err instanceof UnexpectedError) {\n return err;\n }\n return UnexpectedError.from(err);\n },\n );\n };\n\n protected async pollTransactionStatus(\n request: HasProcessedKnownTransactionRequest,\n ): Promise<TxHash> {\n const startedAt = Date.now();\n\n while (Date.now() - startedAt < this.context.environment.indexingTimeout) {\n const processed = await hasProcessedKnownTransaction(this, request).match(\n (ok) => ok,\n (err) => {\n throw err;\n },\n );\n\n if (processed) {\n return request.txHash;\n }\n\n await delay(this.context.environment.pollingInterval);\n }\n throw TimeoutError.from(\n `Timeout waiting for transaction ${request.txHash} to be processed.`,\n );\n }\n\n protected exchanges(): Exchange[] {\n return [fetchExchange];\n }\n\n protected resultFrom<TData, TVariables extends AnyVariables>(\n source: OperationResultSource<OperationResult<TData, TVariables>>,\n ): ResultAsync<OperationResult<TData, TVariables>, UnexpectedError> {\n return ResultAsync.fromPromise(source.toPromise(), (err: unknown) => {\n this.logger.error(err);\n console.log(err);\n return UnexpectedError.from(err);\n }).andThen((result) => {\n if (result.error?.networkError) {\n return errAsync(UnexpectedError.from(result.error.networkError));\n }\n return okAsync(result);\n });\n }\n}\n"]}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{d as AaveClient,c as local,a as production,b as staging}from'./chunk-
|
|
1
|
+
export{d as AaveClient,c as local,a as production,b as staging}from'./chunk-HMEUZQNX.js';export{a as GraphQLErrorCode,d as SigningError,f as TimeoutError,e as TransactionError,c as UnexpectedError,g as ValidationError,b as hasExtensionCode}from'./chunk-QYPBLR6B.js';import'./chunk-7O7GNNAR.js';import'./chunk-FW4363Y4.js';export*from'@aave/graphql';export*from'@aave/types';//# sourceMappingURL=index.js.map
|
|
2
2
|
//# sourceMappingURL=index.js.map
|