@ecency/sdk 1.2.0 → 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.
- package/dist/{index.d.cts → browser/index.d.ts} +24 -2
- package/dist/browser/index.js +1646 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/index.browser.mjs +1652 -0
- package/dist/index.browser.mjs.map +1 -0
- package/dist/index.cjs +99 -34
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +24 -2
- package/dist/index.mjs +94 -35
- package/dist/index.mjs.map +1 -1
- package/dist/node/index.cjs +1730 -0
- package/dist/node/index.cjs.map +1 -0
- package/dist/node/index.mjs +1642 -0
- package/dist/node/index.mjs.map +1 -0
- package/package.json +45 -22
@@ -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
|
226
|
-
|
227
|
-
|
228
|
-
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
-
|
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
|
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
|
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
|
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
|
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 () =>
|
1243
|
-
|
1244
|
-
|
1245
|
-
|
1246
|
-
|
1247
|
-
|
1248
|
-
|
1249
|
-
|
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
|
-
|
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
|
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
|
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
|
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
|
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
|
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
|
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;
|