{"version":3,"sources":["../src/errors.ts","../src/tokens.ts","../src/AuthenticatedUser.ts","../src/authorization.ts","../src/actions/authentication.ts","../src/utils.ts","../src/actions/transactions.ts","../src/fragments.ts","../src/context.ts","../src/logger.ts","../src/clients.ts","../src/types.ts"],"names":["GraphQLErrorCode","ResultAwareError","ok","jwtDecode","err","Role","never","OperationType","RevokeAuthenticationMutation","SwitchAccountMutation","TransactionStatusQuery","visit","Kind","invariant","InMemoryStorageProvider","createClient","fetchExchange","ResultAsync","errAsync","okAsync","ChallengeMutation","AuthenticateMutation","signatureFrom","CredentialsStorage","authExchange","RefreshMutation"],"mappings":"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","file":"index.cjs","sourcesContent":["import { ResultAwareError } from '@lens-protocol/types';\nimport type { CombinedError } from '@urql/core';\nimport type { ErrorResponse } from './types';\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(error: CombinedError, code: GraphQLErrorCode): boolean {\n  return error.graphQLErrors.some((gqlError) => {\n    return gqlError.extensions?.code === code;\n  });\n}\n\n/**\n * Error indicating a user is not authenticated.\n */\nexport class UnauthenticatedError extends ResultAwareError {\n  name = 'UnauthenticatedError' as const;\n\n  static fromCombinedError(error: CombinedError): UnauthenticatedError {\n    return new UnauthenticatedError(error.message, { cause: error });\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 a user is not authorized.\n */\nexport class AuthenticationError extends ResultAwareError {\n  name = 'AuthenticationError' 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\n/**\n * Error indicating a transaction failed.\n */\nexport class TransactionError extends ResultAwareError {\n  name = 'TransactionError' as const;\n}\n\n/**\n * Error indicating a transaction failed to index.\n */\nexport class TransactionIndexingError extends ResultAwareError {\n  name = 'TransactionIndexingError' as const;\n}\n\n/**\n * Error indicating metadata failed to index.\n */\nexport class MetadataIndexingError extends ResultAwareError {\n  name = 'MetadataIndexingError' 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<T extends string = string> extends ResultAwareError {\n  name = 'ValidationError' as const;\n\n  constructor(public readonly cause: ErrorResponse<T>) {\n    super(cause.reason);\n  }\n\n  static fromErrorResponse<T extends string>(error: ErrorResponse<T>): ValidationError<T> {\n    return new ValidationError(error);\n  }\n}\n","import type { Role } from '@lens-protocol/graphql';\nimport type { AccessToken, EvmAddress, Result } from '@lens-protocol/types';\nimport type { UUID } from '@lens-protocol/types';\nimport { type IdToken, err, ok } from '@lens-protocol/types';\nimport { jwtDecode } from 'jwt-decode';\nimport { UnexpectedError } from './errors';\n\nexport const SPONSORED_CLAIM = 'tag:lens.dev,2024:sponsored';\nexport const ROLE_CLAIM = 'tag:lens.dev,2024:role';\n\nexport interface ActorClaim {\n  sub: EvmAddress;\n}\n\nexport interface IdTokenClaims {\n  /**\n   * Subject - the `signedBy` address used to sign the Authentication Challenge.\n   * This could be the Account or an Account Manager for it.\n   * Example: 0xC47Cccc2bf4CF2635a817C01c6A6d965045b06e6\n   */\n  sub: EvmAddress;\n\n  /**\n   * Issuer - the Lens API instance that issued the token.\n   * Typically: https://api-v3.lens.dev\n   */\n  iss: string;\n\n  /**\n   * Audience - the Lens App address that the token is intended for.\n   * Example: 0x00004747f7a56EE7Af7237220c960a7D06232626\n   */\n  aud: EvmAddress;\n\n  /**\n   * Issued At - the timestamp when the token was issued.\n   */\n  iat: number;\n\n  /**\n   * Expiration - the timestamp indicating when the token will expire.\n   * This is used to determine when to preemptively refresh the token.\n   */\n  exp: number;\n\n  /**\n   * Session ID - the unique identifier of the session that the token was issued for.\n   */\n  sid: UUID;\n\n  /**\n   * Optional claim that allows the token to act on behalf of another Account.\n   * This is useful for Account Managers to specify the Account address they can act on behalf of.\n   */\n  act?: ActorClaim | null;\n\n  /**\n   * Sponsored - a boolean indicating if the Account is sponsored.\n   */\n  [SPONSORED_CLAIM]: boolean;\n\n  /**\n   * Role - the authenticated role of the user.\n   */\n  [ROLE_CLAIM]: Role;\n}\n\n/**\n * Decodes an Id Token into its claims.\n *\n * @param token - The Id Token to decode.\n * @returns The Id Token claims or an Unexpected Error.\n */\nexport function decodeIdToken(token: IdToken): Result<IdTokenClaims, UnexpectedError> {\n  try {\n    return ok(jwtDecode(token));\n  } catch (cause) {\n    return err(UnexpectedError.from(cause));\n  }\n}\n\n/**\n * @internal\n */\nexport interface AccessTokenClaims {\n  /**\n   * Subject - the `signedBy` address used to sign the Authentication Challenge.\n   * This could be the Account or an Account Manager for it.\n   * Example: 0xC47Cccc2bf4CF2635a817C01c6A6d965045b06e6\n   */\n  sub: EvmAddress;\n\n  /**\n   * Issuer - the Lens API instance that issued the token.\n   * Typically:\n   * - Mainnet: https://api.lens.dev\n   * - Testnet: https://api.testnet.lens.dev\n   * - Staging: https://api-staging.lens.dev\n   * - Local: http://localhost:3000\n   */\n  iss: string;\n\n  /**\n   * Audience - the Lens API instance that the token is intended for.\n   * Example: https://api.lens.dev\n   */\n  aud: string;\n\n  /**\n   * Issued At - the timestamp when the token was issued.\n   */\n  iat: number;\n\n  /**\n   * Expiration - the timestamp indicating when the token will expire.\n   * This is used to determine when to preemptively refresh the token.\n   */\n  exp: number;\n\n  /**\n   * Session ID - the unique identifier of the session that the token was issued for.\n   */\n  sid: UUID;\n\n  /**\n   * Lens App Address - the Lens App address that the token was issued for.\n   * Example: 0x00004747f7a56EE7Af7237220c960a7D06232626\n   */\n  client_id: EvmAddress;\n\n  /**\n   * Optional claim that allows the token to act on behalf of another Account.\n   * This is useful for Account Managers to specify the Account address they can act on behalf of.\n   */\n  act?: ActorClaim | null;\n\n  /**\n   * Optional claim that specifies the scope of the token.\n   * A space-separated lowercase string of permissions.\n   */\n  scope?: string[] | null;\n\n  /**\n   * Sponsored - a boolean indicating if the Account is sponsored.\n   */\n  [SPONSORED_CLAIM]: boolean;\n\n  /**\n   * Role - the authenticated role of the user.\n   */\n  [ROLE_CLAIM]: Role;\n}\n\n/**\n * @internal\n */\nexport function decodeAccessToken(token: AccessToken): Result<AccessTokenClaims, UnexpectedError> {\n  try {\n    return ok(jwtDecode(token));\n  } catch (cause) {\n    return err(UnexpectedError.from(cause));\n  }\n}\n","import { Role } from '@lens-protocol/graphql';\nimport { type EvmAddress, type Result, type UUID, err, never, ok } from '@lens-protocol/types';\nimport { UnexpectedError } from './errors';\nimport { type IdTokenClaims, ROLE_CLAIM, SPONSORED_CLAIM } from './tokens';\n\nexport type AuthenticatedUser = {\n  address: EvmAddress;\n  app: EvmAddress;\n  authenticationId: UUID;\n  role: Role;\n  signer: EvmAddress;\n  sponsored: boolean;\n};\n\n/**\n * @internal\n */\nexport function authenticatedUser(\n  claims: IdTokenClaims,\n): Result<AuthenticatedUser, UnexpectedError> {\n  switch (claims[ROLE_CLAIM]) {\n    case Role.AccountManager:\n      return ok({\n        address: claims.act?.sub ?? never('Account Manager must have an Actor Claim'),\n        app: claims.aud,\n        authenticationId: claims.sid,\n        role: Role.AccountManager,\n        signer: claims.sub,\n        sponsored: claims[SPONSORED_CLAIM],\n      });\n\n    case Role.AccountOwner:\n      return ok({\n        address: claims.act?.sub ?? never('Account Owner must have an Actor Claim'),\n        app: claims.aud,\n        authenticationId: claims.sid,\n        role: Role.AccountOwner,\n        signer: claims.sub,\n        sponsored: claims[SPONSORED_CLAIM],\n      });\n\n    case Role.OnboardingUser:\n      return ok({\n        address: claims.sub,\n        app: claims.aud,\n        authenticationId: claims.sid,\n        role: Role.OnboardingUser,\n        signer: claims.sub,\n        sponsored: claims[SPONSORED_CLAIM],\n      });\n\n    case Role.Builder:\n      return ok({\n        address: claims.sub,\n        app: claims.aud,\n        authenticationId: claims.sid,\n        role: Role.Builder,\n        signer: claims.sub,\n        sponsored: claims[SPONSORED_CLAIM],\n      });\n\n    default:\n      return err(UnexpectedError.from(`Unexpected role: ${claims[ROLE_CLAIM]}`));\n  }\n}\n","/**\n * Operations types.\n */\nexport enum OperationType {\n  Post = 'Post',\n  Repost = 'Repost',\n  EditPost = 'EditPost',\n  DeletePost = 'DeletePost',\n  Follow = 'Follow',\n  Unfollow = 'Unfollow',\n  CreateAccount = 'CreateAccount',\n  CreateUsername = 'CreateUsername',\n  CreateAndAssignUsername = 'CreateAndAssignUsername',\n  AssignUsername = 'AssignUsername',\n  UnassignUsername = 'UnassignUsername',\n  SetAccountMetadata = 'SetAccountMetadata',\n  JoinGroup = 'JoinGroup',\n  LeaveGroup = 'LeaveGroup',\n  AddGroupMember = 'AddGroupMember',\n  RemoveGroupMember = 'RemoveGroupMember',\n}\n\n/**\n * An operation approval request.\n */\nexport type OperationApprovalRequest = {\n  nonce: string;\n  deadline: string;\n  operation: OperationType;\n  validator: string;\n  account: string;\n};\n","import type {\n  Account,\n  AuthenticatedSession,\n  AuthenticatedSessionsRequest,\n  LastLoggedInAccountRequest,\n  MeResult,\n  Paginated,\n  RefreshRequest,\n  RefreshResult,\n  RevokeAuthenticationRequest,\n  RolloverRefreshRequest,\n  SwitchAccountRequest,\n  SwitchAccountResult,\n} from '@lens-protocol/graphql';\nimport {\n  AuthenticatedSessionsQuery,\n  CurrentSessionQuery,\n  LastLoggedInAccountQuery,\n  LegacyRolloverRefreshMutation,\n  MeQuery,\n  RefreshMutation,\n  RevokeAuthenticationMutation,\n  SwitchAccountMutation,\n} from '@lens-protocol/graphql';\nimport type { ResultAsync } from '@lens-protocol/types';\n\nimport type { AnyClient, SessionClient } from '../clients';\nimport type { UnauthenticatedError, UnexpectedError } from '../errors';\n\n/**\n * Get the AuthenticatedSession associated with the authenticated Account.\n *\n * ```ts\n * const result = await currentSession(sessionClient);\n * ```\n *\n * @param client - The session client.\n * @returns The current AuthenticatedSession details.\n */\nexport function currentSession(\n  client: SessionClient,\n): ResultAsync<AuthenticatedSession, UnauthenticatedError | UnexpectedError> {\n  return client.query(CurrentSessionQuery, {});\n}\n\n/**\n * Revoke the authentication from the provided authentication ID.\n *\n * @remarks Use the {@link SessionClient#logout} method to logout instead.\n * It's unlikely you'll need to use this action directly.\n *\n * ```ts\n * const result = await revokeAuthentication(sessionClient, {\n *   authenticationId: 'f4dd2ea1-58d4-4210-86a2-67b7571f241a',\n * });\n * ```\n *\n * @param client - The session client for the authenticated Account.\n * @param request - The mutation request.\n * @returns Void if the operation was successful.\n */\nexport function revokeAuthentication(\n  client: SessionClient,\n  request: RevokeAuthenticationRequest,\n): ResultAsync<void, UnexpectedError | UnauthenticatedError> {\n  return client.mutation(RevokeAuthenticationMutation, { request });\n}\n\n/**\n * Refresh the authentication tokens of the authenticated Account.\n *\n * ```ts\n * const result = await refresh(anyClient, {\n *   refreshToken: 'eyJhbGciOiJIUzI1NiIsInR5c…'\n * });\n * ```\n *\n * @param client - Any Lens client.\n * @param request - The mutation request.\n * @returns The refreshed authentication tokens if the operation was successful.\n */\nexport function refresh(\n  client: AnyClient,\n  request: RefreshRequest,\n): ResultAsync<RefreshResult, UnexpectedError | UnauthenticatedError> {\n  return client.mutation(RefreshMutation, { request });\n}\n\n/**\n * Fetch the authenticated sessions associated with the authenticated Account.\n *\n * ```ts\n * const result = await fetchAuthenticatedSessions(sessionClient);\n * ```\n *\n * @param client - The session client for the authenticated Account.\n * @param request - The query request.\n * @returns The paginated authenticated sessions associated with the authenticated Account.\n */\nexport function fetchAuthenticatedSessions(\n  client: SessionClient,\n  request: AuthenticatedSessionsRequest = {},\n): ResultAsync<Paginated<AuthenticatedSession>, UnexpectedError> {\n  return client.query(AuthenticatedSessionsQuery, { request });\n}\n\n/**\n * Issue new authentication tokens from a valid Lens API v2 refresh token.\n *\n * Use this to seamlessly transition your users from Lens API v2 to Lens API v3 without\n * requiring them to re-authenticate.\n *\n * The HTTP Origin header MUST be present and match the app's domain.\n *\n * ```ts\n * const result = await legacyRolloverRefresh(sessionClient, {\n *   refreshToken: 'eyJhbGciOiJIUzI1NiIsInR5c…',\n *   app: evmAddress(\"0xe5439696f4057aF073c0FB2dc6e5e755392922e1\"),\n * });\n * ```\n *\n * @param client - The client to use for the rollover refresh operation.\n * @param request - The mutation request.\n * @returns The refreshed authentication tokens if the operation was successful.\n */\n\nexport function legacyRolloverRefresh(\n  client: SessionClient,\n  request: RolloverRefreshRequest,\n): ResultAsync<RefreshResult, UnexpectedError | UnauthenticatedError> {\n  return client.mutation(LegacyRolloverRefreshMutation, { request });\n}\n\n/**\n * Switch to another managed account.\n *\n * @remarks Use the {@link SessionClient#switchAccount} method to switch to an account instead.\n * It's unlikely you'll need to use this action directly.\n *\n * @param client - The current session client.\n * @param request - The query request.\n * @returns The authenticated tokens for the switched account.\n */\nexport function switchAccount(\n  client: SessionClient,\n  request: SwitchAccountRequest,\n): ResultAsync<SwitchAccountResult, UnauthenticatedError | UnexpectedError> {\n  return client.mutation(SwitchAccountMutation, { request });\n}\n\n/**\n * Retrieve the details of the authenticated Account.\n *\n * @param client - The session client for the authenticated Account.\n * @returns The details of the authenticated Account.\n */\nexport function fetchMeDetails(\n  client: SessionClient,\n): ResultAsync<MeResult, UnauthenticatedError | UnexpectedError> {\n  return client.query(MeQuery, {});\n}\n\n/**\n * Get the last logged in account.\n *\n * ```ts\n * const result = await lastLoggedInAccount(anyClient, {\n *   address: evmAddress('0x90c8c68d0Abfb40D4fCD72316A65e42161520BC3'),\n * });\n * ```\n *\n * @param client - The session client.\n * @param request - The query request.\n * @returns The last logged in account.\n */\nexport function lastLoggedInAccount(\n  client: AnyClient,\n  request: LastLoggedInAccountRequest,\n): ResultAsync<Account | null, UnauthenticatedError | UnexpectedError> {\n  return client.query(LastLoggedInAccountQuery, { request });\n}\n","/**\n * @internal\n */\nexport function delay(ms: number): Promise<void> {\n  return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import type { TransactionStatusRequest, TransactionStatusResult } from '@lens-protocol/graphql';\nimport { TransactionStatusQuery } from '@lens-protocol/graphql';\nimport type { ResultAsync } from '@lens-protocol/types';\n\nimport type { AnyClient } from '../clients';\nimport type { UnexpectedError } from '../errors';\n\n/**\n * Fetch the indexing status of a Transaction.\n *\n * ```ts\n * const result = await transactionStatus(anyClient, {\n *   txHash: txHash('0x97589c9e3a3c5b007d…'),\n * });\n * ```\n *\n * @param client - Any Lens client.\n * @param request - The query request.\n * @returns The indexing status of the Transaction.\n */\nexport function transactionStatus(\n  client: AnyClient,\n  request: TransactionStatusRequest,\n): ResultAsync<TransactionStatusResult, UnexpectedError> {\n  return client.query(TransactionStatusQuery, { request });\n}\n","import { invariant } from '@lens-protocol/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(private readonly document: TypedDocumentNode<TResult, TVariables>) {\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(operation)) {\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(node: SelectionSetNode): 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: <explanation>\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(private readonly fragments: Map<string, FragmentDefinitionNode>) {}\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 { EnvironmentConfig } from '@lens-protocol/env';\nimport { type IStorageProvider, InMemoryStorageProvider } from '@lens-protocol/storage';\n\nimport type { ClientConfig } from './config';\nimport { FragmentResolver } from './fragments';\n\n/**\n * @internal\n */\nexport type Context = {\n  environment: EnvironmentConfig;\n  cache: boolean;\n  debug: boolean;\n  origin?: string;\n  storage: IStorageProvider;\n  apiKey?: string;\n  fragments: FragmentResolver;\n};\n\n/**\n * @internal\n */\nexport function configureContext(from: ClientConfig): Context {\n  return {\n    environment: from.environment,\n    cache: from.cache ?? false,\n    debug: from.debug ?? false,\n    origin: from.origin,\n    storage: from.storage ?? new InMemoryStorageProvider(),\n    apiKey: from.apiKey,\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((methodName, index) => {\n      if (index >= this.level) {\n        this[methodName] = () => {};\n      } else {\n        this[methodName] = (...args) =>\n          console[methodName === 'debug' ? 'log' : methodName](`[${this.name}]`, ...args);\n      }\n    });\n    this.log = this.debug;\n  }\n}\n","import type {\n  AuthenticationChallenge,\n  ChallengeRequest,\n  SignedAuthChallenge,\n  StandardData,\n  SwitchAccountRequest,\n} from '@lens-protocol/graphql';\nimport { AuthenticateMutation, ChallengeMutation, RefreshMutation } from '@lens-protocol/graphql';\nimport type { Credentials, IStorage } from '@lens-protocol/storage';\nimport {\n  type Result,\n  ResultAsync,\n  type TxHash,\n  errAsync,\n  invariant,\n  never,\n  ok,\n  okAsync,\n  signatureFrom,\n} from '@lens-protocol/types';\nimport {\n  type AnyVariables,\n  type Exchange,\n  type OperationResult,\n  type OperationResultSource,\n  type TypedDocumentNode,\n  type Client as UrqlClient,\n  createClient,\n  fetchExchange,\n} from '@urql/core';\nimport { type AuthConfig, authExchange } from '@urql/exchange-auth';\n\nimport { CredentialsStorage } from '@lens-protocol/storage';\nimport { type AuthenticatedUser, authenticatedUser } from './AuthenticatedUser';\nimport { revokeAuthentication, switchAccount, transactionStatus } from './actions';\nimport type { ClientConfig } from './config';\nimport { type Context, configureContext } from './context';\nimport {\n  AuthenticationError,\n  GraphQLErrorCode,\n  SigningError,\n  TransactionIndexingError,\n  UnauthenticatedError,\n  UnexpectedError,\n  hasExtensionCode,\n} from './errors';\nimport { LogLevel, Logger } from './logger';\nimport { decodeAccessToken, decodeIdToken } from './tokens';\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\n/**\n * A message signer.\n */\nexport type SignMessage = (message: string) => Promise<string>;\n\n/**\n * The challenge request and the signer to use to sign the SIWE message.\n *\n * This is used to obtain a SIWE message that needs to be signed\n * as part of the login process.\n */\nexport type LoginParams = ChallengeRequest & {\n  /**\n   * The signer to use to sign the SIWE message.\n   */\n  signMessage: SignMessage;\n};\n\nabstract class AbstractClient<TContext extends Context, TError> {\n  /**\n   * @internal\n   */\n  public readonly urql: UrqlClient;\n\n  protected readonly logger: Logger;\n\n  protected constructor(\n    /**\n     * @internal\n     */\n    public readonly context: TContext,\n  ) {\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: {\n          ...(this.context.origin ? { Origin: this.context.origin } : {}),\n          ...(this.context.apiKey ? { 'x-lens-app': this.context.apiKey } : {}),\n        },\n      },\n      exchanges: this.exchanges(),\n    });\n  }\n\n  /**\n   * Asserts that the client is a {@link PublicClient}.\n   */\n  public abstract isPublicClient(): this is PublicClient<TContext>;\n\n  /**\n   *  that the client is a {@link SessionClient}.\n   */\n  public abstract isSessionClient(): this is SessionClient<TContext>;\n\n  public abstract query<TValue, TVariables extends AnyVariables>(\n    document: TypedDocumentNode<StandardData<TValue>, TVariables>,\n    variables: TVariables,\n  ): ResultAsync<TValue, TError | UnexpectedError>;\n\n  public mutation<TValue, TVariables extends AnyVariables>(\n    document: TypedDocumentNode<StandardData<TValue>, TVariables>,\n    variables: TVariables,\n  ): ResultAsync<TValue, TError | UnexpectedError> {\n    const mutation = this.context.fragments.replaceFrom(document);\n    return this.resultFrom(this.urql.mutation(mutation, variables)).map(takeValue);\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>, TError | UnexpectedError> {\n    return ResultAsync.fromPromise(source.toPromise(), (err: unknown) => {\n      this.logger.error(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\n/**\n * A client to interact with the public access queries and mutations of the Lens GraphQL API.\n */\nexport class PublicClient<TContext extends Context = Context> extends AbstractClient<\n  TContext,\n  UnexpectedError\n> {\n  /**\n   *  The current session client.\n   *\n   * This could be the {@link PublicClient} itself if the user is not authenticated, or a {@link SessionClient} if the user is authenticated.\n   */\n  public currentSession: PublicClient<TContext> | SessionClient<TContext> = this;\n\n  /**\n   * Create a new instance of the {@link PublicClient}.\n   *\n   * ```ts\n   * const client = PublicClient.create({\n   *   environment: mainnet,\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): PublicClient<Context> {\n    return new PublicClient(configureContext(options));\n  }\n\n  /**\n   * Generate a new authentication challenge for the given account and app.\n   */\n  challenge(request: ChallengeRequest): ResultAsync<AuthenticationChallenge, UnexpectedError> {\n    return this.mutation(ChallengeMutation, { request });\n  }\n\n  /**\n   * Authenticate the user with the signed authentication challenge.\n   */\n  authenticate(\n    request: SignedAuthChallenge,\n  ): ResultAsync<SessionClient<TContext>, AuthenticationError | UnexpectedError> {\n    return this.mutation(AuthenticateMutation, { request })\n      .andThen((result) => {\n        if (result.__typename === 'AuthenticationTokens') {\n          return okAsync(result);\n        }\n        return AuthenticationError.from(result.reason).asResultAsync();\n      })\n      .andThen((tokens) => this.createCredentialsStorage().set(tokens))\n      .map((storage) => new SessionClient(storage, this))\n      .mapErr((err) => UnexpectedError.from(err));\n  }\n\n  /**\n   * Log in to Lens.\n   *\n   * @param params - The login parameters.\n   * @returns The SessionClient if the login was successful.\n   */\n  login({\n    signMessage,\n    ...request\n  }: LoginParams): ResultAsync<\n    SessionClient<TContext>,\n    AuthenticationError | SigningError | UnexpectedError\n  > {\n    return this.challenge(request)\n      .map(async (challenge) => ({\n        challenge,\n        signature: await ResultAsync.fromPromise(signMessage(challenge.text), (err) =>\n          SigningError.from(err),\n        ),\n      }))\n      .andThen(({ challenge, signature }) => {\n        if (signature.isErr()) {\n          return errAsync(signature.error);\n        }\n\n        return this.authenticate({\n          id: challenge.id,\n          signature: signatureFrom(signature.value),\n        });\n      });\n  }\n\n  /**\n   * Resume an instance of the SessionClient from the credentials in storage.\n   *\n   * @returns The session client if available.\n   */\n  resumeSession(): ResultAsync<SessionClient<TContext>, UnauthenticatedError | UnexpectedError> {\n    return this.createCredentialsStorage()\n      .resume()\n      .mapErr((err) => UnexpectedError.from(err))\n      .andThen((storage) => {\n        if (storage.get() === null) {\n          return new UnauthenticatedError('No credentials found').asResult();\n        }\n        return ok(new SessionClient(storage, this));\n      });\n  }\n\n  /**\n   * {@inheritDoc AbstractClient.isPublicClient}\n   */\n  public override isPublicClient(): this is PublicClient<TContext> {\n    return true;\n  }\n\n  /**\n   * {@inheritDoc AbstractClient.isSessionClient}\n   */\n  public override isSessionClient(): this is SessionClient<TContext> {\n    return false;\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(takeValue);\n  }\n\n  private createCredentialsStorage(): IStorage<Credentials> {\n    return CredentialsStorage.from(this.context.storage, this.context.environment.name);\n  }\n}\n\n/**\n * The client to interact with the protected queries and mutations of the Lens GraphQL API.\n *\n * @privateRemarks Intentionally not exported.\n */\nclass SessionClient<TContext extends Context = Context> extends AbstractClient<\n  TContext,\n  UnauthenticatedError | UnexpectedError\n> {\n  public get parent(): PublicClient<TContext> {\n    return this._parent;\n  }\n\n  constructor(\n    private readonly storage: IStorage<Credentials>,\n    private readonly _parent: PublicClient<TContext>,\n  ) {\n    super(_parent.context);\n    _parent.currentSession = this;\n  }\n\n  /**\n   * The current authentication tokens if available.\n   *\n   * @internal\n   */\n  getCredentials(): Result<Credentials | null, UnexpectedError> {\n    try {\n      const credentials = this.storage.get();\n      return ok(credentials);\n    } catch (cause) {\n      return UnexpectedError.from(cause).asResult();\n    }\n  }\n\n  /**\n   * The AuthenticatedUser associated with the current session.\n   */\n  getAuthenticatedUser(): Result<AuthenticatedUser, UnexpectedError> {\n    return this.getCredentials().andThen((credentials) => {\n      if (!credentials) {\n        return UnexpectedError.from('No credentials found').asResult();\n      }\n\n      const claims = decodeIdToken(credentials.idToken);\n      if (claims.isErr()) {\n        return claims.error.asResult();\n      }\n\n      return authenticatedUser(claims.value);\n    });\n  }\n\n  /**\n   * Log out the current session.\n   */\n  logout(): ResultAsync<void, UnauthenticatedError | UnexpectedError> {\n    return this.getAuthenticatedUser()\n      .asyncAndThen(({ authenticationId }) => revokeAuthentication(this, { authenticationId }))\n      .andTee(() =>\n        ResultAsync.fromPromise(this.storage.reset(), (err) => UnexpectedError.from(err)),\n      );\n  }\n\n  /**\n   * {@inheritDoc AbstractClient.isPublicClient}\n   */\n  public override isPublicClient(): this is PublicClient<TContext> {\n    return false;\n  }\n\n  /**\n   * {@inheritDoc AbstractClient.isSessionClient}\n   */\n  public override isSessionClient(): this is SessionClient<TContext> {\n    return true;\n  }\n\n  /**\n   * Switch authenticated account to a new account.\n   *\n   * You MUST be authenticated as Onboarding User, Account Owner, or Account Manager to be able to switch.\n   * The signer associated with the current session MUST be the owner or a manager of the account.\n   *\n   * @returns The updated SessionClient if the switch was successful.\n   */\n  switchAccount(\n    request: SwitchAccountRequest,\n  ): ResultAsync<\n    SessionClient<TContext>,\n    AuthenticationError | UnauthenticatedError | UnexpectedError\n  > {\n    return switchAccount(this, request)\n      .andThen((result) => {\n        if (result.__typename === 'AuthenticationTokens') {\n          return okAsync(result);\n        }\n        return AuthenticationError.from(result.reason).asResultAsync();\n      })\n      .andThen((tokens) => this.storage.set(tokens))\n      .map((storage) => new SessionClient(storage, this.parent))\n      .mapErr((err) => UnexpectedError.from(err));\n  }\n\n  /**\n   * Execute a GraphQL query operation.\n   *\n   * It will automatically handle authentication errors and re-fresh credentials if necessary.\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\n  override query<TValue, TVariables extends AnyVariables>(\n    document: TypedDocumentNode<StandardData<TValue>, TVariables>,\n    variables: TVariables,\n  ): ResultAsync<TValue, UnexpectedError>;\n  override query<TValue, TVariables extends AnyVariables>(\n    document: TypedDocumentNode<StandardData<TValue>, TVariables>,\n    variables: TVariables,\n  ): ResultAsync<TValue, UnauthenticatedError | UnexpectedError> {\n    const query = this.context.fragments.replaceFrom(document);\n    return this.resultFrom(this.urql.query(query, variables))\n      .andThen(this.handleAuthentication)\n      .map(takeValue);\n  }\n\n  /**\n   * Execute a GraphQL mutation operation.\n   *\n   * It will automatically handle authentication errors and re-fresh credentials if necessary.\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  override mutation<TValue, TVariables extends AnyVariables>(\n    document: TypedDocumentNode<StandardData<TValue>, TVariables>,\n    variables: TVariables,\n  ): ResultAsync<TValue, UnauthenticatedError | UnexpectedError> {\n    const mutation = this.context.fragments.replaceFrom(document);\n    return this.resultFrom(this.urql.mutation(mutation, variables))\n      .andThen(this.handleAuthentication)\n      .map(takeValue);\n  }\n\n  /**\n   * Given a transaction hash, wait for the transaction to be either confirmed or rejected by the Lens API indexer.\n   *\n   * @param hash - The transaction hash to wait for.\n   * @returns The transaction hash if the transaction was confirmed or an error if the transaction was rejected.\n   */\n  readonly waitForTransaction = (\n    txHash: TxHash,\n  ): ResultAsync<TxHash, TransactionIndexingError | UnexpectedError> => {\n    return ResultAsync.fromPromise(this.pollTransactionStatus(txHash), (err) => {\n      if (err instanceof TransactionIndexingError || err instanceof UnexpectedError) {\n        return err;\n      }\n      return UnexpectedError.from(err);\n    });\n  };\n\n  protected async pollTransactionStatus(txHash: TxHash): Promise<TxHash> {\n    const startedAt = Date.now();\n\n    while (Date.now() - startedAt < this.context.environment.indexingTimeout) {\n      const result = await transactionStatus(this, { txHash });\n\n      if (result.isErr()) {\n        throw UnexpectedError.from(result.error);\n      }\n\n      switch (result.value.__typename) {\n        case 'FinishedTransactionStatus':\n          return txHash;\n\n        case 'FailedTransactionStatus':\n          throw TransactionIndexingError.from(result.value.reason);\n\n        case 'PendingTransactionStatus':\n        case 'NotIndexedYetStatus':\n          await delay(this.context.environment.pollingInterval);\n          break;\n      }\n    }\n    throw TransactionIndexingError.from(`Timeout waiting for transaction ${txHash}`);\n  }\n\n  protected override exchanges(): Exchange[] {\n    return [\n      authExchange(async (utils): Promise<AuthConfig> => {\n        return {\n          addAuthToOperation: (operation) => {\n            const credentials = this.getCredentials().unwrapOr(null);\n\n            if (!credentials) {\n              return operation;\n            }\n\n            return utils.appendHeaders(operation, {\n              Authorization: `Bearer ${credentials.accessToken}`,\n            });\n          },\n\n          willAuthError: (_) => {\n            const credentials = this.getCredentials().unwrapOr(null);\n\n            if (!credentials) return false;\n\n            const { exp } = decodeAccessToken(credentials.accessToken).unwrapOr({ exp: 0 });\n\n            // Check if the token is about to expire in the next 30 seconds\n            const tokenExpiryTime = exp * 1000;\n            const currentTime = Date.now();\n            const bufferTime = 30_000;\n\n            return tokenExpiryTime <= currentTime + bufferTime;\n          },\n\n          didAuthError: (error) => hasExtensionCode(error, GraphQLErrorCode.UNAUTHENTICATED),\n\n          refreshAuth: async () => {\n            const credentials =\n              this.getCredentials().unwrapOr(null) ?? never('Missing refresh token');\n            const result = await utils.mutate(RefreshMutation, {\n              request: {\n                refreshToken: credentials.refreshToken,\n              },\n            });\n\n            if (result.data) {\n              switch (result.data.value.__typename) {\n                case 'AuthenticationTokens':\n                  await this.storage.set(result.data?.value);\n                  break;\n\n                case 'ForbiddenError':\n                  throw AuthenticationError.from(result.data.value.reason);\n\n                default:\n                  throw AuthenticationError.from(\n                    `Unsupported refresh token response ${result.data.value}`,\n                  );\n              }\n            }\n          },\n        };\n      }),\n      fetchExchange,\n    ];\n  }\n\n  private handleAuthentication<\n    Data,\n    Variables extends AnyVariables,\n    Result extends OperationResult<Data, Variables>,\n  >(result: Result): ResultAsync<Result, UnauthenticatedError | UnexpectedError> {\n    if (result.error) {\n      if (hasExtensionCode(result.error, GraphQLErrorCode.UNAUTHENTICATED)) {\n        return UnauthenticatedError.fromCombinedError(result.error).asResultAsync();\n      }\n      return UnexpectedError.from(result.error).asResultAsync();\n    }\n    return okAsync(result);\n  }\n}\n\nexport type { SessionClient };\n\n/**\n * Any client that can be used to interact with the Lens GraphQL API.\n */\nexport type AnyClient<TContext extends Context = Context> =\n  | PublicClient<TContext>\n  | SessionClient<TContext>;\n","import type {\n  SelfFundedTransactionRequest,\n  SponsoredTransactionRequest,\n} from '@lens-protocol/graphql';\nimport type { ResultAsync, TxHash } from '@lens-protocol/types';\nimport type { SigningError, ValidationError } from './errors';\n\nexport function isTransactionRequest(request: { __typename: string }): request is\n  | SponsoredTransactionRequest\n  | SelfFundedTransactionRequest {\n  return (\n    request.__typename === 'SponsoredTransactionRequest' ||\n    request.__typename === 'SelfFundedTransactionRequest'\n  );\n}\n\nexport type OperationResponse<T extends string> = {\n  __typename: T;\n  hash: TxHash;\n};\n\nexport type ErrorResponse<T extends string> = {\n  __typename: T;\n  reason: string;\n};\n\nexport type DelegableOperationResult<O extends string, E extends string> =\n  | OperationResponse<O>\n  | SponsoredTransactionRequest\n  | SelfFundedTransactionRequest\n  | ErrorResponse<E>;\n\nexport type RestrictedOperationResult<E extends string> =\n  | SponsoredTransactionRequest\n  | SelfFundedTransactionRequest\n  | ErrorResponse<E>;\n\nexport type OperationResult<O extends string, E extends string> =\n  | DelegableOperationResult<O, E>\n  | RestrictedOperationResult<E>;\n\nexport type RestrictedOperationHandler<E extends string> = (\n  result: RestrictedOperationResult<E>,\n) => ResultAsync<TxHash, SigningError | ValidationError<E>>;\n\nexport type DelegableOperationHandler<T extends string, E extends string> = (\n  result: DelegableOperationResult<T, E>,\n) => ResultAsync<TxHash, SigningError | ValidationError<E>>;\n\nexport type OperationHandler<\n  T extends string = string,\n  E extends string = string,\n> = T extends string ? DelegableOperationHandler<T, E> : RestrictedOperationHandler<E>;\n"]}