@ecency/sdk 1.2.1 → 1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/modules/core/mock-storage.ts","../src/modules/core/config.ts","../src/modules/core/utils/decoder-encoder.ts","../src/modules/core/utils/parse-asset.ts","../src/modules/core/utils/get-bound-fetch.ts","../src/modules/core/storage.ts","../src/modules/keychain/keychain.ts","../src/modules/core/mutations/use-broadcast-mutation.ts","../src/modules/core/mutations/broadcast-json.ts","../src/modules/core/queries-manager.ts","../src/modules/core/queries/get-dynamic-props-query-options.ts","../src/modules/accounts/queries/get-account-full-query-options.ts","../src/modules/accounts/queries/search-accounts-by-username-query-options.ts","../src/modules/accounts/queries/check-username-wallets-pending-query-options.ts","../src/modules/accounts/queries/get-relationship-between-accounts-query-options.ts","../src/modules/accounts/queries/get-account-subscriptions-query-options.ts","../src/modules/accounts/queries/get-active-account-bookmarks-query-options.ts","../src/modules/accounts/queries/get-active-account-favourites-query-options.ts","../src/modules/accounts/queries/get-account-recoveries-query-options.ts","../src/modules/accounts/queries/get-account-pending-recovery-query-options.ts","../src/modules/accounts/mutations/use-account-update.ts","../src/modules/accounts/mutations/use-account-relations-update.ts","../src/modules/accounts/mutations/bookmarks/use-account-bookmark-add.ts","../src/modules/accounts/mutations/bookmarks/use-account-bookmark-delete.ts","../src/modules/accounts/mutations/favourites/use-account-favourite-add.ts","../src/modules/accounts/mutations/favourites/use-account-favourite-delete.ts","../src/modules/accounts/mutations/use-account-update-key-auths.ts","../src/modules/accounts/mutations/use-account-update-password.ts","../src/modules/accounts/mutations/use-account-revoke-posting.ts","../src/modules/accounts/mutations/use-account-update-recovery.ts","../src/modules/accounts/mutations/use-account-revoke-key.ts","../src/modules/operations/mutations/sign-operation-by-key.ts","../src/modules/operations/mutations/sign-operation-by-keychain.ts","../src/modules/operations/mutations/sign-operation-by-hivesigner.ts","../src/modules/operations/queries/get-chain-properties-query-options.ts","../src/modules/posts/queries/get-trending-tags-query-options.ts","../src/modules/posts/queries/get-fragments-query-options.ts","../src/modules/posts/queries/get-promoted-posts-query-options.ts","../src/modules/posts/mutations/add-fragment.ts","../src/modules/posts/mutations/edit-fragment.ts","../src/modules/posts/mutations/remove-fragment.ts","../src/modules/analytics/mutations/index.ts","../src/modules/analytics/mutations/use-record-activity.ts","../src/modules/integrations/3speak/queries/index.ts","../src/modules/integrations/hivesigner/queries/index.ts","../src/modules/integrations/hivesigner/queries/get-decode-memo-query-options.ts","../src/modules/integrations/hivesigner/index.ts","../src/modules/integrations/3speak/queries/get-account-token-query-options.ts","../src/modules/integrations/3speak/queries/get-account-videos-query-options.ts","../src/modules/integrations/3speak/index.ts","../src/modules/integrations/hiveposh/queries/get-hiveposh-links-query-options.ts","../src/modules/integrations/plausible/queries/get-stats-query-options.ts","../src/modules/resource-credits/queries/get-rc-stats-query-options.ts","../src/modules/resource-credits/queries/get-account-rc-query-options.ts","../src/modules/games/queries/game-status-check-query-options.ts","../src/modules/games/mutations/game-claim.ts","../src/modules/communities/queries/get-communities-query-options.ts","../src/modules/communities/queries/get-community-context-query-options.ts","../src/modules/communities/types/community.ts","../src/modules/communities/utils/index.ts"],"names":["ConfigManager","Symbol","NaiMap","getBoundFetch","PrivateKey","QueryClient","EcencyQueriesManager","queryOptions","useQuery","data","useMutation","R2","useQueryClient","R3","hs","R4","queries_exports","ROLES"],"mappings":"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","file":"index.browser.mjs","sourcesContent":["export class MockStorage implements Storage {\n [name: string]: any;\n\n length: number = 0;\n\n clear(): void {\n throw new Error(\"Method not implemented.\");\n }\n\n getItem(key: string): string | null {\n return this[key];\n }\n\n key(index: number): string | null {\n return Object.keys(this)[index];\n }\n\n removeItem(key: string): void {\n delete this[key];\n }\n\n setItem(key: string, value: string): void {\n this[key] = value;\n }\n}\n","import { Client } from \"@hiveio/dhive\";\nimport { MockStorage } from \"./mock-storage\";\nimport { QueryClient } from \"@tanstack/react-query\";\n\nexport const CONFIG = {\n privateApiHost: \"https://ecency.com\",\n storage:\n typeof window === \"undefined\" ? new MockStorage() : window.localStorage,\n storagePrefix: \"ecency\",\n hiveClient: new Client(\n [\n \"https://api.hive.blog\",\n \"https://api.deathwing.me\",\n \"https://rpc.mahdiyari.info\",\n \"https://api.openhive.network\",\n \"https://techcoderx.com\",\n \"https://hive-api.arcange.eu\",\n \"https://api.syncad.com\",\n \"https://anyx.io\",\n \"https://api.c0ff33a.uk\",\n \"https://hiveapi.actifit.io\",\n \"https://hive-api.3speak.tv\",\n ],\n {\n timeout: 2000,\n failoverThreshold: 2,\n consoleOnFailover: true,\n }\n ),\n heliusApiKey: process.env.VITE_HELIUS_API_KEY,\n queryClient: new QueryClient(),\n plausibleHost: \"https://pl.ecency.com\",\n spkNode: \"https://spk.good-karma.xyz\",\n};\n\nexport namespace ConfigManager {\n export function setQueryClient(client: QueryClient) {\n CONFIG.queryClient = client;\n }\n}\n","export function encodeObj(o: any): string {\n return btoa(JSON.stringify(o));\n}\n\nexport function decodeObj(o: any): any {\n let dataToParse = atob(o);\n if (dataToParse[0] !== \"{\") {\n return undefined;\n }\n return JSON.parse(dataToParse);\n}\n","import { SMTAsset } from \"@hiveio/dhive\";\n\nexport enum Symbol {\n HIVE = \"HIVE\",\n HBD = \"HBD\",\n VESTS = \"VESTS\",\n SPK = \"SPK\",\n}\n\nexport enum NaiMap {\n \"@@000000021\" = \"HIVE\",\n \"@@000000013\" = \"HBD\",\n \"@@000000037\" = \"VESTS\",\n}\n\nexport interface Asset {\n amount: number;\n symbol: Symbol;\n}\n\nexport function parseAsset(sval: string | SMTAsset): Asset {\n if (typeof sval === \"string\") {\n const sp = sval.split(\" \");\n return {\n amount: parseFloat(sp[0]),\n // @ts-ignore\n symbol: Symbol[sp[1]],\n };\n } else {\n return {\n amount: parseFloat(sval.amount.toString()) / Math.pow(10, sval.precision),\n // @ts-ignore\n symbol: NaiMap[sval.nai],\n };\n }\n}\n","let cachedFetch: typeof globalThis.fetch | undefined;\n\nexport function getBoundFetch() {\n if (!cachedFetch) {\n if (typeof globalThis.fetch !== \"function\") {\n throw new Error(\"[Ecency][SDK] - global fetch is not available\");\n }\n\n cachedFetch = globalThis.fetch.bind(globalThis);\n }\n\n return cachedFetch;\n}\n","import { CONFIG } from \"@/modules/core/config\";\nimport { StoringUser } from \"./entities\";\nimport { decodeObj } from \"./utils\";\n\nexport const getUser = (username: string): StoringUser | undefined => {\n try {\n const raw = CONFIG.storage.getItem(\n CONFIG.storagePrefix + \"_user_\" + username\n );\n return decodeObj(JSON.parse(raw!)) as StoringUser;\n } catch (e) {\n console.error(e);\n return undefined;\n }\n};\n\nexport const getAccessToken = (username: string): string | undefined =>\n getUser(username) && getUser(username)!.accessToken;\n\nexport const getPostingKey = (username: string): null | undefined | string =>\n getUser(username) && getUser(username)!.postingKey;\n\nexport const getLoginType = (username: string): null | undefined | string =>\n getUser(username) && getUser(username)!.loginType;\n\nexport const getRefreshToken = (username: string): string | undefined =>\n getUser(username) && getUser(username)!.refreshToken;\n","import { Operation } from \"@hiveio/dhive\";\n\ntype KeychainedWindow = {\n hive_keychain?: any;\n} & Window;\n\ndeclare var window: KeychainedWindow;\n\nexport type KeychainAuthorityTypes = \"Owner\" | \"Active\" | \"Posting\" | \"Memo\";\n\ninterface TxResponse {\n success: boolean;\n result: string;\n}\n\nexport function handshake() {\n return new Promise<void>((resolve) => {\n window.hive_keychain?.requestHandshake(() => {\n resolve();\n });\n });\n}\n\nexport const broadcast = (\n account: string,\n operations: Operation[],\n key: KeychainAuthorityTypes,\n rpc: string | null = null\n): Promise<TxResponse> =>\n new Promise<TxResponse>((resolve, reject) => {\n window.hive_keychain?.requestBroadcast(\n account,\n operations,\n key,\n (resp: TxResponse) => {\n if (!resp.success) {\n reject({ message: \"Operation cancelled\" });\n }\n\n resolve(resp);\n },\n rpc\n );\n });\n\nexport const customJson = (\n account: string,\n id: string,\n key: KeychainAuthorityTypes,\n json: string,\n display_msg: string,\n rpc: string | null = null\n): Promise<TxResponse> =>\n new Promise<TxResponse>((resolve, reject) => {\n window.hive_keychain?.requestCustomJson(\n account,\n id,\n key,\n json,\n display_msg,\n (resp: TxResponse) => {\n if (!resp.success) {\n reject({ message: \"Operation cancelled\" });\n }\n resolve(resp);\n },\n rpc\n );\n });\n","import {\n useMutation,\n type MutationKey,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport { getAccessToken, getLoginType, getPostingKey } from \"../storage\";\nimport { Operation, PrivateKey } from \"@hiveio/dhive\";\nimport { CONFIG } from \"@/modules/core/config\";\n//import hs from \"hivesigner\";\nimport { Keychain } from \"@/modules/keychain\";\n\nconst getBoundFetch = (): typeof fetch => {\n if (typeof window !== \"undefined\" && typeof window.fetch === \"function\") {\n return window.fetch.bind(window);\n }\n return globalThis.fetch;\n};\nexport function useBroadcastMutation<T>(\n mutationKey: MutationKey = [],\n username: string | undefined,\n operations: (payload: T) => Operation[],\n onSuccess: UseMutationOptions<unknown, Error, T>[\"onSuccess\"] = () => {}\n) {\n return useMutation({\n onSuccess,\n mutationKey: [...mutationKey, username],\n mutationFn: async (payload: T) => {\n if (!username) {\n throw new Error(\n \"[Core][Broadcast] Attempted to call broadcast API with anon user\"\n );\n }\n\n const postingKey = getPostingKey(username);\n if (postingKey) {\n const privateKey = PrivateKey.fromString(postingKey);\n\n return CONFIG.hiveClient.broadcast.sendOperations(\n operations(payload),\n privateKey\n );\n }\n\n const loginType = getLoginType(username);\n if (loginType && loginType == \"keychain\") {\n return Keychain.broadcast(\n username,\n operations(payload),\n \"Posting\"\n ).then((r: any) => r.result);\n }\n\n // With hivesigner access token\n let token = getAccessToken(username);\n if (token) {\n const f = getBoundFetch();\n const res = await f(\"https://hivesigner.com/api/broadcast\", {\n method: \"POST\",\n headers: {\n Authorization: token,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({ operations: operations(payload) }),\n });\n\n if (!res.ok) {\n const txt = await res.text().catch(() => \"\");\n throw new Error(`[Hivesigner] ${res.status} ${res.statusText} ${txt}`);\n }\n\n const json = await res.json();\n if (json?.errors) {\n throw new Error(`[Hivesigner] ${JSON.stringify(json.errors)}`);\n }\n return json.result;\n }\n\n throw new Error(\n \"[SDK][Broadcast] – cannot broadcast w/o posting key or token\"\n );\n },\n });\n}\n","import { CONFIG } from \"@/modules/core/config\";\nimport { PrivateKey } from \"@hiveio/dhive\";\nimport hs from \"hivesigner\";\nimport {getAccessToken, getLoginType, getPostingKey} from \"../storage\";\nimport {Keychain} from \"@/modules/keychain\";\n\nexport async function broadcastJson<T>(\n username: string | undefined,\n id: string,\n payload: T\n) {\n if (!username) {\n throw new Error(\n \"[Core][Broadcast] Attempted to call broadcast API with anon user\"\n );\n }\n const jjson = {\n id,\n required_auths: [],\n required_posting_auths: [username],\n json: JSON.stringify(payload),\n };\n\n const postingKey = getPostingKey(username);\n if (postingKey) {\n const privateKey = PrivateKey.fromString(postingKey);\n\n return CONFIG.hiveClient.broadcast.json(\n jjson,\n privateKey\n );\n }\n\n const loginType = getLoginType(username);\n if (loginType && loginType == 'keychain') {\n return Keychain.broadcast(username, [[\"custom_json\", jjson]], \"Posting\").then((r: any) => r.result)\n }\n\n // With hivesigner access token\n let token = getAccessToken(username);\n if (token) {\n const response = await new hs.Client({\n accessToken: token,\n }).customJson([], [username], id, JSON.stringify(payload));\n return response.result;\n }\n\n throw new Error(\n \"[SDK][Broadcast] – cannot broadcast w/o posting key or token\"\n );\n}\n","import {\n InfiniteData,\n QueryClient,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useQuery,\n UseQueryOptions,\n} from \"@tanstack/react-query\";\nimport { CONFIG } from \"./config\";\n\nexport function makeQueryClient() {\n // Cache creates one single instance per request in a server side\n return new QueryClient({\n defaultOptions: {\n queries: {\n // With SSR, we usually want to set some default staleTime\n // above 0 to avoid refetching immediately on the client\n // staleTime: 60 * 1000,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n },\n });\n}\nexport const getQueryClient = () => CONFIG.queryClient;\n\nexport namespace EcencyQueriesManager {\n export function getQueryData<T>(queryKey: QueryKey) {\n const queryClient = getQueryClient();\n return queryClient.getQueryData<T>(queryKey);\n }\n\n export function getInfiniteQueryData<T>(queryKey: QueryKey) {\n const queryClient = getQueryClient();\n return queryClient.getQueryData<InfiniteData<T>>(queryKey);\n }\n\n export async function prefetchQuery<T>(options: UseQueryOptions<T>) {\n const queryClient = getQueryClient();\n await queryClient.prefetchQuery(options);\n return getQueryData<T>(options.queryKey);\n }\n\n export async function prefetchInfiniteQuery<T, P>(\n options: UseInfiniteQueryOptions<\n T,\n Error,\n InfiniteData<T>,\n QueryKey,\n P\n >\n ) {\n const queryClient = getQueryClient();\n await queryClient.prefetchInfiniteQuery(options);\n return getInfiniteQueryData<T>(options.queryKey);\n }\n\n export function generateClientServerQuery<T>(options: UseQueryOptions<T>) {\n return {\n prefetch: () => prefetchQuery(options),\n getData: () => getQueryData<T>(options.queryKey),\n useClientQuery: () => useQuery(options),\n fetchAndGet: () => getQueryClient().fetchQuery(options),\n };\n }\n\n export function generateClientServerInfiniteQuery<T, P>(\n options: UseInfiniteQueryOptions<\n T,\n Error,\n InfiniteData<T>,\n QueryKey,\n P\n >\n ) {\n return {\n prefetch: () => prefetchInfiniteQuery(options),\n getData: () => getInfiniteQueryData<T>(options.queryKey),\n useClientQuery: () => useInfiniteQuery(options),\n fetchAndGet: () => getQueryClient().fetchInfiniteQuery(options),\n };\n }\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { DynamicProps } from \"../types\";\nimport { CONFIG } from \"../config\";\nimport { parseAsset } from \"../utils\";\n\nexport function getDynamicPropsQueryOptions() {\n return queryOptions({\n queryKey: [\"core\", \"dynamic-props\"],\n refetchInterval: 60000,\n staleTime: 60000,\n refetchOnMount: true,\n queryFn: async (): Promise<DynamicProps> => {\n const globalDynamic = await CONFIG.hiveClient.database\n .getDynamicGlobalProperties()\n .then((r: any) => ({\n total_vesting_fund_hive:\n r.total_vesting_fund_hive || r.total_vesting_fund_steem,\n total_vesting_shares: r.total_vesting_shares,\n hbd_print_rate: r.hbd_print_rate || r.sbd_print_rate,\n hbd_interest_rate: r.hbd_interest_rate,\n head_block_number: r.head_block_number,\n vesting_reward_percent: r.vesting_reward_percent,\n virtual_supply: r.virtual_supply,\n }));\n\n const feedHistory =\n await CONFIG.hiveClient.database.call(\"get_feed_history\");\n const chainProps = await CONFIG.hiveClient.database.call(\n \"get_chain_properties\"\n );\n const rewardFund = await CONFIG.hiveClient.database.call(\n \"get_reward_fund\",\n [\"post\"]\n );\n\n const hivePerMVests =\n (parseAsset(globalDynamic.total_vesting_fund_hive).amount /\n parseAsset(globalDynamic.total_vesting_shares).amount) *\n 1e6;\n const base = parseAsset(feedHistory.current_median_history.base).amount;\n const quote = parseAsset(feedHistory.current_median_history.quote).amount;\n const fundRecentClaims = parseFloat(rewardFund.recent_claims);\n const fundRewardBalance = parseAsset(rewardFund.reward_balance).amount;\n const hbdPrintRate = globalDynamic.hbd_print_rate;\n const hbdInterestRate = globalDynamic.hbd_interest_rate;\n const headBlock = globalDynamic.head_block_number;\n const totalVestingFund = parseAsset(\n globalDynamic.total_vesting_fund_hive\n ).amount;\n const totalVestingShares = parseAsset(\n globalDynamic.total_vesting_shares\n ).amount;\n const virtualSupply = parseAsset(globalDynamic.virtual_supply).amount;\n const vestingRewardPercent = globalDynamic.vesting_reward_percent;\n const accountCreationFee = chainProps.account_creation_fee;\n\n return {\n hivePerMVests,\n base,\n quote,\n fundRecentClaims,\n fundRewardBalance,\n hbdPrintRate,\n hbdInterestRate,\n headBlock,\n totalVestingFund,\n totalVestingShares,\n virtualSupply,\n vestingRewardPercent,\n accountCreationFee,\n };\n },\n });\n}\n","import { CONFIG } from \"@/modules/core/config\";\nimport {\n AccountFollowStats,\n AccountProfile,\n AccountReputation,\n FullAccount,\n} from \"../types\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getAccountFullQueryOptions(username: string | undefined) {\n return queryOptions({\n queryKey: [\"get-account-full\", username],\n queryFn: async () => {\n if (!username) {\n throw new Error(\"[SDK] Username is empty\");\n }\n\n const response = (await CONFIG.hiveClient.database.getAccounts([\n username,\n ])) as any[];\n if (!response[0]) {\n throw new Error(\"[SDK] No account with given username\");\n }\n\n const profile = JSON.parse(response[0].posting_json_metadata!)\n .profile as AccountProfile;\n\n let follow_stats: AccountFollowStats | undefined;\n try {\n follow_stats = await CONFIG.hiveClient.database.call(\n \"get_follow_count\",\n [username]\n );\n } catch (e) {}\n\n const reputation: AccountReputation[] = await CONFIG.hiveClient.call(\n \"condenser_api\",\n \"get_account_reputations\",\n [username, 1]\n );\n\n return {\n name: response[0].name,\n owner: response[0].owner,\n active: response[0].active,\n posting: response[0].posting,\n memo_key: response[0].memo_key,\n post_count: response[0].post_count,\n created: response[0].created,\n posting_json_metadata: response[0].posting_json_metadata,\n last_vote_time: response[0].last_vote_time,\n last_post: response[0].last_post,\n json_metadata: response[0].json_metadata,\n reward_hive_balance: response[0].reward_hive_balance,\n reward_hbd_balance: response[0].reward_hbd_balance,\n reward_vesting_hive: response[0].reward_vesting_hive,\n reward_vesting_balance: response[0].reward_vesting_balance,\n balance: response[0].balance,\n hbd_balance: response[0].hbd_balance,\n savings_balance: response[0].savings_balance,\n savings_hbd_balance: response[0].savings_hbd_balance,\n savings_hbd_last_interest_payment:\n response[0].savings_hbd_last_interest_payment,\n savings_hbd_seconds_last_update:\n response[0].savings_hbd_seconds_last_update,\n savings_hbd_seconds: response[0].savings_hbd_seconds,\n next_vesting_withdrawal: response[0].next_vesting_withdrawal,\n pending_claimed_accounts: response[0].pending_claimed_accounts,\n vesting_shares: response[0].vesting_shares,\n delegated_vesting_shares: response[0].delegated_vesting_shares,\n received_vesting_shares: response[0].received_vesting_shares,\n vesting_withdraw_rate: response[0].vesting_withdraw_rate,\n to_withdraw: response[0].to_withdraw,\n withdrawn: response[0].withdrawn,\n witness_votes: response[0].witness_votes,\n proxy: response[0].proxy,\n recovery_account: response[0].recovery_account,\n proxied_vsf_votes: response[0].proxied_vsf_votes,\n voting_manabar: response[0].voting_manabar,\n voting_power: response[0].voting_power,\n downvote_manabar: response[0].downvote_manabar,\n follow_stats,\n reputation: reputation[0].reputation,\n profile: {\n ...profile,\n reputation: reputation[0].reputation,\n },\n } satisfies FullAccount;\n },\n enabled: !!username,\n staleTime: 60000,\n });\n}\n","import { CONFIG } from \"@/modules/core/config\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getSearchAccountsByUsernameQueryOptions(\n query: string,\n limit = 5,\n excludeList: string[] = []\n) {\n return queryOptions({\n queryKey: [\"accounts\", \"search\", query, excludeList],\n enabled: !!query,\n queryFn: async () => {\n const response = (await CONFIG.hiveClient.database.call(\n \"lookup_accounts\",\n [query, limit]\n )) as string[];\n return response.filter((item) =>\n excludeList.length > 0 ? !excludeList.includes(item) : true\n );\n },\n });\n}\n","import { CONFIG, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function checkUsernameWalletsPendingQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"accounts\", \"check-wallet-pending\", username],\n queryFn: async () => {\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/wallets-chkuser\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n username,\n }),\n }\n );\n return (await response.json()) as { exist: boolean };\n },\n enabled: !!username,\n refetchOnMount: true,\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { AccountRelationship } from \"../types\";\n\nexport function getRelationshipBetweenAccountsQueryOptions(\n reference: string | undefined,\n target: string | undefined\n) {\n return queryOptions({\n queryKey: [\"accounts\", \"relations\", reference, target],\n enabled: !!reference && !!target,\n refetchOnMount: false,\n refetchInterval: 3_600_000,\n queryFn: async () => {\n return (await CONFIG.hiveClient.call(\n \"bridge\",\n \"get_relationship_between_accounts\",\n [reference, target]\n )) as AccountRelationship;\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\ntype Subscriptions = string[];\n\nexport function getAccountSubscriptionsQueryOptions(\n username: string | undefined\n) {\n return queryOptions({\n queryKey: [\"accounts\", \"subscriptions\", username],\n enabled: !!username,\n queryFn: async () => {\n const response = await CONFIG.hiveClient.call(\n \"bridge\",\n \"list_all_subscriptions\",\n {\n account: username,\n }\n );\n return (response ?? []) as Subscriptions;\n },\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { AccountBookmark } from \"../types\";\n\nexport function getActiveAccountBookmarksQueryOptions(\n activeUsername: string | undefined\n) {\n return queryOptions({\n queryKey: [\"accounts\", \"bookmarks\", activeUsername],\n enabled: !!activeUsername,\n queryFn: async () => {\n if (!activeUsername) {\n throw new Error(\"[SDK][Accounts][Bookmarks] – no active user\");\n }\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/bookmarks\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code: getAccessToken(activeUsername) }),\n }\n );\n return (await response.json()) as AccountBookmark[];\n },\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { AccountFavorite } from \"../types\";\n\nexport function getActiveAccountFavouritesQueryOptions(\n activeUsername: string | undefined\n) {\n return queryOptions({\n queryKey: [\"accounts\", \"favourites\", activeUsername],\n enabled: !!activeUsername,\n queryFn: async () => {\n if (!activeUsername) {\n throw new Error(\"[SDK][Accounts][Favourites] – no active user\");\n }\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/favorites\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code: getAccessToken(activeUsername) }),\n }\n );\n return (await response.json()) as AccountFavorite[];\n },\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { GetRecoveriesEmailResponse } from \"../types\";\n\nexport function getAccountRecoveriesQueryOptions(username: string | undefined) {\n return queryOptions({\n enabled: !!username,\n queryKey: [\"accounts\", \"recoveries\", username],\n queryFn: async () => {\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/recoveries\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code: getAccessToken(username!) }),\n }\n );\n\n return response.json() as Promise<GetRecoveriesEmailResponse[]>;\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getAccountPendingRecoveryQueryOptions(\n username: string | undefined\n) {\n return queryOptions({\n enabled: !!username,\n queryKey: [\"accounts\", \"recoveries\", username, \"pending-request\"],\n queryFn: () =>\n CONFIG.hiveClient.call(\n \"database_api\",\n \"find_change_recovery_account_requests\",\n { accounts: [username] }\n ),\n });\n}\n","import { useBroadcastMutation } from \"@/modules/core\";\nimport { useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { getAccountFullQueryOptions } from \"../queries\";\nimport { AccountProfile, FullAccount } from \"../types\";\nimport * as R from \"remeda\";\n\ninterface Payload {\n profile: Partial<AccountProfile>;\n tokens: AccountProfile[\"tokens\"];\n}\n\nfunction sanitizeTokens(\n tokens?: AccountProfile[\"tokens\"]\n): AccountProfile[\"tokens\"] | undefined {\n return tokens?.map(({ meta, ...rest }) => {\n if (!meta || typeof meta !== \"object\") {\n return { ...rest, meta };\n }\n\n const { privateKey, username, ...safeMeta } = meta;\n return { ...rest, meta: safeMeta };\n });\n}\n\nfunction getBuiltProfile({\n profile,\n tokens,\n data,\n}: Partial<Payload> & { data: FullAccount }) {\n const metadata = R.pipe(\n JSON.parse(data?.posting_json_metadata || \"{}\").profile as AccountProfile,\n R.mergeDeep(profile ?? {})\n );\n\n if (tokens && tokens.length > 0) {\n metadata.tokens = tokens;\n }\n\n metadata.tokens = sanitizeTokens(metadata.tokens);\n\n return metadata;\n}\n\nexport function useAccountUpdate(username: string) {\n const queryClient = useQueryClient();\n\n const { data } = useQuery(getAccountFullQueryOptions(username));\n\n return useBroadcastMutation(\n [\"accounts\", \"update\"],\n username,\n (payload: Partial<Payload>) => {\n if (!data) {\n throw new Error(\"[SDK][Accounts] – cannot update not existing account\");\n }\n\n return [\n [\n \"account_update2\",\n {\n account: username,\n json_metadata: \"\",\n extensions: [],\n posting_json_metadata: JSON.stringify({\n profile: getBuiltProfile({ ...payload, data }),\n }),\n },\n ],\n ];\n },\n (_, variables) =>\n queryClient.setQueryData<FullAccount>(\n getAccountFullQueryOptions(username).queryKey,\n (data) => {\n if (!data) {\n return data;\n }\n\n const obj = R.clone(data);\n obj.profile = getBuiltProfile({ ...variables, data });\n return obj;\n }\n )\n );\n}\n","import { broadcastJson, getQueryClient } from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { getRelationshipBetweenAccountsQueryOptions } from \"../queries\";\nimport { AccountRelationship } from \"../types\";\n\ntype Kind = \"toggle-ignore\" | \"toggle-follow\";\n\nexport function useAccountRelationsUpdate(\n reference: string | undefined,\n target: string | undefined,\n onSuccess: (data: Partial<AccountRelationship> | undefined) => void,\n onError: (e: Error) => void\n) {\n return useMutation({\n mutationKey: [\"accounts\", \"relation\", \"update\", reference, target],\n mutationFn: async (kind: Kind) => {\n const relationsQuery = getRelationshipBetweenAccountsQueryOptions(\n reference,\n target\n );\n await getQueryClient().prefetchQuery(relationsQuery);\n const actualRelation = getQueryClient().getQueryData(\n relationsQuery.queryKey\n );\n\n await broadcastJson(reference, \"follow\", [\n \"follow\",\n {\n follower: reference,\n following: target,\n what: [\n ...(kind === \"toggle-ignore\" && !actualRelation?.ignores\n ? [\"ignore\"]\n : []),\n ...(kind === \"toggle-follow\" && !actualRelation?.follows\n ? [\"blog\"]\n : []),\n ],\n },\n ]);\n\n return {\n ...actualRelation,\n ignores:\n kind === \"toggle-ignore\"\n ? !actualRelation?.ignores\n : actualRelation?.ignores,\n follows:\n kind === \"toggle-follow\"\n ? !actualRelation?.follows\n : actualRelation?.follows,\n } satisfies Partial<AccountRelationship>;\n },\n onError,\n onSuccess(data) {\n onSuccess(data);\n\n getQueryClient().setQueryData(\n [\"accounts\", \"relations\", reference, target],\n data\n );\n },\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\n\ninterface Payload {\n author: string;\n permlink: string;\n}\n\nexport function useBookmarkAdd(\n username: string | undefined,\n onSuccess: () => void,\n onError: (e: Error) => void\n) {\n return useMutation({\n mutationKey: [\"accounts\", \"bookmarks\", \"add\", username],\n mutationFn: async ({ author, permlink }: Payload) => {\n if (!username) {\n throw new Error(\"[SDK][Account][Bookmarks] – no active user\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/bookmarks-add\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n author,\n permlink,\n code: getAccessToken(username),\n }),\n }\n );\n return response.json();\n },\n onSuccess: () => {\n onSuccess();\n getQueryClient().invalidateQueries({\n queryKey: [\"accounts\", \"bookmarks\", username],\n });\n },\n onError,\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\n\nexport function useBookmarkDelete(\n username: string | undefined,\n onSuccess: () => void,\n onError: (e: Error) => void\n) {\n return useMutation({\n mutationKey: [\"accounts\", \"bookmarks\", \"delete\", username],\n mutationFn: async (bookmarkId: string) => {\n if (!username) {\n throw new Error(\"[SDK][Account][Bookmarks] – no active user\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/bookmarks-delete\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n id: bookmarkId,\n code: getAccessToken(username),\n }),\n }\n );\n return response.json();\n },\n onSuccess: () => {\n onSuccess();\n getQueryClient().invalidateQueries({\n queryKey: [\"accounts\", \"bookmarks\", username],\n });\n },\n onError,\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\n\nexport function useAccountFavouriteAdd(\n username: string | undefined,\n onSuccess: () => void,\n onError: (e: Error) => void\n) {\n return useMutation({\n mutationKey: [\"accounts\", \"favourites\", \"add\", username],\n mutationFn: async (account: string) => {\n if (!username) {\n throw new Error(\"[SDK][Account][Bookmarks] – no active user\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/favorites-add\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n account,\n code: getAccessToken(username),\n }),\n }\n );\n return response.json();\n },\n onSuccess: () => {\n onSuccess();\n getQueryClient().invalidateQueries({\n queryKey: [\"accounts\", \"favourites\", username],\n });\n },\n onError,\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\n\nexport function useAccountFavouriteDelete(\n username: string | undefined,\n onSuccess: () => void,\n onError: (e: Error) => void\n) {\n return useMutation({\n mutationKey: [\"accounts\", \"favourites\", \"add\", username],\n mutationFn: async (account: string) => {\n if (!username) {\n throw new Error(\"[SDK][Account][Bookmarks] – no active user\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/favorites-delete\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n account,\n code: getAccessToken(username),\n }),\n }\n );\n return response.json();\n },\n onSuccess: () => {\n onSuccess();\n getQueryClient().invalidateQueries({\n queryKey: [\"accounts\", \"favourites\", username],\n });\n },\n onError,\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { AuthorityType, PrivateKey } from \"@hiveio/dhive\";\nimport {\n useMutation,\n useQuery,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport * as R from \"remeda\";\nimport { getAccountFullQueryOptions } from \"../queries\";\n\nexport interface Keys {\n owner: PrivateKey;\n active: PrivateKey;\n posting: PrivateKey;\n memo_key: PrivateKey;\n}\n\ninterface Payload {\n keepCurrent?: boolean;\n currentKey: PrivateKey;\n keys: Keys[];\n}\n\nexport function dedupeAndSortKeyAuths(\n existing: AuthorityType[\"key_auths\"],\n additions: [string, number][]\n): AuthorityType[\"key_auths\"] {\n const merged = new Map<string, number>();\n\n existing.forEach(([key, weight]) => {\n merged.set(key.toString(), weight);\n });\n\n additions.forEach(([key, weight]) => {\n merged.set(key.toString(), weight);\n });\n\n return Array.from(merged.entries())\n .sort(([keyA], [keyB]) => keyA.localeCompare(keyB))\n .map(([key, weight]) => [key, weight] as [string, number]);\n}\n\ntype UpdateKeyAuthsOptions = Pick<\n UseMutationOptions<unknown, Error, Payload>,\n \"onSuccess\" | \"onError\"\n>;\n\nexport function useAccountUpdateKeyAuths(\n username: string,\n options?: UpdateKeyAuthsOptions\n) {\n const { data: accountData } = useQuery(getAccountFullQueryOptions(username));\n\n return useMutation({\n mutationKey: [\"accounts\", \"keys-update\", username],\n mutationFn: async ({ keys, keepCurrent = false, currentKey }: Payload) => {\n if (!accountData) {\n throw new Error(\n \"[SDK][Update password] – cannot update keys for anon user\"\n );\n }\n\n const prepareAuth = (keyName: keyof Keys) => {\n const auth: AuthorityType = R.clone(accountData[keyName]);\n\n auth.key_auths = dedupeAndSortKeyAuths(\n keepCurrent ? auth.key_auths : [],\n keys.map(\n (values, i) =>\n [values[keyName].createPublic().toString(), i + 1] as [\n string,\n number,\n ]\n )\n );\n\n return auth;\n };\n\n return CONFIG.hiveClient.broadcast.updateAccount(\n {\n account: username,\n json_metadata: accountData.json_metadata,\n owner: prepareAuth(\"owner\"),\n active: prepareAuth(\"active\"),\n posting: prepareAuth(\"posting\"),\n memo_key: keepCurrent\n ? accountData.memo_key\n : keys[0].memo_key.createPublic().toString(),\n },\n currentKey\n );\n },\n ...options,\n });\n}\n","import { PrivateKey } from \"@hiveio/dhive\";\nimport {\n useMutation,\n useQuery,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport { getAccountFullQueryOptions } from \"../queries\";\nimport { useAccountUpdateKeyAuths } from \"./use-account-update-key-auths\";\n\ninterface Payload {\n newPassword: string;\n currentPassword: string;\n keepCurrent?: boolean;\n}\n\n/**\n * Only native Hive and custom passwords could be updated here\n * Seed based password cannot be updated here, it will be in an account always for now\n */\ntype UpdatePasswordOptions = Pick<\n UseMutationOptions<unknown, Error, Payload>,\n \"onSuccess\" | \"onError\"\n>;\n\nexport function useAccountUpdatePassword(\n username: string,\n options?: UpdatePasswordOptions\n) {\n const { data: accountData } = useQuery(getAccountFullQueryOptions(username));\n\n const { mutateAsync: updateKeys } = useAccountUpdateKeyAuths(username);\n\n return useMutation({\n mutationKey: [\"accounts\", \"password-update\", username],\n mutationFn: async ({\n newPassword,\n currentPassword,\n keepCurrent,\n }: Payload) => {\n if (!accountData) {\n throw new Error(\n \"[SDK][Update password] – cannot update password for anon user\"\n );\n }\n const currentKey = PrivateKey.fromLogin(\n username,\n currentPassword,\n \"owner\"\n );\n\n return updateKeys({\n currentKey,\n keepCurrent,\n keys: [\n {\n owner: PrivateKey.fromLogin(username, newPassword, \"owner\"),\n active: PrivateKey.fromLogin(username, newPassword, \"active\"),\n posting: PrivateKey.fromLogin(username, newPassword, \"posting\"),\n memo_key: PrivateKey.fromLogin(username, newPassword, \"memo\"),\n },\n ],\n });\n },\n ...options,\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { PrivateKey } from \"@hiveio/dhive\";\nimport {\n useMutation,\n useQuery,\n useQueryClient,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport { getAccountFullQueryOptions } from \"../queries\";\nimport * as R from \"remeda\";\nimport { FullAccount } from \"../types\";\nimport { Keychain } from \"@/modules/keychain\";\nimport hs from \"hivesigner\";\n\ntype SignType = \"key\" | \"keychain\" | \"hivesigner\";\n\ninterface CommonPayload {\n accountName: string;\n type: SignType;\n key?: PrivateKey;\n}\n\ntype RevokePostingOptions = Pick<\n UseMutationOptions<unknown, Error, CommonPayload>,\n \"onSuccess\" | \"onError\"\n>;\n\nexport function useAccountRevokePosting(\n username: string | undefined,\n options: RevokePostingOptions\n) {\n const queryClient = useQueryClient();\n\n const { data } = useQuery(getAccountFullQueryOptions(username));\n\n return useMutation({\n mutationKey: [\"accounts\", \"revoke-posting\", data?.name],\n mutationFn: async ({ accountName, type, key }: CommonPayload) => {\n if (!data) {\n throw new Error(\n \"[SDK][Accounts] – cannot revoke posting for anonymous user\"\n );\n }\n\n const posting = R.pipe(\n {},\n R.mergeDeep(data.posting)\n ) as FullAccount[\"posting\"];\n\n posting.account_auths = posting.account_auths.filter(\n ([account]) => account !== accountName\n );\n\n const operationBody = {\n account: data.name,\n posting,\n memo_key: data.memo_key,\n json_metadata: data.json_metadata,\n };\n\n if (type === \"key\" && key) {\n return CONFIG.hiveClient.broadcast.updateAccount(operationBody, key);\n } else if (type === \"keychain\") {\n return Keychain.broadcast(\n data.name,\n [[\"account_update\", operationBody]],\n \"Active\"\n ) as Promise<any>;\n } else {\n const params = {\n callback: `https://ecency.com/@${data.name}/permissions`,\n };\n return hs.sendOperation(\n [\"account_update\", operationBody],\n params,\n () => {}\n );\n }\n },\n onError: options.onError,\n onSuccess: (resp, payload, ctx) => {\n (options.onSuccess as\n | ((data: unknown, variables: CommonPayload, context: unknown) => unknown)\n | undefined)?.(resp, payload, ctx);\n queryClient.setQueryData<FullAccount>(\n getAccountFullQueryOptions(username).queryKey,\n (data) =>\n ({\n ...data,\n posting: {\n ...data?.posting,\n account_auths:\n data?.posting?.account_auths?.filter(\n ([account]) => account !== payload.accountName\n ) ?? [],\n },\n }) as FullAccount\n );\n },\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { Keychain } from \"@/modules/keychain\";\nimport { PrivateKey } from \"@hiveio/dhive\";\nimport {\n useMutation,\n useQuery,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport hs from \"hivesigner\";\nimport { getAccountFullQueryOptions } from \"../queries\";\n\ntype SignType = \"key\" | \"keychain\" | \"hivesigner\" | \"ecency\";\n\ninterface CommonPayload {\n accountName: string;\n type: SignType;\n key?: PrivateKey;\n email?: string;\n}\n\ntype UpdateRecoveryOptions = Pick<\n UseMutationOptions<unknown, Error, CommonPayload>,\n \"onSuccess\" | \"onError\"\n>;\n\nexport function useAccountUpdateRecovery(\n username: string | undefined,\n options: UpdateRecoveryOptions\n) {\n const { data } = useQuery(getAccountFullQueryOptions(username));\n\n return useMutation({\n mutationKey: [\"accounts\", \"recovery\", data?.name],\n mutationFn: async ({ accountName, type, key, email }: CommonPayload) => {\n if (!data) {\n throw new Error(\n \"[SDK][Accounts] – cannot change recovery for anonymous user\"\n );\n }\n\n const operationBody = {\n account_to_recover: data.name,\n new_recovery_account: accountName,\n extensions: [],\n };\n\n if (type === \"ecency\") {\n const fetchApi = getBoundFetch();\n\n return fetchApi(CONFIG.privateApiHost + \"/private-api/recoveries-add\", {\n method: \"POST\",\n body: JSON.stringify({\n code: getAccessToken(data.name),\n email,\n publicKeys: [\n ...data.owner.key_auths,\n ...data.active.key_auths,\n ...data.posting.key_auths,\n data.memo_key,\n ],\n }),\n });\n } else if (type === \"key\" && key) {\n return CONFIG.hiveClient.broadcast.sendOperations(\n [[\"change_recovery_account\", operationBody]],\n key\n );\n } else if (type === \"keychain\") {\n return Keychain.broadcast(\n data.name,\n [[\"change_recovery_account\", operationBody]],\n \"Active\"\n ) as Promise<any>;\n } else {\n const params = {\n callback: `https://ecency.com/@${data.name}/permissions`,\n };\n return hs.sendOperation(\n [\"change_recovery_account\", operationBody],\n params,\n () => {}\n );\n }\n },\n onError: options.onError,\n onSuccess: options.onSuccess,\n });\n}\n","import { AuthorityType, PrivateKey, PublicKey } from \"@hiveio/dhive\";\nimport {\n useMutation,\n useQuery,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport { getAccountFullQueryOptions } from \"../queries\";\nimport * as R from \"remeda\";\nimport { CONFIG } from \"@/modules/core\";\nimport { Keys } from \"./use-account-update-key-auths\";\n\ninterface Payload {\n currentKey: PrivateKey;\n revokingKey: PublicKey;\n}\n\n/**\n * This hook provides functionality to revoke a key from an account on the Hive blockchain.\n * It leverages React Query's `useMutation` for managing the mutation state and executing\n * the operation efficiently.\n *\n * @param username The username of the Hive account from which the key should be revoked.\n * Pass `undefined` if the username is unknown or not set yet.\n *\n * @returns The mutation object from `useMutation`, including methods to trigger the key\n * revocation and access its state (e.g., loading, success, error).\n */\ntype RevokeKeyOptions = Pick<\n UseMutationOptions<unknown, Error, Payload>,\n \"onSuccess\" | \"onError\"\n>;\n\nexport function useAccountRevokeKey(\n username: string | undefined,\n options?: RevokeKeyOptions\n) {\n const { data: accountData } = useQuery(getAccountFullQueryOptions(username));\n\n return useMutation({\n mutationKey: [\"accounts\", \"revoke-key\", accountData?.name],\n mutationFn: async ({ currentKey, revokingKey }: Payload) => {\n if (!accountData) {\n throw new Error(\n \"[SDK][Update password] – cannot update keys for anon user\"\n );\n }\n\n const prepareAuth = (keyName: keyof Keys) => {\n const auth: AuthorityType = R.clone(accountData[keyName]);\n\n auth.key_auths = auth.key_auths.filter(\n ([key]) => key !== revokingKey.toString()\n );\n\n return auth;\n };\n\n return CONFIG.hiveClient.broadcast.updateAccount(\n {\n account: accountData.name,\n json_metadata: accountData.json_metadata,\n owner: prepareAuth(\"owner\"),\n active: prepareAuth(\"active\"),\n posting: prepareAuth(\"posting\"),\n memo_key: accountData.memo_key,\n },\n currentKey\n );\n },\n ...options,\n });\n}\n","import { CONFIG } from \"@/modules/core/config\";\nimport { cryptoUtils, Operation, PrivateKey } from \"@hiveio/dhive\";\nimport { useMutation } from \"@tanstack/react-query\";\n\nexport function useSignOperationByKey(username: string | undefined) {\n return useMutation({\n mutationKey: [\"operations\", \"sign\", username],\n mutationFn: ({\n operation,\n keyOrSeed,\n }: {\n operation: Operation;\n keyOrSeed: string;\n }) => {\n if (!username) {\n throw new Error(\"[Operations][Sign] – cannot sign op with anon user\");\n }\n\n let privateKey: PrivateKey;\n if (keyOrSeed.split(\" \").length === 12) {\n privateKey = PrivateKey.fromLogin(username, keyOrSeed, \"active\");\n } else if (cryptoUtils.isWif(keyOrSeed)) {\n privateKey = PrivateKey.fromString(keyOrSeed);\n } else {\n privateKey = PrivateKey.from(keyOrSeed);\n }\n\n return CONFIG.hiveClient.broadcast.sendOperations(\n [operation],\n privateKey\n );\n },\n });\n}\n","import { Keychain } from \"@/modules/keychain\";\nimport { Operation } from \"@hiveio/dhive\";\nimport { useMutation } from \"@tanstack/react-query\";\n\nexport function useSignOperationByKeychain(\n username: string | undefined,\n keyType: Keychain.KeychainAuthorityTypes = \"Active\"\n) {\n return useMutation({\n mutationKey: [\"operations\", \"sign-keychain\", username],\n mutationFn: ({ operation }: { operation: Operation }) => {\n if (!username) {\n throw new Error(\n \"[SDK][Keychain] – cannot sign operation with anon user\"\n );\n }\n return Keychain.broadcast(username, [operation], keyType) as Promise<any>;\n },\n });\n}\n","import { Operation } from \"@hiveio/dhive\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport hs from \"hivesigner\";\n\nexport function useSignOperationByHivesigner(callbackUri = \"/\") {\n return useMutation({\n mutationKey: [\"operations\", \"sign-hivesigner\", callbackUri],\n mutationFn: async ({ operation }: { operation: Operation }) => {\n return hs.sendOperation(operation, { callback: callbackUri }, () => {});\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getChainPropertiesQueryOptions() {\n return queryOptions({\n queryKey: [\"operations\", \"chain-properties\"],\n queryFn: async () => {\n return await CONFIG.hiveClient.database.getChainProperties();\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { TrendingTag } from \"../types\";\n\nexport function getTrendingTagsQueryOptions(limit = 20) {\n return infiniteQueryOptions({\n queryKey: [\"posts\", \"trending-tags\"],\n queryFn: async ({ pageParam: { afterTag } }) =>\n CONFIG.hiveClient.database\n .call(\"get_trending_tags\", [afterTag, limit])\n .then((tags: TrendingTag[]) =>\n tags\n .filter((x) => x.name !== \"\")\n .filter((x) => !x.name.startsWith(\"hive-\"))\n .map((x) => x.name)\n ),\n initialPageParam: { afterTag: \"\" },\n getNextPageParam: (lastPage) => ({\n afterTag: lastPage?.[lastPage?.length - 1],\n }),\n staleTime: Infinity,\n refetchOnMount: true,\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { Fragment } from \"../types\";\n\nexport function getFragmentsQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"posts\", \"fragments\", username],\n queryFn: async () => {\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/fragments\",\n {\n method: \"POST\",\n body: JSON.stringify({\n code: getAccessToken(username),\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n\n return response.json() as Promise<Fragment[]>;\n },\n enabled: !!username,\n });\n}\n","import { CONFIG, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\n// TODO: replace any with Entry\nexport function getPromotedPostsQuery<T extends any>(\n type: \"feed\" | \"waves\" = \"feed\"\n) {\n return queryOptions({\n queryKey: [\"posts\", \"promoted\", type],\n queryFn: async () => {\n const url = new URL(\n CONFIG.privateApiHost + \"/private-api/promoted-entries\"\n );\n if (type === \"waves\") {\n url.searchParams.append(\"short_content\", \"1\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(url.toString(), {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n const data = await response.json();\n return data as T[];\n },\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { Fragment } from \"../types\";\nimport { getFragmentsQueryOptions } from \"../queries\";\n\nexport function useAddFragment(username: string) {\n return useMutation({\n mutationKey: [\"posts\", \"add-fragment\", username],\n mutationFn: async ({ title, body }: { title: string; body: string }) => {\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/fragments-add\",\n {\n method: \"POST\",\n body: JSON.stringify({\n code: getAccessToken(username),\n title,\n body,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n return response.json() as Promise<Fragment>;\n },\n onSuccess(response) {\n getQueryClient().setQueryData<Fragment[]>(\n getFragmentsQueryOptions(username).queryKey,\n (data) => [response, ...(data ?? [])]\n );\n },\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { Fragment } from \"../types\";\nimport { getFragmentsQueryOptions } from \"../queries\";\n\nexport function useEditFragment(username: string, fragmentId: string) {\n return useMutation({\n mutationKey: [\"posts\", \"edit-fragment\", username, fragmentId],\n mutationFn: async ({ title, body }: { title: string; body: string }) => {\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/fragments-update\",\n {\n method: \"POST\",\n body: JSON.stringify({\n code: getAccessToken(username),\n id: fragmentId,\n title,\n body,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n return response.json() as Promise<Fragment>;\n },\n onSuccess(response) {\n getQueryClient().setQueryData<Fragment[]>(\n getFragmentsQueryOptions(username).queryKey,\n (data) => {\n if (!data) {\n return [];\n }\n\n const index = data.findIndex(({ id }) => id === fragmentId);\n if (index >= 0) {\n data[index] = response;\n }\n\n return [...data];\n }\n );\n },\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { Fragment } from \"../types\";\nimport { getFragmentsQueryOptions } from \"../queries\";\n\nexport function useRemoveFragment(username: string, fragmentId: string) {\n return useMutation({\n mutationKey: [\"posts\", \"remove-fragment\", username],\n mutationFn: async () => {\n const fetchApi = getBoundFetch();\n\n return fetchApi(CONFIG.privateApiHost + \"/private-api/fragments-delete\", {\n method: \"POST\",\n body: JSON.stringify({\n code: getAccessToken(username),\n id: fragmentId,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n },\n onSuccess() {\n getQueryClient().setQueryData<Fragment[]>(\n getFragmentsQueryOptions(username).queryKey,\n (data) => [...(data ?? [])].filter(({ id }) => id !== fragmentId)\n );\n },\n });\n}\n","export * from \"./use-record-activity\";\n","import { CONFIG, getBoundFetch } from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\n\ntype ActivityType =\n // Editor related\n | \"post-created\"\n | \"post-updated\"\n | \"post-scheduled\"\n | \"draft-created\"\n | \"video-published\"\n\n // Legacy editor related\n | \"legacy-post-created\"\n | \"legacy-post-updated\"\n | \"legacy-post-scheduled\"\n | \"legacy-draft-created\"\n | \"legacy-video-published\"\n\n // Perks related\n | \"perks-points-by-qr\"\n | \"perks-account-boost\"\n | \"perks-promote\"\n | \"perks-boost-plus\"\n | \"points-claimed\"\n | \"spin-rolled\"\n\n // Signup related\n | \"signed-up-with-wallets\"\n | \"signed-up-with-email\";\n\nexport function useRecordActivity(\n username: string | undefined,\n activityType: ActivityType\n) {\n return useMutation({\n mutationKey: [\"analytics\", activityType],\n mutationFn: async () => {\n if (!activityType) {\n throw new Error(\"[SDK][Analytics] – no activity type provided\");\n }\n const fetchApi = getBoundFetch();\n\n await fetchApi(CONFIG.plausibleHost + \"/api/event\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n name: activityType,\n url: window.location.href,\n domain: window.location.host,\n props: {\n username,\n },\n }),\n });\n },\n });\n}\n","export * from \"./get-account-token-query-options\";\nexport * from \"./get-account-videos-query-options\";\n","export * from \"./get-decode-memo-query-options\";\n","import { getAccessToken } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport hs from \"hivesigner\";\n\nexport function getDecodeMemoQueryOptions(username: string, memo: string) {\n return queryOptions({\n queryKey: [\"integrations\", \"hivesigner\", \"decode-memo\", username],\n queryFn: async () => {\n const accessToken = getAccessToken(username);\n\n if (accessToken) {\n const hsClient = new hs.Client({\n accessToken,\n });\n return hsClient.decode(memo);\n }\n },\n });\n}\n","import * as queries from \"./queries\";\n\nconst HiveSignerIntegration = {\n queries,\n};\n\nexport { HiveSignerIntegration };\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { HiveSignerIntegration } from \"../../hivesigner\";\nimport { getBoundFetch, getQueryClient } from \"@/modules/core\";\n\nexport function getAccountTokenQueryOptions(username: string | undefined) {\n return queryOptions({\n queryKey: [\"integrations\", \"3speak\", \"authenticate\", username],\n enabled: !!username,\n queryFn: async () => {\n if (!username) {\n throw new Error(\"[SDK][Integrations][3Speak] – anon user\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n `https://studio.3speak.tv/mobile/login?username=${username}&hivesigner=true`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n\n const memoQueryOptions =\n HiveSignerIntegration.queries.getDecodeMemoQueryOptions(\n username,\n (await response.json()).memo\n );\n await getQueryClient().prefetchQuery(memoQueryOptions);\n const { memoDecoded } = getQueryClient().getQueryData(\n memoQueryOptions.queryKey\n );\n\n return memoDecoded.replace(\"#\", \"\");\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { ThreeSpeakVideo } from \"../types\";\nimport { getBoundFetch, getQueryClient } from \"@/modules/core\";\nimport { getAccountTokenQueryOptions } from \"./get-account-token-query-options\";\n\nexport function getAccountVideosQueryOptions(username: string | undefined) {\n return queryOptions({\n queryKey: [\"integrations\", \"3speak\", \"videos\", username],\n enabled: !!username,\n queryFn: async () => {\n await getQueryClient().prefetchQuery(\n getAccountTokenQueryOptions(username)\n );\n const token = getQueryClient().getQueryData(\n getAccountTokenQueryOptions(username).queryKey\n );\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n `https://studio.3speak.tv/mobile/api/my-videos`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${token}`,\n },\n }\n );\n return (await response.json()) as ThreeSpeakVideo[];\n },\n });\n}\n","export * from \"./types\";\nimport * as queries from \"./queries\";\n\nconst ThreeSpeakIntegration = {\n queries,\n};\n\nexport { ThreeSpeakIntegration };\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { getBoundFetch } from \"@/modules/core\";\n\nexport function getHivePoshLinksQueryOptions(username: string | undefined) {\n return queryOptions({\n queryKey: [\"integrations\", \"hiveposh\", \"links\", username],\n queryFn: async () => {\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n `https://hiveposh.com/api/v0/linked-accounts/${username}`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n const data = await response.json();\n\n return {\n twitter: {\n username: data.twitter_username,\n profile: data.twitter_profile,\n },\n reddit: {\n username: data.reddit_username,\n profile: data.reddit_profile,\n },\n } satisfies Record<\n \"twitter\" | \"reddit\",\n { username: string; profile: string }\n >;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { getBoundFetch } from \"@/modules/core\";\n\nexport interface StatsResponse {\n results: [\n {\n metrics: number[];\n dimensions: string[];\n },\n ];\n query: {\n site_id: string;\n metrics: string[];\n date_range: string[];\n filters: string[];\n };\n}\ninterface UseStatsQueryOptions {\n url: string;\n dimensions?: string[];\n metrics?: string[];\n enabled?: boolean;\n}\n\nexport function getStatsQueryOptions({\n url,\n dimensions = [],\n metrics = [\"visitors\", \"pageviews\", \"visit_duration\"],\n enabled = true,\n}: UseStatsQueryOptions) {\n return queryOptions({\n queryKey: [\"integrations\", \"plausible\", url, dimensions, metrics],\n queryFn: async () => {\n const fetchApi = getBoundFetch();\n const response = await fetchApi(`https://ecency.com/api/stats`, {\n method: \"POST\",\n body: JSON.stringify({\n metrics,\n url: encodeURIComponent(url),\n dimensions,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n return (await response.json()) as StatsResponse;\n },\n enabled: !!url && enabled,\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getRcStatsQueryOptions() {\n return queryOptions({\n queryKey: [\"resource-credits\", \"stats\"],\n queryFn: async () => {\n const response = await CONFIG.hiveClient.call(\n \"rc_api\",\n \"get_rc_stats\",\n {}\n );\n return response.rc_stats;\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { RCAPI } from \"@hiveio/dhive\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getAccountRcQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"resource-credits\", \"account\", username],\n queryFn: async () => {\n const rcClient = new RCAPI(CONFIG.hiveClient);\n return rcClient.findRCAccounts([username]);\n },\n enabled: !!username,\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { GetGameStatus } from \"../types\";\n\nexport function getGameStatusCheckQueryOptions(\n username: string | undefined,\n gameType: \"spin\"\n) {\n return queryOptions({\n queryKey: [\"games\", \"status-check\", gameType, username],\n enabled: !!username,\n queryFn: async () => {\n if (!username) {\n throw new Error(\"[SDK][Games] – anon user in status check\");\n }\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/get-game\",\n {\n method: \"POST\",\n body: JSON.stringify({\n game_type: gameType,\n code: getAccessToken(username),\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n return (await response.json()) as GetGameStatus;\n },\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { GameClaim } from \"../types\";\nimport { useRecordActivity } from \"@/modules/analytics/mutations\";\n\nexport function useGameClaim(\n username: string | undefined,\n gameType: \"spin\",\n key: string\n) {\n const { mutateAsync: recordActivity } = useRecordActivity(\n username,\n \"spin-rolled\"\n );\n\n return useMutation({\n mutationKey: [\"games\", \"post\", gameType, username],\n mutationFn: async () => {\n if (!username) {\n throw new Error(\"[SDK][Games] – anon user in game post\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/post-game\",\n {\n method: \"POST\",\n body: JSON.stringify({\n game_type: gameType,\n code: getAccessToken(username),\n key,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n\n return (await response.json()) as GameClaim;\n },\n onSuccess() {\n recordActivity();\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { Communities } from \"../types\";\n\nexport function getCommunitiesQueryOptions(\n sort: string,\n query?: string,\n limit = 100,\n observer: string | undefined = undefined,\n enabled = true\n) {\n return queryOptions({\n queryKey: [\"communities\", \"list\", sort, query, limit],\n enabled,\n queryFn: async () => {\n const response = await CONFIG.hiveClient.call(\n \"bridge\",\n \"list_communities\",\n {\n last: \"\",\n limit,\n sort: sort === \"hot\" ? \"rank\" : sort,\n query: query ? query : null,\n observer,\n }\n );\n return (\n response\n ? sort === \"hot\"\n ? response.sort(() => Math.random() - 0.5)\n : response\n : []\n ) as Communities;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { CommunityRole } from \"../types\";\n\nexport function getCommunityContextQueryOptions(\n username: string | undefined,\n communityName: string | undefined\n) {\n return queryOptions({\n queryKey: [\"community\", \"context\", username, communityName],\n enabled: !!username && !!communityName,\n queryFn: async () => {\n const response = await CONFIG.hiveClient.call(\n \"bridge\",\n \"get_community_context\",\n {\n account: username,\n name: communityName,\n }\n );\n\n return {\n role: response?.role ?? \"guest\",\n subscribed: response?.subscribed ?? false,\n } satisfies {\n role: CommunityRole;\n subscribed: boolean;\n };\n },\n });\n}\n","export enum ROLES {\n OWNER = \"owner\",\n ADMIN = \"admin\",\n MOD = \"mod\",\n MEMBER = \"member\",\n GUEST = \"guest\",\n MUTED = \"muted\",\n}\n\nexport const roleMap: Record<string, string[]> = {\n [ROLES.OWNER]: [\n ROLES.ADMIN,\n ROLES.MOD,\n ROLES.MEMBER,\n ROLES.GUEST,\n ROLES.MUTED,\n ],\n [ROLES.ADMIN]: [ROLES.MOD, ROLES.MEMBER, ROLES.GUEST, ROLES.MUTED],\n [ROLES.MOD]: [ROLES.MEMBER, ROLES.GUEST, ROLES.MUTED],\n};\n\nexport type CommunityTeam = Array<Array<string>>;\nexport type CommunityRole = (typeof ROLES)[keyof typeof ROLES]; // \"owner\" | \"member\" | ...\nexport type CommunityType = \"Topic\" | \"Journal\" | \"Council\";\n\nexport interface Community {\n about: string;\n admins?: string[];\n avatar_url: string;\n created_at: string;\n description: string;\n flag_text: string;\n id: number;\n is_nsfw: boolean;\n lang: string;\n name: string;\n num_authors: number;\n num_pending: number;\n subscribers: number;\n sum_pending: number;\n settings?: any;\n team: CommunityTeam;\n title: string;\n type_id: number;\n}\n\nexport type Communities = Community[];\n","import { CommunityRole, CommunityType, ROLES } from \"../types\";\n\nexport function getCommunityType(name: string, type_id: number): CommunityType {\n if (name.startsWith(\"hive-3\") || type_id === 3) return \"Council\";\n if (name.startsWith(\"hive-2\") || type_id === 2) return \"Journal\";\n return \"Topic\";\n}\n\nexport function getCommunityPermissions({\n communityType,\n userRole,\n subscribed,\n}: {\n communityType: CommunityType;\n userRole: CommunityRole;\n subscribed: boolean;\n}) {\n const canPost = (() => {\n if (userRole === ROLES.MUTED) return false;\n\n if (communityType === \"Topic\") return true;\n\n // Journal & Council\n return [ROLES.OWNER, ROLES.ADMIN, ROLES.MOD, ROLES.MEMBER].includes(\n userRole\n );\n })();\n\n const canComment = (() => {\n if (userRole === ROLES.MUTED) return false;\n\n switch (communityType) {\n case \"Topic\":\n return true;\n case \"Journal\":\n return userRole !== ROLES.GUEST || subscribed;\n case \"Council\":\n return canPost;\n }\n })();\n\n const isModerator = [ROLES.OWNER, ROLES.ADMIN, ROLES.MOD].includes(userRole);\n\n return {\n canPost,\n canComment,\n isModerator,\n };\n}\n"]}
package/dist/index.cjs CHANGED
@@ -91,6 +91,9 @@ exports.ConfigManager = void 0;
91
91
  })(exports.ConfigManager || (exports.ConfigManager = {}));
92
92
 
93
93
  // src/modules/core/utils/decoder-encoder.ts
94
+ function encodeObj(o) {
95
+ return btoa(JSON.stringify(o));
96
+ }
94
97
  function decodeObj(o) {
95
98
  let dataToParse = atob(o);
96
99
  if (dataToParse[0] !== "{") {
@@ -130,6 +133,18 @@ function parseAsset(sval) {
130
133
  }
131
134
  }
132
135
 
136
+ // src/modules/core/utils/get-bound-fetch.ts
137
+ var cachedFetch;
138
+ function getBoundFetch() {
139
+ if (!cachedFetch) {
140
+ if (typeof globalThis.fetch !== "function") {
141
+ throw new Error("[Ecency][SDK] - global fetch is not available");
142
+ }
143
+ cachedFetch = globalThis.fetch.bind(globalThis);
144
+ }
145
+ return cachedFetch;
146
+ }
147
+
133
148
  // src/modules/core/storage.ts
134
149
  var getUser = (username) => {
135
150
  try {
@@ -193,6 +208,12 @@ var customJson = (account, id, key, json, display_msg, rpc = null) => new Promis
193
208
  });
194
209
 
195
210
  // src/modules/core/mutations/use-broadcast-mutation.ts
211
+ var getBoundFetch2 = () => {
212
+ if (typeof window !== "undefined" && typeof window.fetch === "function") {
213
+ return window.fetch.bind(window);
214
+ }
215
+ return globalThis.fetch;
216
+ };
196
217
  function useBroadcastMutation(mutationKey = [], username, operations, onSuccess = () => {
197
218
  }) {
198
219
  return reactQuery.useMutation({
@@ -222,10 +243,25 @@ function useBroadcastMutation(mutationKey = [], username, operations, onSuccess
222
243
  }
223
244
  let token = getAccessToken(username);
224
245
  if (token) {
225
- const response = await new hs__default.default.Client({
226
- accessToken: token
227
- }).broadcast(operations(payload));
228
- return response.result;
246
+ const f = getBoundFetch2();
247
+ const res = await f("https://hivesigner.com/api/broadcast", {
248
+ method: "POST",
249
+ headers: {
250
+ Authorization: token,
251
+ "Content-Type": "application/json",
252
+ Accept: "application/json"
253
+ },
254
+ body: JSON.stringify({ operations: operations(payload) })
255
+ });
256
+ if (!res.ok) {
257
+ const txt = await res.text().catch(() => "");
258
+ throw new Error(`[Hivesigner] ${res.status} ${res.statusText} ${txt}`);
259
+ }
260
+ const json = await res.json();
261
+ if (json?.errors) {
262
+ throw new Error(`[Hivesigner] ${JSON.stringify(json.errors)}`);
263
+ }
264
+ return json.result;
229
265
  }
230
266
  throw new Error(
231
267
  "[SDK][Broadcast] \u2013 cannot broadcast w/o posting key or token"
@@ -480,7 +516,8 @@ function checkUsernameWalletsPendingQueryOptions(username) {
480
516
  return reactQuery.queryOptions({
481
517
  queryKey: ["accounts", "check-wallet-pending", username],
482
518
  queryFn: async () => {
483
- const response = await fetch(
519
+ const fetchApi = getBoundFetch();
520
+ const response = await fetchApi(
484
521
  CONFIG.privateApiHost + "/private-api/wallets-chkuser",
485
522
  {
486
523
  method: "POST",
@@ -537,7 +574,8 @@ function getActiveAccountBookmarksQueryOptions(activeUsername) {
537
574
  if (!activeUsername) {
538
575
  throw new Error("[SDK][Accounts][Bookmarks] \u2013 no active user");
539
576
  }
540
- const response = await fetch(
577
+ const fetchApi = getBoundFetch();
578
+ const response = await fetchApi(
541
579
  CONFIG.privateApiHost + "/private-api/bookmarks",
542
580
  {
543
581
  method: "POST",
@@ -559,7 +597,8 @@ function getActiveAccountFavouritesQueryOptions(activeUsername) {
559
597
  if (!activeUsername) {
560
598
  throw new Error("[SDK][Accounts][Favourites] \u2013 no active user");
561
599
  }
562
- const response = await fetch(
600
+ const fetchApi = getBoundFetch();
601
+ const response = await fetchApi(
563
602
  CONFIG.privateApiHost + "/private-api/favorites",
564
603
  {
565
604
  method: "POST",
@@ -578,7 +617,8 @@ function getAccountRecoveriesQueryOptions(username) {
578
617
  enabled: !!username,
579
618
  queryKey: ["accounts", "recoveries", username],
580
619
  queryFn: async () => {
581
- const response = await fetch(
620
+ const fetchApi = getBoundFetch();
621
+ const response = await fetchApi(
582
622
  CONFIG.privateApiHost + "/private-api/recoveries",
583
623
  {
584
624
  method: "POST",
@@ -710,7 +750,8 @@ function useBookmarkAdd(username, onSuccess, onError) {
710
750
  if (!username) {
711
751
  throw new Error("[SDK][Account][Bookmarks] \u2013 no active user");
712
752
  }
713
- const response = await fetch(
753
+ const fetchApi = getBoundFetch();
754
+ const response = await fetchApi(
714
755
  CONFIG.privateApiHost + "/private-api/bookmarks-add",
715
756
  {
716
757
  method: "POST",
@@ -742,7 +783,8 @@ function useBookmarkDelete(username, onSuccess, onError) {
742
783
  if (!username) {
743
784
  throw new Error("[SDK][Account][Bookmarks] \u2013 no active user");
744
785
  }
745
- const response = await fetch(
786
+ const fetchApi = getBoundFetch();
787
+ const response = await fetchApi(
746
788
  CONFIG.privateApiHost + "/private-api/bookmarks-delete",
747
789
  {
748
790
  method: "POST",
@@ -773,7 +815,8 @@ function useAccountFavouriteAdd(username, onSuccess, onError) {
773
815
  if (!username) {
774
816
  throw new Error("[SDK][Account][Bookmarks] \u2013 no active user");
775
817
  }
776
- const response = await fetch(
818
+ const fetchApi = getBoundFetch();
819
+ const response = await fetchApi(
777
820
  CONFIG.privateApiHost + "/private-api/favorites-add",
778
821
  {
779
822
  method: "POST",
@@ -804,7 +847,8 @@ function useAccountFavouriteDelete(username, onSuccess, onError) {
804
847
  if (!username) {
805
848
  throw new Error("[SDK][Account][Bookmarks] \u2013 no active user");
806
849
  }
807
- const response = await fetch(
850
+ const fetchApi = getBoundFetch();
851
+ const response = await fetchApi(
808
852
  CONFIG.privateApiHost + "/private-api/favorites-delete",
809
853
  {
810
854
  method: "POST",
@@ -987,7 +1031,8 @@ function useAccountUpdateRecovery(username, options) {
987
1031
  extensions: []
988
1032
  };
989
1033
  if (type === "ecency") {
990
- return fetch(CONFIG.privateApiHost + "/private-api/recoveries-add", {
1034
+ const fetchApi = getBoundFetch();
1035
+ return fetchApi(CONFIG.privateApiHost + "/private-api/recoveries-add", {
991
1036
  method: "POST",
992
1037
  body: JSON.stringify({
993
1038
  code: getAccessToken(data.name),
@@ -1132,7 +1177,8 @@ function getFragmentsQueryOptions(username) {
1132
1177
  return reactQuery.queryOptions({
1133
1178
  queryKey: ["posts", "fragments", username],
1134
1179
  queryFn: async () => {
1135
- const response = await fetch(
1180
+ const fetchApi = getBoundFetch();
1181
+ const response = await fetchApi(
1136
1182
  CONFIG.privateApiHost + "/private-api/fragments",
1137
1183
  {
1138
1184
  method: "POST",
@@ -1159,7 +1205,8 @@ function getPromotedPostsQuery(type = "feed") {
1159
1205
  if (type === "waves") {
1160
1206
  url.searchParams.append("short_content", "1");
1161
1207
  }
1162
- const response = await fetch(url.toString(), {
1208
+ const fetchApi = getBoundFetch();
1209
+ const response = await fetchApi(url.toString(), {
1163
1210
  method: "GET",
1164
1211
  headers: {
1165
1212
  "Content-Type": "application/json"
@@ -1174,7 +1221,8 @@ function useAddFragment(username) {
1174
1221
  return reactQuery.useMutation({
1175
1222
  mutationKey: ["posts", "add-fragment", username],
1176
1223
  mutationFn: async ({ title, body }) => {
1177
- const response = await fetch(
1224
+ const fetchApi = getBoundFetch();
1225
+ const response = await fetchApi(
1178
1226
  CONFIG.privateApiHost + "/private-api/fragments-add",
1179
1227
  {
1180
1228
  method: "POST",
@@ -1202,7 +1250,8 @@ function useEditFragment(username, fragmentId) {
1202
1250
  return reactQuery.useMutation({
1203
1251
  mutationKey: ["posts", "edit-fragment", username, fragmentId],
1204
1252
  mutationFn: async ({ title, body }) => {
1205
- const response = await fetch(
1253
+ const fetchApi = getBoundFetch();
1254
+ const response = await fetchApi(
1206
1255
  CONFIG.privateApiHost + "/private-api/fragments-update",
1207
1256
  {
1208
1257
  method: "POST",
@@ -1239,16 +1288,19 @@ function useEditFragment(username, fragmentId) {
1239
1288
  function useRemoveFragment(username, fragmentId) {
1240
1289
  return reactQuery.useMutation({
1241
1290
  mutationKey: ["posts", "remove-fragment", username],
1242
- mutationFn: async () => fetch(CONFIG.privateApiHost + "/private-api/fragments-delete", {
1243
- method: "POST",
1244
- body: JSON.stringify({
1245
- code: getAccessToken(username),
1246
- id: fragmentId
1247
- }),
1248
- headers: {
1249
- "Content-Type": "application/json"
1250
- }
1251
- }),
1291
+ mutationFn: async () => {
1292
+ const fetchApi = getBoundFetch();
1293
+ return fetchApi(CONFIG.privateApiHost + "/private-api/fragments-delete", {
1294
+ method: "POST",
1295
+ body: JSON.stringify({
1296
+ code: getAccessToken(username),
1297
+ id: fragmentId
1298
+ }),
1299
+ headers: {
1300
+ "Content-Type": "application/json"
1301
+ }
1302
+ });
1303
+ },
1252
1304
  onSuccess() {
1253
1305
  getQueryClient().setQueryData(
1254
1306
  getFragmentsQueryOptions(username).queryKey,
@@ -1270,7 +1322,8 @@ function useRecordActivity(username, activityType) {
1270
1322
  if (!activityType) {
1271
1323
  throw new Error("[SDK][Analytics] \u2013 no activity type provided");
1272
1324
  }
1273
- await fetch(CONFIG.plausibleHost + "/api/event", {
1325
+ const fetchApi = getBoundFetch();
1326
+ await fetchApi(CONFIG.plausibleHost + "/api/event", {
1274
1327
  method: "POST",
1275
1328
  headers: {
1276
1329
  "Content-Type": "application/json"
@@ -1329,7 +1382,8 @@ function getAccountTokenQueryOptions(username) {
1329
1382
  if (!username) {
1330
1383
  throw new Error("[SDK][Integrations][3Speak] \u2013\xA0anon user");
1331
1384
  }
1332
- const response = await fetch(
1385
+ const fetchApi = getBoundFetch();
1386
+ const response = await fetchApi(
1333
1387
  `https://studio.3speak.tv/mobile/login?username=${username}&hivesigner=true`,
1334
1388
  {
1335
1389
  headers: {
@@ -1360,7 +1414,8 @@ function getAccountVideosQueryOptions(username) {
1360
1414
  const token = getQueryClient().getQueryData(
1361
1415
  getAccountTokenQueryOptions(username).queryKey
1362
1416
  );
1363
- const response = await fetch(
1417
+ const fetchApi = getBoundFetch();
1418
+ const response = await fetchApi(
1364
1419
  `https://studio.3speak.tv/mobile/api/my-videos`,
1365
1420
  {
1366
1421
  headers: {
@@ -1382,7 +1437,8 @@ function getHivePoshLinksQueryOptions(username) {
1382
1437
  return reactQuery.queryOptions({
1383
1438
  queryKey: ["integrations", "hiveposh", "links", username],
1384
1439
  queryFn: async () => {
1385
- const response = await fetch(
1440
+ const fetchApi = getBoundFetch();
1441
+ const response = await fetchApi(
1386
1442
  `https://hiveposh.com/api/v0/linked-accounts/${username}`,
1387
1443
  {
1388
1444
  headers: {
@@ -1413,7 +1469,8 @@ function getStatsQueryOptions({
1413
1469
  return reactQuery.queryOptions({
1414
1470
  queryKey: ["integrations", "plausible", url, dimensions, metrics],
1415
1471
  queryFn: async () => {
1416
- const response = await fetch(`https://ecency.com/api/stats`, {
1472
+ const fetchApi = getBoundFetch();
1473
+ const response = await fetchApi(`https://ecency.com/api/stats`, {
1417
1474
  method: "POST",
1418
1475
  body: JSON.stringify({
1419
1476
  metrics,
@@ -1460,7 +1517,8 @@ function getGameStatusCheckQueryOptions(username, gameType) {
1460
1517
  if (!username) {
1461
1518
  throw new Error("[SDK][Games] \u2013 anon user in status check");
1462
1519
  }
1463
- const response = await fetch(
1520
+ const fetchApi = getBoundFetch();
1521
+ const response = await fetchApi(
1464
1522
  CONFIG.privateApiHost + "/private-api/get-game",
1465
1523
  {
1466
1524
  method: "POST",
@@ -1488,7 +1546,8 @@ function useGameClaim(username, gameType, key) {
1488
1546
  if (!username) {
1489
1547
  throw new Error("[SDK][Games] \u2013 anon user in game post");
1490
1548
  }
1491
- const response = await fetch(
1549
+ const fetchApi = getBoundFetch();
1550
+ const response = await fetchApi(
1492
1551
  CONFIG.privateApiHost + "/private-api/post-game",
1493
1552
  {
1494
1553
  method: "POST",
@@ -1613,11 +1672,15 @@ exports.CONFIG = CONFIG;
1613
1672
  exports.EcencyAnalytics = mutations_exports;
1614
1673
  exports.HiveSignerIntegration = HiveSignerIntegration;
1615
1674
  exports.Keychain = keychain_exports;
1675
+ exports.NaiMap = NaiMap;
1616
1676
  exports.ROLES = ROLES;
1677
+ exports.Symbol = Symbol2;
1617
1678
  exports.ThreeSpeakIntegration = ThreeSpeakIntegration;
1618
1679
  exports.broadcastJson = broadcastJson;
1619
1680
  exports.checkUsernameWalletsPendingQueryOptions = checkUsernameWalletsPendingQueryOptions;
1681
+ exports.decodeObj = decodeObj;
1620
1682
  exports.dedupeAndSortKeyAuths = dedupeAndSortKeyAuths;
1683
+ exports.encodeObj = encodeObj;
1621
1684
  exports.getAccessToken = getAccessToken;
1622
1685
  exports.getAccountFullQueryOptions = getAccountFullQueryOptions;
1623
1686
  exports.getAccountPendingRecoveryQueryOptions = getAccountPendingRecoveryQueryOptions;
@@ -1626,6 +1689,7 @@ exports.getAccountRecoveriesQueryOptions = getAccountRecoveriesQueryOptions;
1626
1689
  exports.getAccountSubscriptionsQueryOptions = getAccountSubscriptionsQueryOptions;
1627
1690
  exports.getActiveAccountBookmarksQueryOptions = getActiveAccountBookmarksQueryOptions;
1628
1691
  exports.getActiveAccountFavouritesQueryOptions = getActiveAccountFavouritesQueryOptions;
1692
+ exports.getBoundFetch = getBoundFetch;
1629
1693
  exports.getChainPropertiesQueryOptions = getChainPropertiesQueryOptions;
1630
1694
  exports.getCommunitiesQueryOptions = getCommunitiesQueryOptions;
1631
1695
  exports.getCommunityContextQueryOptions = getCommunityContextQueryOptions;
@@ -1647,6 +1711,7 @@ exports.getStatsQueryOptions = getStatsQueryOptions;
1647
1711
  exports.getTrendingTagsQueryOptions = getTrendingTagsQueryOptions;
1648
1712
  exports.getUser = getUser;
1649
1713
  exports.makeQueryClient = makeQueryClient;
1714
+ exports.parseAsset = parseAsset;
1650
1715
  exports.roleMap = roleMap;
1651
1716
  exports.useAccountFavouriteAdd = useAccountFavouriteAdd;
1652
1717
  exports.useAccountFavouriteDelete = useAccountFavouriteDelete;