@bitsocial/bitsocial-react-hooks 0.1.0 → 0.1.2
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/hooks/authors/authors.js +4 -4
- package/dist/hooks/authors/authors.js.map +1 -1
- package/dist/lib/pkc-compat.d.ts +9 -3
- package/dist/lib/pkc-compat.d.ts.map +1 -1
- package/dist/lib/pkc-compat.js +24 -4
- package/dist/lib/pkc-compat.js.map +1 -1
- package/dist/lib/pkc-js/pkc-js-mock-content.d.ts.map +1 -1
- package/dist/lib/pkc-js/pkc-js-mock-content.js +2 -1
- package/dist/lib/pkc-js/pkc-js-mock-content.js.map +1 -1
- package/dist/lib/pkc-js/pkc-js-mock.d.ts +2 -3
- package/dist/lib/pkc-js/pkc-js-mock.d.ts.map +1 -1
- package/dist/lib/pkc-js/pkc-js-mock.js +2 -1
- package/dist/lib/pkc-js/pkc-js-mock.js.map +1 -1
- package/dist/lib/pkc-types.d.ts +6 -0
- package/dist/lib/pkc-types.d.ts.map +1 -0
- package/dist/lib/pkc-types.js +2 -0
- package/dist/lib/pkc-types.js.map +1 -0
- package/package.json +2 -2
|
@@ -256,8 +256,8 @@ export function useAuthorAddress(options) {
|
|
|
256
256
|
const existing = resolveAuthorAddressPromises[addr];
|
|
257
257
|
if (existing)
|
|
258
258
|
return existing;
|
|
259
|
-
log("useAuthorAddress protocol.resolveAuthorName", {
|
|
260
|
-
return cacheResolveAuthorAddressPromise(addr, resolveAuthorNameWithProtocol(protocolClient, {
|
|
259
|
+
log("useAuthorAddress protocol.resolveAuthorName", { name: addr });
|
|
260
|
+
return cacheResolveAuthorAddressPromise(addr, resolveAuthorNameWithProtocol(protocolClient, { name: addr }));
|
|
261
261
|
};
|
|
262
262
|
const resolveAuthorAddress = () => __awaiter(this, void 0, void 0, function* () {
|
|
263
263
|
const cached = resolvedAuthorAddressCache.get(addr);
|
|
@@ -359,9 +359,9 @@ export function useResolvedAuthorAddress(options) {
|
|
|
359
359
|
if (Boolean(resolveAuthorAddressPromises[author === null || author === void 0 ? void 0 : author.address])) {
|
|
360
360
|
return resolveAuthorAddressPromises[author === null || author === void 0 ? void 0 : author.address];
|
|
361
361
|
}
|
|
362
|
-
log("useResolvedAuthorAddress protocol.resolveAuthorName", {
|
|
362
|
+
log("useResolvedAuthorAddress protocol.resolveAuthorName", { name: author === null || author === void 0 ? void 0 : author.address });
|
|
363
363
|
return cacheResolveAuthorAddressPromise(author === null || author === void 0 ? void 0 : author.address, resolveAuthorNameWithProtocol(protocolClient, {
|
|
364
|
-
|
|
364
|
+
name: author === null || author === void 0 ? void 0 : author.address,
|
|
365
365
|
}));
|
|
366
366
|
};
|
|
367
367
|
const resolveAuthorAddress = () => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authors.js","sourceRoot":"","sources":["../../../src/hooks/authors/authors.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState, useMemo } from \"react\";\nimport useInterval from \"../utils/use-interval\";\nimport { useAccount } from \"../accounts\";\nimport Logger from \"@pkcprotocol/pkc-logger\";\nconst log = Logger(\"bitsocial-react-hooks:authors:hooks\");\nimport assert from \"assert\";\nimport {\n ChainProviders,\n Author,\n UseAuthorOptions,\n UseAuthorResult,\n UseAuthorCommentsOptions,\n UseAuthorCommentsResult,\n UseAuthorAvatarOptions,\n UseAuthorAvatarResult,\n UseResolvedAuthorAddressOptions,\n UseResolvedAuthorAddressResult,\n UseAuthorAddressOptions,\n UseAuthorAddressResult,\n} from \"../../types\";\nimport {\n useNftMetadataUrl,\n useNftImageUrl,\n useVerifiedAuthorAvatarSignature,\n useAuthorAvatarIsWhitelisted,\n} from \"./author-avatars\";\nimport { useComment, useComments } from \"../comments\";\nimport { useAuthorCommentsName, usePkcAddress } from \"./utils\";\nimport useAuthorsCommentsStore from \"../../stores/authors-comments\";\nimport PkcJs from \"../../lib/pkc-js\";\nimport {\n getConfiguredNameResolverInfoByKey,\n getChainProviders,\n getMatchingNameResolvers,\n getProtocolClient,\n getProtocolNameResolverClients,\n resolveAuthorNameWithProtocol,\n} from \"../../lib/pkc-compat\";\nimport QuickLRU from \"quick-lru\";\nexport { setAuthorAvatarsWhitelistedTokenAddresses } from \"./author-avatars\";\n\nconst cacheResolveAuthorAddressPromise = (\n address: string,\n promise: Promise<string>,\n): Promise<string> => {\n resolveAuthorAddressPromises[address] = promise;\n const clearCachedPromise = () => {\n if (resolveAuthorAddressPromises[address] === promise) {\n delete resolveAuthorAddressPromises[address];\n }\n };\n void promise.then(clearCachedPromise, clearCachedPromise);\n return promise;\n};\n\nconst removeStateChangeListener = (client: any, listener: (state: string) => void) => {\n if (typeof client?.off === \"function\") {\n client.off(\"statechange\", listener);\n return;\n }\n client?.removeListener?.(\"statechange\", listener);\n};\n\n/**\n * @param authorAddress - The address of the author\n * @param commentCid - The last known comment cid of the author (not possible to get an author without providing at least 1 comment cid)\n * @param acountName - The nickname of the account, e.g. 'Account 1'. If no accountName is provided, use\n * the active account.\n */\nexport function useAuthorComments(options?: UseAuthorCommentsOptions): UseAuthorCommentsResult {\n assert(\n !options || typeof options === \"object\",\n `useAuthorComments options argument '${options}' not an object`,\n );\n const { authorAddress, commentCid, accountName, filter } = options || {};\n const account = useAccount({ accountName });\n const authorCommentsName = useAuthorCommentsName(account?.id, authorAddress, filter);\n const incrementPageNumber = useAuthorsCommentsStore((state) => state.incrementPageNumber);\n const addAuthorCommentsToStore = useAuthorsCommentsStore(\n (state) => state.addAuthorCommentsToStore,\n );\n const hasMoreBufferedComments = useAuthorsCommentsStore(\n (state) => state.hasMoreBufferedComments[authorCommentsName || \"\"],\n );\n const hasNextCommentCidToFetch = useAuthorsCommentsStore((state) =>\n Boolean(state.nextCommentCidsToFetch[authorAddress || \"\"]),\n );\n const authorComments = useAuthorsCommentsStore(\n (state) => state.loadedComments[authorCommentsName || \"\"],\n );\n const lastCommentCid = useAuthorsCommentsStore(\n (state) => state.lastCommentCids[authorAddress || \"\"],\n );\n\n // add authors comments to store\n useEffect(() => {\n if (!authorAddress || !commentCid || !account) {\n return;\n }\n try {\n addAuthorCommentsToStore(authorCommentsName, authorAddress, commentCid, filter, account);\n } catch (error: any) {\n log.error(\"useAuthorComments addAuthorCommentsToStore error\", { authorCommentsName, error });\n }\n }, [authorCommentsName, commentCid]);\n\n const loadMore = async () => {\n try {\n if (!authorAddress || !account) {\n throw Error(\"useAuthorComments cannot load more authorComments not initalized yet\");\n }\n incrementPageNumber(authorCommentsName);\n } catch (e: any) {\n // wait 100 ms so infinite scroll doesn't spam this function\n await new Promise((r) => setTimeout(r, 50));\n // TODO: maybe add these errors to errors array\n }\n };\n\n const hasMore = hasMoreBufferedComments || hasNextCommentCidToFetch;\n\n const authorResult = useAuthor({ commentCid, authorAddress, accountName });\n const state = authorResult.state;\n const errors = authorResult.errors;\n\n if (authorResult.author) {\n log(\"useAuthorComments\", {\n authorAddress,\n commentCid,\n // authorComments,\n authorCommentsSize: authorComments?.length || 0,\n lastCommentCid,\n hasMoreBufferedComments,\n hasNextCommentCidToFetch,\n hasMore,\n state,\n errors,\n authorResult,\n accountName,\n });\n }\n\n return useMemo(\n () => ({\n authorComments: authorComments || [],\n lastCommentCid,\n hasMore,\n loadMore,\n state,\n error: errors[errors.length - 1],\n errors,\n }),\n [authorComments, lastCommentCid, hasMore, errors, state],\n );\n}\n\n/**\n * @param authorAddress - The address of the author\n * @param commentCid - The last known comment cid of the author (not possible to get an author without providing at least 1 comment cid)\n * @param acountName - The nickname of the account, e.g. 'Account 1'. If no accountName is provided, use\n * the active account.\n */\nexport function useAuthor(options?: UseAuthorOptions): UseAuthorResult {\n assert(\n !options || typeof options === \"object\",\n `useAuthor options argument '${options}' not an object`,\n );\n const { authorAddress, commentCid, accountName } = options || {};\n const comment = useComment({ commentCid, accountName });\n\n // the commentCid doesnt have the same author address as authorAddress\n const useAuthorError = useMemo(() => {\n // if comment is loaded and author address is different from authorAddress\n if (comment?.timestamp && authorAddress && comment?.author?.address !== authorAddress) {\n return Error(\"commentCid author.address is different from authorAddress\");\n }\n if (commentCid && !authorAddress) {\n return Error(\"missing UseAuthorOptions.authorAddress\");\n }\n if (!commentCid && authorAddress) {\n return Error(\"missing UseAuthorOptions.commentCid\");\n }\n }, [commentCid, comment?.timestamp, comment?.author?.address, authorAddress]);\n\n // if has author error, don't return the autor\n let author: Author | undefined;\n if (!useAuthorError) {\n author = comment?.author;\n }\n\n // merge comment.errors with useAuthorError\n const errors = useMemo(() => {\n if (useAuthorError) {\n return [...comment.errors, useAuthorError];\n }\n return comment.errors;\n }, [comment.errors, useAuthorError]);\n\n // if has author error, state failed\n let state = author ? \"succeeded\" : comment?.state || \"initializing\";\n if (useAuthorError) {\n state = \"failed\";\n }\n\n if (comment?.timestamp) {\n log(\"useAuthor\", {\n authorAddress,\n commentCid,\n author,\n comment,\n useAuthorError,\n state,\n accountName,\n });\n }\n\n return useMemo(\n () => ({\n author,\n state,\n error: errors[errors.length - 1],\n errors,\n }),\n [author, errors, state],\n );\n}\n\n/**\n * @param author - The Author object to resolve the avatar image URL of.\n * @param acountName - The nickname of the account, e.g. 'Account 1'. If no accountName is provided, use\n * the active account.\n */\n// NOTE: useAuthorAvatar tests are skipped, if changes are made they must be tested manually\nexport function useAuthorAvatar(options?: UseAuthorAvatarOptions): UseAuthorAvatarResult {\n assert(\n !options || typeof options === \"object\",\n `useAuthorAvatar options argument '${options}' not an object`,\n );\n const { author, accountName } = options || {};\n const account = useAccount({ accountName });\n\n // TODO: resolve crypto domain and check if one of the record is a profile pic\n\n const { verified, error: signatureError } = useVerifiedAuthorAvatarSignature(author, accountName);\n const verifiedError = verified === false && Error(`nft ownership signature proof invalid`);\n const isWhitelisted = useAuthorAvatarIsWhitelisted(author?.avatar);\n const whitelistedError =\n isWhitelisted === false && Error(`nft collection '${author?.avatar?.address}' not whitelisted`);\n // don't try to get avatar image url at all if signature isn't verified and whitelisted\n const avatar = verified && isWhitelisted ? author?.avatar : undefined;\n const { metadataUrl, error: nftMetadataError } = useNftMetadataUrl(avatar, accountName);\n const { imageUrl, error: nftImageUrlError } = useNftImageUrl(metadataUrl, accountName);\n const chainProvider = getChainProviders(account)?.[avatar?.chainTicker];\n\n const error =\n whitelistedError ||\n verifiedError ||\n signatureError ||\n nftMetadataError ||\n nftImageUrlError ||\n undefined;\n const errors = useMemo(() => (error ? [error] : []), [error]);\n\n let state = \"initializing\";\n if (!author?.avatar) {\n // do nothing, is initializing\n } else if (error) {\n state = \"failed\";\n } else if (imageUrl !== undefined) {\n state = \"succeeded\";\n } else if (metadataUrl !== undefined) {\n state = \"fetching-metadata\";\n } else if (verified !== undefined) {\n state = \"fetching-uri\";\n } else if (author?.avatar) {\n state = \"fetching-owner\";\n }\n\n if (author?.avatar) {\n log(\"useAuthorAvatar\", { author, state, verified, isWhitelisted, metadataUrl, imageUrl });\n }\n\n return useMemo(\n () => ({\n imageUrl,\n metadataUrl,\n chainProvider,\n state,\n error,\n errors,\n }),\n [imageUrl, metadataUrl, chainProvider, state, error],\n );\n}\n\n/**\n * @param author - The Author object to resolve the address of.\n * @param acountName - The nickname of the account, e.g. 'Account 1'. If no accountName is provided, use\n * the active account.\n */\nexport function useAuthorAddress(options?: UseAuthorAddressOptions): UseAuthorAddressResult {\n assert(\n !options || typeof options === \"object\",\n `useAuthorAddress options argument '${options}' not an object`,\n );\n const { comment, accountName } = options || {};\n const account = useAccount({ accountName });\n const protocolClient = getProtocolClient(account);\n const isCryptoName = !!comment?.author?.address?.includes?.(\".\");\n const [resolvedAddress, setResolvedAddress] = useState<string | undefined>(\n isCryptoName ? resolvedAuthorAddressCache.get(comment?.author?.address) : undefined,\n );\n const signerAddress = usePkcAddress(isCryptoName ? comment?.signature?.publicKey : undefined);\n\n // useful for triggering css animation when the address changes from unverified to verified\n const [authorAddressChanged, setAuthorAddressChanged] = useState(false);\n\n useEffect(() => {\n if (!protocolClient || !comment?.author?.address || !isCryptoName) {\n return;\n }\n const addr = comment?.author?.address;\n const resolveAuthorAddressNoCache = () => {\n const existing = resolveAuthorAddressPromises[addr];\n if (existing) return existing;\n log(\"useAuthorAddress protocol.resolveAuthorName\", { address: addr });\n return cacheResolveAuthorAddressPromise(\n addr,\n resolveAuthorNameWithProtocol(protocolClient, { address: addr }),\n );\n };\n const resolveAuthorAddress = async () => {\n const cached = resolvedAuthorAddressCache.get(addr);\n if (cached) return cached;\n const res = await resolveAuthorAddressNoCache();\n resolvedAuthorAddressCache.set(addr, res);\n return res;\n };\n resolveAuthorAddress()\n .then((_resolvedAddress: string) => {\n if (_resolvedAddress !== resolvedAddress) {\n setResolvedAddress(_resolvedAddress);\n setAuthorAddressChanged(true);\n }\n })\n .catch((error: any) => log.error(\"useAuthorAddress error\", { error, comment }));\n }, [protocolClient, comment?.author?.address, isCryptoName]);\n\n // use signer address by default\n let authorAddress = signerAddress;\n // if author address was resolved successfully, use author address\n if (resolvedAddress && signerAddress === resolvedAddress) {\n authorAddress = comment?.author?.address;\n }\n // if isn't crypto name, always use author address\n if (!isCryptoName) {\n authorAddress = comment?.author?.address;\n }\n // if comment has no signature, it's a pending account comment, no need to verify it\n // TODO: eventually account comments will have a signature immediately\n if (comment && !comment?.signature) {\n authorAddress = comment?.author?.address;\n }\n\n let shortAuthorAddress = authorAddress && PkcJs.PKC.getShortAddress({ address: authorAddress });\n\n // if shortAddress is smaller than crypto name, give a longer\n // shortAddress to cause the least UI displacement as possible\n // -4 chars because most fonts will make the address larger\n if (\n isCryptoName &&\n authorAddress &&\n shortAuthorAddress.length < comment?.author?.address?.length - 4\n ) {\n const restOfAuthorAddress = authorAddress.split(shortAuthorAddress).pop();\n shortAuthorAddress = (shortAuthorAddress + restOfAuthorAddress).substring(\n 0,\n comment?.author?.address?.length - 4,\n );\n }\n\n return useMemo(\n () => ({\n authorAddress,\n shortAuthorAddress,\n authorAddressChanged,\n state: \"initializing\",\n error: undefined,\n errors: [],\n }),\n [authorAddress, shortAuthorAddress],\n );\n}\n// TODO: figure out how to upgrade to quick-lru 6+ to use maxAge\nconst resolvedAuthorAddressCache = new QuickLRU<string, string>({ maxSize: 1000 });\nconst resolveAuthorAddressPromises: { [address: string]: Promise<string> } = {};\n\n/** For tests: reset caches to make resolution paths deterministic. */\nexport function resetAuthorAddressCacheForTesting() {\n resolvedAuthorAddressCache.clear();\n for (const k of Object.keys(resolveAuthorAddressPromises)) {\n delete resolveAuthorAddressPromises[k];\n }\n}\n\n/**\n * @param author - The author with author.address to resolve to a public key, e.g. 'john.eth' resolves to '12D3KooW...'.\n * @param acountName - The nickname of the account, e.g. 'Account 1'. If no accountName is provided, use\n * the active account.\n */\n// NOTE: useResolvedAuthorAddress tests are skipped, if changes are made they must be tested manually\nexport function useResolvedAuthorAddress(\n options?: UseResolvedAuthorAddressOptions,\n): UseResolvedAuthorAddressResult {\n assert(\n !options || typeof options === \"object\",\n `useResolvedAuthorAddress options argument '${options}' not an object`,\n );\n let { author, accountName, cache } = options || {};\n\n // cache by default\n if (typeof cache !== \"boolean\") {\n cache = true;\n }\n\n // poll every 15 seconds, about the duration of an eth block\n let interval = 15000;\n // no point in polling often if caching is on\n if (cache) {\n interval = 1000 * 60 * 60 * 25;\n }\n\n const account = useAccount({ accountName });\n const protocolClient = getProtocolClient(account);\n const chainProviders = getChainProviders(account);\n const configuredNameResolvers = useMemo(\n () => getMatchingNameResolvers(account, author?.address),\n [account, author?.address],\n );\n const configuredNameResolversByKey = useMemo(\n () => getConfiguredNameResolverInfoByKey(account),\n [account],\n );\n const [resolvedAddress, setResolvedAddress] = useState<string>();\n const [errors, setErrors] = useState<Error[]>([]);\n const [state, setState] = useState<string>();\n const [activeNameResolverKey, setActiveNameResolverKey] = useState<string>();\n\n let initialState = \"initializing\";\n // before those defined, nothing can happen\n if (options && account && author?.address) {\n initialState = \"ready\";\n }\n\n const isCryptoName = author?.address?.includes?.(\".\");\n\n const resolveAuthorAddressNoCache = () => {\n if (Boolean(resolveAuthorAddressPromises[author?.address])) {\n return resolveAuthorAddressPromises[author?.address];\n }\n log(\"useResolvedAuthorAddress protocol.resolveAuthorName\", { address: author?.address });\n return cacheResolveAuthorAddressPromise(\n author?.address,\n resolveAuthorNameWithProtocol(protocolClient, {\n address: author?.address,\n }),\n );\n };\n const resolveAuthorAddress = async () => {\n const cached = resolvedAuthorAddressCache.get(author?.address);\n if (cached) {\n return cached;\n }\n const res = await resolveAuthorAddressNoCache();\n resolvedAuthorAddressCache.set(author?.address, res);\n return res;\n };\n\n useEffect(() => {\n if (!protocolClient || !author?.address) {\n setActiveNameResolverKey(undefined);\n return;\n }\n\n const nameResolverClients = getProtocolNameResolverClients(protocolClient);\n const entries = Object.entries(nameResolverClients);\n if (!entries.length) {\n setActiveNameResolverKey(undefined);\n return;\n }\n\n const syncFromCurrentClients = () => {\n const nextActiveKey = entries.find(\n ([, client]: [string, any]) => client?.state && client.state !== \"stopped\",\n )?.[0];\n if (nextActiveKey) {\n setActiveNameResolverKey(nextActiveKey);\n }\n };\n\n syncFromCurrentClients();\n\n const disposers = entries.map(([resolverKey, client]: [string, any]) => {\n if (typeof client?.on !== \"function\") {\n return undefined;\n }\n\n const onStateChange = (resolverState: string) => {\n setActiveNameResolverKey((previousResolverKey) => {\n if (resolverState !== \"stopped\") {\n return resolverKey;\n }\n if (previousResolverKey !== resolverKey) {\n return previousResolverKey;\n }\n return (\n entries.find(\n ([candidateResolverKey, candidateClient]: [string, any]) =>\n candidateResolverKey !== resolverKey &&\n candidateClient?.state &&\n candidateClient.state !== \"stopped\",\n )?.[0] || previousResolverKey\n );\n });\n };\n\n client.on(\"statechange\", onStateChange);\n return () => removeStateChangeListener(client, onStateChange);\n });\n\n return () => {\n for (const dispose of disposers) {\n dispose?.();\n }\n };\n }, [author?.address, protocolClient]);\n\n useInterval(\n () => {\n // no options, do nothing or reset\n if (!account || !author?.address) {\n if (resolvedAddress !== undefined) {\n setResolvedAddress(undefined);\n }\n if (state !== undefined) {\n setState(undefined);\n }\n if (errors.length) {\n setErrors([]);\n }\n if (activeNameResolverKey !== undefined) {\n setActiveNameResolverKey(undefined);\n }\n return;\n }\n\n // address isn't a crypto domain, can't be resolved\n if (!isCryptoName) {\n if (state !== \"failed\") {\n setErrors([Error(\"not a crypto domain\")]);\n setState(\"failed\");\n setResolvedAddress(undefined);\n setActiveNameResolverKey(undefined);\n }\n return;\n }\n\n if (!configuredNameResolvers.length) {\n if (state !== \"failed\") {\n setErrors([Error(\"crypto domain type unsupported\")]);\n setState(\"failed\");\n setResolvedAddress(undefined);\n setActiveNameResolverKey(undefined);\n }\n return;\n }\n\n (async () => {\n try {\n setActiveNameResolverKey(\n (previousResolverKey) => previousResolverKey || configuredNameResolvers[0]?.key,\n );\n setState(\"resolving\");\n let res;\n if (cache) {\n res = await resolveAuthorAddress();\n } else {\n res = await resolveAuthorAddressNoCache();\n }\n setState(\"succeeded\");\n\n // TODO: check if resolved address is the same as author.signer.publicKey\n\n if (res !== resolvedAddress) {\n setResolvedAddress(res);\n }\n } catch (error: any) {\n setErrors((previousErrors) => [...previousErrors, error]);\n setState(\"failed\");\n setResolvedAddress(undefined);\n log.error(\"useResolvedAuthorAddress resolveAuthorAddress error\", {\n author,\n chainProviders,\n error,\n });\n }\n })();\n },\n interval,\n true,\n [author?.address, configuredNameResolvers, protocolClient],\n );\n\n const nameResolver =\n (activeNameResolverKey && configuredNameResolversByKey[activeNameResolverKey]) ||\n configuredNameResolvers[0];\n const chainProvider = nameResolver?.chainTicker\n ? chainProviders?.[nameResolver.chainTicker]\n : undefined;\n\n log(\"useResolvedAuthorAddress\", {\n author,\n state,\n errors,\n resolvedAddress,\n chainProviders,\n nameResolver,\n });\n\n return useMemo(\n () => ({\n resolvedAddress,\n chainProvider,\n nameResolver,\n state: state || initialState,\n error: errors[errors.length - 1],\n errors,\n }),\n [resolvedAddress, chainProvider, nameResolver, state, errors],\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"authors.js","sourceRoot":"","sources":["../../../src/hooks/authors/authors.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,MAAM,MAAM,yBAAyB,CAAC;AAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,qCAAqC,CAAC,CAAC;AAC1D,OAAO,MAAM,MAAM,QAAQ,CAAC;AAe5B,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,gCAAgC,EAChC,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAe,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,uBAAuB,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,MAAM,kBAAkB,CAAC;AACrC,OAAO,EACL,kCAAkC,EAClC,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,EACjB,8BAA8B,EAC9B,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,yCAAyC,EAAE,MAAM,kBAAkB,CAAC;AAE7E,MAAM,gCAAgC,GAAG,CACvC,OAAe,EACf,OAAwB,EACP,EAAE;IACnB,4BAA4B,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAChD,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,IAAI,4BAA4B,CAAC,OAAO,CAAC,KAAK,OAAO,EAAE,CAAC;YACtD,OAAO,4BAA4B,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC;IACF,KAAK,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;IAC1D,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAAC,MAAW,EAAE,QAAiC,EAAE,EAAE;;IACnF,IAAI,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAA,KAAK,UAAU,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IACD,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,uDAAG,aAAa,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAkC;IAClE,MAAM,CACJ,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EACvC,uCAAuC,OAAO,iBAAiB,CAChE,CAAC;IACF,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACzE,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5C,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,EAAE,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IACrF,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC1F,MAAM,wBAAwB,GAAG,uBAAuB,CACtD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAC1C,CAAC;IACF,MAAM,uBAAuB,GAAG,uBAAuB,CACrD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,kBAAkB,IAAI,EAAE,CAAC,CACnE,CAAC;IACF,MAAM,wBAAwB,GAAG,uBAAuB,CAAC,CAAC,KAAK,EAAE,EAAE,CACjE,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAC3D,CAAC;IACF,MAAM,cAAc,GAAG,uBAAuB,CAC5C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAC1D,CAAC;IACF,MAAM,cAAc,GAAG,uBAAuB,CAC5C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,aAAa,IAAI,EAAE,CAAC,CACtD,CAAC;IAEF,gCAAgC;IAChC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9C,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,wBAAwB,CAAC,kBAAkB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3F,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,CAAC,kDAAkD,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC,EAAE,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,CAAC;IAErC,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC,sEAAsE,CAAC,CAAC;YACtF,CAAC;YACD,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,4DAA4D;YAC5D,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5C,+CAA+C;QACjD,CAAC;IACH,CAAC,CAAA,CAAC;IAEF,MAAM,OAAO,GAAG,uBAAuB,IAAI,wBAAwB,CAAC;IAEpE,MAAM,YAAY,GAAG,SAAS,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;IACjC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IAEnC,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACxB,GAAG,CAAC,mBAAmB,EAAE;YACvB,aAAa;YACb,UAAU;YACV,kBAAkB;YAClB,kBAAkB,EAAE,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,MAAM,KAAI,CAAC;YAC/C,cAAc;YACd,uBAAuB;YACvB,wBAAwB;YACxB,OAAO;YACP,KAAK;YACL,MAAM;YACN,YAAY;YACZ,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,cAAc,EAAE,cAAc,IAAI,EAAE;QACpC,cAAc;QACd,OAAO;QACP,QAAQ;QACR,KAAK;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAChC,MAAM;KACP,CAAC,EACF,CAAC,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CACzD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,OAA0B;;IAClD,MAAM,CACJ,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EACvC,+BAA+B,OAAO,iBAAiB,CACxD,CAAC;IACF,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACjE,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;IAExD,sEAAsE;IACtE,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;;QAClC,0EAA0E;QAC1E,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,KAAI,aAAa,IAAI,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,OAAO,MAAK,aAAa,EAAE,CAAC;YACtF,OAAO,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,UAAU,IAAI,CAAC,aAAa,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,UAAU,IAAI,aAAa,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IAE9E,8CAA8C;IAC9C,IAAI,MAA0B,CAAC;IAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC;IAC3B,CAAC;IAED,2CAA2C;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,OAAO,CAAC,MAAM,CAAC;IACxB,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IAErC,oCAAoC;IACpC,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,KAAI,cAAc,CAAC;IACpE,IAAI,cAAc,EAAE,CAAC;QACnB,KAAK,GAAG,QAAQ,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAE,CAAC;QACvB,GAAG,CAAC,WAAW,EAAE;YACf,aAAa;YACb,UAAU;YACV,MAAM;YACN,OAAO;YACP,cAAc;YACd,KAAK;YACL,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,MAAM;QACN,KAAK;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAChC,MAAM;KACP,CAAC,EACF,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CACxB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,4FAA4F;AAC5F,MAAM,UAAU,eAAe,CAAC,OAAgC;;IAC9D,MAAM,CACJ,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EACvC,qCAAqC,OAAO,iBAAiB,CAC9D,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAE5C,8EAA8E;IAE9E,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,gCAAgC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAClG,MAAM,aAAa,GAAG,QAAQ,KAAK,KAAK,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3F,MAAM,aAAa,GAAG,4BAA4B,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC,CAAC;IACnE,MAAM,gBAAgB,GACpB,aAAa,KAAK,KAAK,IAAI,KAAK,CAAC,mBAAmB,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,OAAO,mBAAmB,CAAC,CAAC;IAClG,uFAAuF;IACvF,MAAM,MAAM,GAAG,QAAQ,IAAI,aAAa,CAAC,CAAC,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACxF,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACvF,MAAM,aAAa,GAAG,MAAA,iBAAiB,CAAC,OAAO,CAAC,0CAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,CAAC,CAAC;IAExE,MAAM,KAAK,GACT,gBAAgB;QAChB,aAAa;QACb,cAAc;QACd,gBAAgB;QAChB,gBAAgB;QAChB,SAAS,CAAC;IACZ,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAE9D,IAAI,KAAK,GAAG,cAAc,CAAC;IAC3B,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAA,EAAE,CAAC;QACpB,8BAA8B;IAChC,CAAC;SAAM,IAAI,KAAK,EAAE,CAAC;QACjB,KAAK,GAAG,QAAQ,CAAC;IACnB,CAAC;SAAM,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,KAAK,GAAG,WAAW,CAAC;IACtB,CAAC;SAAM,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QACrC,KAAK,GAAG,mBAAmB,CAAC;IAC9B,CAAC;SAAM,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,KAAK,GAAG,cAAc,CAAC;IACzB,CAAC;SAAM,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,EAAE,CAAC;QAC1B,KAAK,GAAG,gBAAgB,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,EAAE,CAAC;QACnB,GAAG,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,QAAQ;QACR,WAAW;QACX,aAAa;QACb,KAAK;QACL,KAAK;QACL,MAAM;KACP,CAAC,EACF,CAAC,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,CACrD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAiC;;IAChE,MAAM,CACJ,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EACvC,sCAAsC,OAAO,iBAAiB,CAC/D,CAAC;IACF,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5C,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,CAAC,CAAC,CAAA,MAAA,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,OAAO,0CAAE,QAAQ,mDAAG,GAAG,CAAC,CAAA,CAAC;IACjE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CACpD,YAAY,CAAC,CAAC,CAAC,0BAA0B,CAAC,GAAG,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CACpF,CAAC;IACF,MAAM,aAAa,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,0CAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE9F,2FAA2F;IAC3F,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExE,SAAS,CAAC,GAAG,EAAE;;QACb,IAAI,CAAC,cAAc,IAAI,CAAC,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,OAAO,CAAA,IAAI,CAAC,YAAY,EAAE,CAAC;YAClE,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,OAAO,CAAC;QACtC,MAAM,2BAA2B,GAAG,GAAG,EAAE;YACvC,MAAM,QAAQ,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;YAC9B,GAAG,CAAC,6CAA6C,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,OAAO,gCAAgC,CACrC,IAAI,EACJ,6BAA6B,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAC9D,CAAC;QACJ,CAAC,CAAC;QACF,MAAM,oBAAoB,GAAG,GAAS,EAAE;YACtC,MAAM,MAAM,GAAG,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAC1B,MAAM,GAAG,GAAG,MAAM,2BAA2B,EAAE,CAAC;YAChD,0BAA0B,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC1C,OAAO,GAAG,CAAC;QACb,CAAC,CAAA,CAAC;QACF,oBAAoB,EAAE;aACnB,IAAI,CAAC,CAAC,gBAAwB,EAAE,EAAE;YACjC,IAAI,gBAAgB,KAAK,eAAe,EAAE,CAAC;gBACzC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;gBACrC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACpF,CAAC,EAAE,CAAC,cAAc,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAE7D,gCAAgC;IAChC,IAAI,aAAa,GAAG,aAAa,CAAC;IAClC,kEAAkE;IAClE,IAAI,eAAe,IAAI,aAAa,KAAK,eAAe,EAAE,CAAC;QACzD,aAAa,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,OAAO,CAAC;IAC3C,CAAC;IACD,kDAAkD;IAClD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,aAAa,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,OAAO,CAAC;IAC3C,CAAC;IACD,oFAAoF;IACpF,sEAAsE;IACtE,IAAI,OAAO,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAA,EAAE,CAAC;QACnC,aAAa,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,OAAO,CAAC;IAC3C,CAAC;IAED,IAAI,kBAAkB,GAAG,aAAa,IAAI,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;IAEhG,6DAA6D;IAC7D,8DAA8D;IAC9D,2DAA2D;IAC3D,IACE,YAAY;QACZ,aAAa;QACb,kBAAkB,CAAC,MAAM,GAAG,CAAA,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,OAAO,0CAAE,MAAM,IAAG,CAAC,EAChE,CAAC;QACD,MAAM,mBAAmB,GAAG,aAAa,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,CAAC;QAC1E,kBAAkB,GAAG,CAAC,kBAAkB,GAAG,mBAAmB,CAAC,CAAC,SAAS,CACvE,CAAC,EACD,CAAA,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,OAAO,0CAAE,MAAM,IAAG,CAAC,CACrC,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,aAAa;QACb,kBAAkB;QAClB,oBAAoB;QACpB,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,EAAE;KACX,CAAC,EACF,CAAC,aAAa,EAAE,kBAAkB,CAAC,CACpC,CAAC;AACJ,CAAC;AACD,gEAAgE;AAChE,MAAM,0BAA0B,GAAG,IAAI,QAAQ,CAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AACnF,MAAM,4BAA4B,GAA2C,EAAE,CAAC;AAEhF,sEAAsE;AACtE,MAAM,UAAU,iCAAiC;IAC/C,0BAA0B,CAAC,KAAK,EAAE,CAAC;IACnC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,EAAE,CAAC;QAC1D,OAAO,4BAA4B,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,qGAAqG;AACrG,MAAM,UAAU,wBAAwB,CACtC,OAAyC;;IAEzC,MAAM,CACJ,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EACvC,8CAA8C,OAAO,iBAAiB,CACvE,CAAC;IACF,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAEnD,mBAAmB;IACnB,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,KAAK,GAAG,IAAI,CAAC;IACf,CAAC;IAED,4DAA4D;IAC5D,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,6CAA6C;IAC7C,IAAI,KAAK,EAAE,CAAC;QACV,QAAQ,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACjC,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5C,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,uBAAuB,GAAG,OAAO,CACrC,GAAG,EAAE,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,EACxD,CAAC,OAAO,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,CAC3B,CAAC;IACF,MAAM,4BAA4B,GAAG,OAAO,CAC1C,GAAG,EAAE,CAAC,kCAAkC,CAAC,OAAO,CAAC,EACjD,CAAC,OAAO,CAAC,CACV,CAAC;IACF,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,EAAU,CAAC;IACjE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAU,EAAE,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAU,CAAC;IAC7C,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,EAAU,CAAC;IAE7E,IAAI,YAAY,GAAG,cAAc,CAAC;IAClC,2CAA2C;IAC3C,IAAI,OAAO,IAAI,OAAO,KAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAA,EAAE,CAAC;QAC1C,YAAY,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,MAAM,YAAY,GAAG,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,0CAAE,QAAQ,mDAAG,GAAG,CAAC,CAAC;IAEtD,MAAM,2BAA2B,GAAG,GAAG,EAAE;QACvC,IAAI,OAAO,CAAC,4BAA4B,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,CAAC,EAAE,CAAC;YAC3D,OAAO,4BAA4B,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,CAAC;QACvD,CAAC;QACD,GAAG,CAAC,qDAAqD,EAAE,EAAE,IAAI,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE,CAAC,CAAC;QACtF,OAAO,gCAAgC,CACrC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,EACf,6BAA6B,CAAC,cAAc,EAAE;YAC5C,IAAI,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO;SACtB,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;IACF,MAAM,oBAAoB,GAAG,GAAS,EAAE;QACtC,MAAM,MAAM,GAAG,0BAA0B,CAAC,GAAG,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,2BAA2B,EAAE,CAAC;QAChD,0BAA0B,CAAC,GAAG,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACrD,OAAO,GAAG,CAAC;IACb,CAAC,CAAA,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,cAAc,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAA,EAAE,CAAC;YACxC,wBAAwB,CAAC,SAAS,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QAED,MAAM,mBAAmB,GAAG,8BAA8B,CAAC,cAAc,CAAC,CAAC;QAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,wBAAwB,CAAC,SAAS,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QAED,MAAM,sBAAsB,GAAG,GAAG,EAAE;;YAClC,MAAM,aAAa,GAAG,MAAA,OAAO,CAAC,IAAI,CAChC,CAAC,CAAC,EAAE,MAAM,CAAgB,EAAE,EAAE,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,KAAI,MAAM,CAAC,KAAK,KAAK,SAAS,CAC3E,0CAAG,CAAC,CAAC,CAAC;YACP,IAAI,aAAa,EAAE,CAAC;gBAClB,wBAAwB,CAAC,aAAa,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC;QAEF,sBAAsB,EAAE,CAAC;QAEzB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,CAAgB,EAAE,EAAE;YACrE,IAAI,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,CAAA,KAAK,UAAU,EAAE,CAAC;gBACrC,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,aAAa,GAAG,CAAC,aAAqB,EAAE,EAAE;gBAC9C,wBAAwB,CAAC,CAAC,mBAAmB,EAAE,EAAE;;oBAC/C,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;wBAChC,OAAO,WAAW,CAAC;oBACrB,CAAC;oBACD,IAAI,mBAAmB,KAAK,WAAW,EAAE,CAAC;wBACxC,OAAO,mBAAmB,CAAC;oBAC7B,CAAC;oBACD,OAAO,CACL,CAAA,MAAA,OAAO,CAAC,IAAI,CACV,CAAC,CAAC,oBAAoB,EAAE,eAAe,CAAgB,EAAE,EAAE,CACzD,oBAAoB,KAAK,WAAW;yBACpC,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,CAAA;wBACtB,eAAe,CAAC,KAAK,KAAK,SAAS,CACtC,0CAAG,CAAC,CAAC,KAAI,mBAAmB,CAC9B,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YAEF,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YACxC,OAAO,GAAG,EAAE,CAAC,yBAAyB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;gBAChC,OAAO,aAAP,OAAO,uBAAP,OAAO,EAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;IAEtC,WAAW,CACT,GAAG,EAAE;QACH,kCAAkC;QAClC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAA,EAAE,CAAC;YACjC,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBAClC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAChC,CAAC;YACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,QAAQ,CAAC,SAAS,CAAC,CAAC;YACtB,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,SAAS,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC;YACD,IAAI,qBAAqB,KAAK,SAAS,EAAE,CAAC;gBACxC,wBAAwB,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC;YACD,OAAO;QACT,CAAC;QAED,mDAAmD;QACnD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvB,SAAS,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;gBAC1C,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACnB,kBAAkB,CAAC,SAAS,CAAC,CAAC;gBAC9B,wBAAwB,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvB,SAAS,CAAC,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC;gBACrD,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACnB,kBAAkB,CAAC,SAAS,CAAC,CAAC;gBAC9B,wBAAwB,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC;YACD,OAAO;QACT,CAAC;QAED,CAAC,GAAS,EAAE;YACV,IAAI,CAAC;gBACH,wBAAwB,CACtB,CAAC,mBAAmB,EAAE,EAAE,WAAC,OAAA,mBAAmB,KAAI,MAAA,uBAAuB,CAAC,CAAC,CAAC,0CAAE,GAAG,CAAA,CAAA,EAAA,CAChF,CAAC;gBACF,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACtB,IAAI,GAAG,CAAC;gBACR,IAAI,KAAK,EAAE,CAAC;oBACV,GAAG,GAAG,MAAM,oBAAoB,EAAE,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,GAAG,GAAG,MAAM,2BAA2B,EAAE,CAAC;gBAC5C,CAAC;gBACD,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAEtB,yEAAyE;gBAEzE,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;oBAC5B,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC1D,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACnB,kBAAkB,CAAC,SAAS,CAAC,CAAC;gBAC9B,GAAG,CAAC,KAAK,CAAC,qDAAqD,EAAE;oBAC/D,MAAM;oBACN,cAAc;oBACd,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAA,CAAC,EAAE,CAAC;IACP,CAAC,EACD,QAAQ,EACR,IAAI,EACJ,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE,uBAAuB,EAAE,cAAc,CAAC,CAC3D,CAAC;IAEF,MAAM,YAAY,GAChB,CAAC,qBAAqB,IAAI,4BAA4B,CAAC,qBAAqB,CAAC,CAAC;QAC9E,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,aAAa,GAAG,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,WAAW;QAC7C,CAAC,CAAC,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAG,YAAY,CAAC,WAAW,CAAC;QAC5C,CAAC,CAAC,SAAS,CAAC;IAEd,GAAG,CAAC,0BAA0B,EAAE;QAC9B,MAAM;QACN,KAAK;QACL,MAAM;QACN,eAAe;QACf,cAAc;QACd,YAAY;KACb,CAAC,CAAC;IAEH,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,eAAe;QACf,aAAa;QACb,YAAY;QACZ,KAAK,EAAE,KAAK,IAAI,YAAY;QAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAChC,MAAM;KACP,CAAC,EACF,CAAC,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,CAC9D,CAAC;AACJ,CAAC","sourcesContent":["import { useEffect, useState, useMemo } from \"react\";\nimport useInterval from \"../utils/use-interval\";\nimport { useAccount } from \"../accounts\";\nimport Logger from \"@pkcprotocol/pkc-logger\";\nconst log = Logger(\"bitsocial-react-hooks:authors:hooks\");\nimport assert from \"assert\";\nimport {\n ChainProviders,\n Author,\n UseAuthorOptions,\n UseAuthorResult,\n UseAuthorCommentsOptions,\n UseAuthorCommentsResult,\n UseAuthorAvatarOptions,\n UseAuthorAvatarResult,\n UseResolvedAuthorAddressOptions,\n UseResolvedAuthorAddressResult,\n UseAuthorAddressOptions,\n UseAuthorAddressResult,\n} from \"../../types\";\nimport {\n useNftMetadataUrl,\n useNftImageUrl,\n useVerifiedAuthorAvatarSignature,\n useAuthorAvatarIsWhitelisted,\n} from \"./author-avatars\";\nimport { useComment, useComments } from \"../comments\";\nimport { useAuthorCommentsName, usePkcAddress } from \"./utils\";\nimport useAuthorsCommentsStore from \"../../stores/authors-comments\";\nimport PkcJs from \"../../lib/pkc-js\";\nimport {\n getConfiguredNameResolverInfoByKey,\n getChainProviders,\n getMatchingNameResolvers,\n getProtocolClient,\n getProtocolNameResolverClients,\n resolveAuthorNameWithProtocol,\n} from \"../../lib/pkc-compat\";\nimport QuickLRU from \"quick-lru\";\nexport { setAuthorAvatarsWhitelistedTokenAddresses } from \"./author-avatars\";\n\nconst cacheResolveAuthorAddressPromise = (\n address: string,\n promise: Promise<string>,\n): Promise<string> => {\n resolveAuthorAddressPromises[address] = promise;\n const clearCachedPromise = () => {\n if (resolveAuthorAddressPromises[address] === promise) {\n delete resolveAuthorAddressPromises[address];\n }\n };\n void promise.then(clearCachedPromise, clearCachedPromise);\n return promise;\n};\n\nconst removeStateChangeListener = (client: any, listener: (state: string) => void) => {\n if (typeof client?.off === \"function\") {\n client.off(\"statechange\", listener);\n return;\n }\n client?.removeListener?.(\"statechange\", listener);\n};\n\n/**\n * @param authorAddress - The address of the author\n * @param commentCid - The last known comment cid of the author (not possible to get an author without providing at least 1 comment cid)\n * @param acountName - The nickname of the account, e.g. 'Account 1'. If no accountName is provided, use\n * the active account.\n */\nexport function useAuthorComments(options?: UseAuthorCommentsOptions): UseAuthorCommentsResult {\n assert(\n !options || typeof options === \"object\",\n `useAuthorComments options argument '${options}' not an object`,\n );\n const { authorAddress, commentCid, accountName, filter } = options || {};\n const account = useAccount({ accountName });\n const authorCommentsName = useAuthorCommentsName(account?.id, authorAddress, filter);\n const incrementPageNumber = useAuthorsCommentsStore((state) => state.incrementPageNumber);\n const addAuthorCommentsToStore = useAuthorsCommentsStore(\n (state) => state.addAuthorCommentsToStore,\n );\n const hasMoreBufferedComments = useAuthorsCommentsStore(\n (state) => state.hasMoreBufferedComments[authorCommentsName || \"\"],\n );\n const hasNextCommentCidToFetch = useAuthorsCommentsStore((state) =>\n Boolean(state.nextCommentCidsToFetch[authorAddress || \"\"]),\n );\n const authorComments = useAuthorsCommentsStore(\n (state) => state.loadedComments[authorCommentsName || \"\"],\n );\n const lastCommentCid = useAuthorsCommentsStore(\n (state) => state.lastCommentCids[authorAddress || \"\"],\n );\n\n // add authors comments to store\n useEffect(() => {\n if (!authorAddress || !commentCid || !account) {\n return;\n }\n try {\n addAuthorCommentsToStore(authorCommentsName, authorAddress, commentCid, filter, account);\n } catch (error: any) {\n log.error(\"useAuthorComments addAuthorCommentsToStore error\", { authorCommentsName, error });\n }\n }, [authorCommentsName, commentCid]);\n\n const loadMore = async () => {\n try {\n if (!authorAddress || !account) {\n throw Error(\"useAuthorComments cannot load more authorComments not initalized yet\");\n }\n incrementPageNumber(authorCommentsName);\n } catch (e: any) {\n // wait 100 ms so infinite scroll doesn't spam this function\n await new Promise((r) => setTimeout(r, 50));\n // TODO: maybe add these errors to errors array\n }\n };\n\n const hasMore = hasMoreBufferedComments || hasNextCommentCidToFetch;\n\n const authorResult = useAuthor({ commentCid, authorAddress, accountName });\n const state = authorResult.state;\n const errors = authorResult.errors;\n\n if (authorResult.author) {\n log(\"useAuthorComments\", {\n authorAddress,\n commentCid,\n // authorComments,\n authorCommentsSize: authorComments?.length || 0,\n lastCommentCid,\n hasMoreBufferedComments,\n hasNextCommentCidToFetch,\n hasMore,\n state,\n errors,\n authorResult,\n accountName,\n });\n }\n\n return useMemo(\n () => ({\n authorComments: authorComments || [],\n lastCommentCid,\n hasMore,\n loadMore,\n state,\n error: errors[errors.length - 1],\n errors,\n }),\n [authorComments, lastCommentCid, hasMore, errors, state],\n );\n}\n\n/**\n * @param authorAddress - The address of the author\n * @param commentCid - The last known comment cid of the author (not possible to get an author without providing at least 1 comment cid)\n * @param acountName - The nickname of the account, e.g. 'Account 1'. If no accountName is provided, use\n * the active account.\n */\nexport function useAuthor(options?: UseAuthorOptions): UseAuthorResult {\n assert(\n !options || typeof options === \"object\",\n `useAuthor options argument '${options}' not an object`,\n );\n const { authorAddress, commentCid, accountName } = options || {};\n const comment = useComment({ commentCid, accountName });\n\n // the commentCid doesnt have the same author address as authorAddress\n const useAuthorError = useMemo(() => {\n // if comment is loaded and author address is different from authorAddress\n if (comment?.timestamp && authorAddress && comment?.author?.address !== authorAddress) {\n return Error(\"commentCid author.address is different from authorAddress\");\n }\n if (commentCid && !authorAddress) {\n return Error(\"missing UseAuthorOptions.authorAddress\");\n }\n if (!commentCid && authorAddress) {\n return Error(\"missing UseAuthorOptions.commentCid\");\n }\n }, [commentCid, comment?.timestamp, comment?.author?.address, authorAddress]);\n\n // if has author error, don't return the autor\n let author: Author | undefined;\n if (!useAuthorError) {\n author = comment?.author;\n }\n\n // merge comment.errors with useAuthorError\n const errors = useMemo(() => {\n if (useAuthorError) {\n return [...comment.errors, useAuthorError];\n }\n return comment.errors;\n }, [comment.errors, useAuthorError]);\n\n // if has author error, state failed\n let state = author ? \"succeeded\" : comment?.state || \"initializing\";\n if (useAuthorError) {\n state = \"failed\";\n }\n\n if (comment?.timestamp) {\n log(\"useAuthor\", {\n authorAddress,\n commentCid,\n author,\n comment,\n useAuthorError,\n state,\n accountName,\n });\n }\n\n return useMemo(\n () => ({\n author,\n state,\n error: errors[errors.length - 1],\n errors,\n }),\n [author, errors, state],\n );\n}\n\n/**\n * @param author - The Author object to resolve the avatar image URL of.\n * @param acountName - The nickname of the account, e.g. 'Account 1'. If no accountName is provided, use\n * the active account.\n */\n// NOTE: useAuthorAvatar tests are skipped, if changes are made they must be tested manually\nexport function useAuthorAvatar(options?: UseAuthorAvatarOptions): UseAuthorAvatarResult {\n assert(\n !options || typeof options === \"object\",\n `useAuthorAvatar options argument '${options}' not an object`,\n );\n const { author, accountName } = options || {};\n const account = useAccount({ accountName });\n\n // TODO: resolve crypto domain and check if one of the record is a profile pic\n\n const { verified, error: signatureError } = useVerifiedAuthorAvatarSignature(author, accountName);\n const verifiedError = verified === false && Error(`nft ownership signature proof invalid`);\n const isWhitelisted = useAuthorAvatarIsWhitelisted(author?.avatar);\n const whitelistedError =\n isWhitelisted === false && Error(`nft collection '${author?.avatar?.address}' not whitelisted`);\n // don't try to get avatar image url at all if signature isn't verified and whitelisted\n const avatar = verified && isWhitelisted ? author?.avatar : undefined;\n const { metadataUrl, error: nftMetadataError } = useNftMetadataUrl(avatar, accountName);\n const { imageUrl, error: nftImageUrlError } = useNftImageUrl(metadataUrl, accountName);\n const chainProvider = getChainProviders(account)?.[avatar?.chainTicker];\n\n const error =\n whitelistedError ||\n verifiedError ||\n signatureError ||\n nftMetadataError ||\n nftImageUrlError ||\n undefined;\n const errors = useMemo(() => (error ? [error] : []), [error]);\n\n let state = \"initializing\";\n if (!author?.avatar) {\n // do nothing, is initializing\n } else if (error) {\n state = \"failed\";\n } else if (imageUrl !== undefined) {\n state = \"succeeded\";\n } else if (metadataUrl !== undefined) {\n state = \"fetching-metadata\";\n } else if (verified !== undefined) {\n state = \"fetching-uri\";\n } else if (author?.avatar) {\n state = \"fetching-owner\";\n }\n\n if (author?.avatar) {\n log(\"useAuthorAvatar\", { author, state, verified, isWhitelisted, metadataUrl, imageUrl });\n }\n\n return useMemo(\n () => ({\n imageUrl,\n metadataUrl,\n chainProvider,\n state,\n error,\n errors,\n }),\n [imageUrl, metadataUrl, chainProvider, state, error],\n );\n}\n\n/**\n * @param author - The Author object to resolve the address of.\n * @param acountName - The nickname of the account, e.g. 'Account 1'. If no accountName is provided, use\n * the active account.\n */\nexport function useAuthorAddress(options?: UseAuthorAddressOptions): UseAuthorAddressResult {\n assert(\n !options || typeof options === \"object\",\n `useAuthorAddress options argument '${options}' not an object`,\n );\n const { comment, accountName } = options || {};\n const account = useAccount({ accountName });\n const protocolClient = getProtocolClient(account);\n const isCryptoName = !!comment?.author?.address?.includes?.(\".\");\n const [resolvedAddress, setResolvedAddress] = useState<string | undefined>(\n isCryptoName ? resolvedAuthorAddressCache.get(comment?.author?.address) : undefined,\n );\n const signerAddress = usePkcAddress(isCryptoName ? comment?.signature?.publicKey : undefined);\n\n // useful for triggering css animation when the address changes from unverified to verified\n const [authorAddressChanged, setAuthorAddressChanged] = useState(false);\n\n useEffect(() => {\n if (!protocolClient || !comment?.author?.address || !isCryptoName) {\n return;\n }\n const addr = comment?.author?.address;\n const resolveAuthorAddressNoCache = () => {\n const existing = resolveAuthorAddressPromises[addr];\n if (existing) return existing;\n log(\"useAuthorAddress protocol.resolveAuthorName\", { name: addr });\n return cacheResolveAuthorAddressPromise(\n addr,\n resolveAuthorNameWithProtocol(protocolClient, { name: addr }),\n );\n };\n const resolveAuthorAddress = async () => {\n const cached = resolvedAuthorAddressCache.get(addr);\n if (cached) return cached;\n const res = await resolveAuthorAddressNoCache();\n resolvedAuthorAddressCache.set(addr, res);\n return res;\n };\n resolveAuthorAddress()\n .then((_resolvedAddress: string) => {\n if (_resolvedAddress !== resolvedAddress) {\n setResolvedAddress(_resolvedAddress);\n setAuthorAddressChanged(true);\n }\n })\n .catch((error: any) => log.error(\"useAuthorAddress error\", { error, comment }));\n }, [protocolClient, comment?.author?.address, isCryptoName]);\n\n // use signer address by default\n let authorAddress = signerAddress;\n // if author address was resolved successfully, use author address\n if (resolvedAddress && signerAddress === resolvedAddress) {\n authorAddress = comment?.author?.address;\n }\n // if isn't crypto name, always use author address\n if (!isCryptoName) {\n authorAddress = comment?.author?.address;\n }\n // if comment has no signature, it's a pending account comment, no need to verify it\n // TODO: eventually account comments will have a signature immediately\n if (comment && !comment?.signature) {\n authorAddress = comment?.author?.address;\n }\n\n let shortAuthorAddress = authorAddress && PkcJs.PKC.getShortAddress({ address: authorAddress });\n\n // if shortAddress is smaller than crypto name, give a longer\n // shortAddress to cause the least UI displacement as possible\n // -4 chars because most fonts will make the address larger\n if (\n isCryptoName &&\n authorAddress &&\n shortAuthorAddress.length < comment?.author?.address?.length - 4\n ) {\n const restOfAuthorAddress = authorAddress.split(shortAuthorAddress).pop();\n shortAuthorAddress = (shortAuthorAddress + restOfAuthorAddress).substring(\n 0,\n comment?.author?.address?.length - 4,\n );\n }\n\n return useMemo(\n () => ({\n authorAddress,\n shortAuthorAddress,\n authorAddressChanged,\n state: \"initializing\",\n error: undefined,\n errors: [],\n }),\n [authorAddress, shortAuthorAddress],\n );\n}\n// TODO: figure out how to upgrade to quick-lru 6+ to use maxAge\nconst resolvedAuthorAddressCache = new QuickLRU<string, string>({ maxSize: 1000 });\nconst resolveAuthorAddressPromises: { [address: string]: Promise<string> } = {};\n\n/** For tests: reset caches to make resolution paths deterministic. */\nexport function resetAuthorAddressCacheForTesting() {\n resolvedAuthorAddressCache.clear();\n for (const k of Object.keys(resolveAuthorAddressPromises)) {\n delete resolveAuthorAddressPromises[k];\n }\n}\n\n/**\n * @param author - The author with author.address to resolve to a public key, e.g. 'john.eth' resolves to '12D3KooW...'.\n * @param acountName - The nickname of the account, e.g. 'Account 1'. If no accountName is provided, use\n * the active account.\n */\n// NOTE: useResolvedAuthorAddress tests are skipped, if changes are made they must be tested manually\nexport function useResolvedAuthorAddress(\n options?: UseResolvedAuthorAddressOptions,\n): UseResolvedAuthorAddressResult {\n assert(\n !options || typeof options === \"object\",\n `useResolvedAuthorAddress options argument '${options}' not an object`,\n );\n let { author, accountName, cache } = options || {};\n\n // cache by default\n if (typeof cache !== \"boolean\") {\n cache = true;\n }\n\n // poll every 15 seconds, about the duration of an eth block\n let interval = 15000;\n // no point in polling often if caching is on\n if (cache) {\n interval = 1000 * 60 * 60 * 25;\n }\n\n const account = useAccount({ accountName });\n const protocolClient = getProtocolClient(account);\n const chainProviders = getChainProviders(account);\n const configuredNameResolvers = useMemo(\n () => getMatchingNameResolvers(account, author?.address),\n [account, author?.address],\n );\n const configuredNameResolversByKey = useMemo(\n () => getConfiguredNameResolverInfoByKey(account),\n [account],\n );\n const [resolvedAddress, setResolvedAddress] = useState<string>();\n const [errors, setErrors] = useState<Error[]>([]);\n const [state, setState] = useState<string>();\n const [activeNameResolverKey, setActiveNameResolverKey] = useState<string>();\n\n let initialState = \"initializing\";\n // before those defined, nothing can happen\n if (options && account && author?.address) {\n initialState = \"ready\";\n }\n\n const isCryptoName = author?.address?.includes?.(\".\");\n\n const resolveAuthorAddressNoCache = () => {\n if (Boolean(resolveAuthorAddressPromises[author?.address])) {\n return resolveAuthorAddressPromises[author?.address];\n }\n log(\"useResolvedAuthorAddress protocol.resolveAuthorName\", { name: author?.address });\n return cacheResolveAuthorAddressPromise(\n author?.address,\n resolveAuthorNameWithProtocol(protocolClient, {\n name: author?.address,\n }),\n );\n };\n const resolveAuthorAddress = async () => {\n const cached = resolvedAuthorAddressCache.get(author?.address);\n if (cached) {\n return cached;\n }\n const res = await resolveAuthorAddressNoCache();\n resolvedAuthorAddressCache.set(author?.address, res);\n return res;\n };\n\n useEffect(() => {\n if (!protocolClient || !author?.address) {\n setActiveNameResolverKey(undefined);\n return;\n }\n\n const nameResolverClients = getProtocolNameResolverClients(protocolClient);\n const entries = Object.entries(nameResolverClients);\n if (!entries.length) {\n setActiveNameResolverKey(undefined);\n return;\n }\n\n const syncFromCurrentClients = () => {\n const nextActiveKey = entries.find(\n ([, client]: [string, any]) => client?.state && client.state !== \"stopped\",\n )?.[0];\n if (nextActiveKey) {\n setActiveNameResolverKey(nextActiveKey);\n }\n };\n\n syncFromCurrentClients();\n\n const disposers = entries.map(([resolverKey, client]: [string, any]) => {\n if (typeof client?.on !== \"function\") {\n return undefined;\n }\n\n const onStateChange = (resolverState: string) => {\n setActiveNameResolverKey((previousResolverKey) => {\n if (resolverState !== \"stopped\") {\n return resolverKey;\n }\n if (previousResolverKey !== resolverKey) {\n return previousResolverKey;\n }\n return (\n entries.find(\n ([candidateResolverKey, candidateClient]: [string, any]) =>\n candidateResolverKey !== resolverKey &&\n candidateClient?.state &&\n candidateClient.state !== \"stopped\",\n )?.[0] || previousResolverKey\n );\n });\n };\n\n client.on(\"statechange\", onStateChange);\n return () => removeStateChangeListener(client, onStateChange);\n });\n\n return () => {\n for (const dispose of disposers) {\n dispose?.();\n }\n };\n }, [author?.address, protocolClient]);\n\n useInterval(\n () => {\n // no options, do nothing or reset\n if (!account || !author?.address) {\n if (resolvedAddress !== undefined) {\n setResolvedAddress(undefined);\n }\n if (state !== undefined) {\n setState(undefined);\n }\n if (errors.length) {\n setErrors([]);\n }\n if (activeNameResolverKey !== undefined) {\n setActiveNameResolverKey(undefined);\n }\n return;\n }\n\n // address isn't a crypto domain, can't be resolved\n if (!isCryptoName) {\n if (state !== \"failed\") {\n setErrors([Error(\"not a crypto domain\")]);\n setState(\"failed\");\n setResolvedAddress(undefined);\n setActiveNameResolverKey(undefined);\n }\n return;\n }\n\n if (!configuredNameResolvers.length) {\n if (state !== \"failed\") {\n setErrors([Error(\"crypto domain type unsupported\")]);\n setState(\"failed\");\n setResolvedAddress(undefined);\n setActiveNameResolverKey(undefined);\n }\n return;\n }\n\n (async () => {\n try {\n setActiveNameResolverKey(\n (previousResolverKey) => previousResolverKey || configuredNameResolvers[0]?.key,\n );\n setState(\"resolving\");\n let res;\n if (cache) {\n res = await resolveAuthorAddress();\n } else {\n res = await resolveAuthorAddressNoCache();\n }\n setState(\"succeeded\");\n\n // TODO: check if resolved address is the same as author.signer.publicKey\n\n if (res !== resolvedAddress) {\n setResolvedAddress(res);\n }\n } catch (error: any) {\n setErrors((previousErrors) => [...previousErrors, error]);\n setState(\"failed\");\n setResolvedAddress(undefined);\n log.error(\"useResolvedAuthorAddress resolveAuthorAddress error\", {\n author,\n chainProviders,\n error,\n });\n }\n })();\n },\n interval,\n true,\n [author?.address, configuredNameResolvers, protocolClient],\n );\n\n const nameResolver =\n (activeNameResolverKey && configuredNameResolversByKey[activeNameResolverKey]) ||\n configuredNameResolvers[0];\n const chainProvider = nameResolver?.chainTicker\n ? chainProviders?.[nameResolver.chainTicker]\n : undefined;\n\n log(\"useResolvedAuthorAddress\", {\n author,\n state,\n errors,\n resolvedAddress,\n chainProviders,\n nameResolver,\n });\n\n return useMemo(\n () => ({\n resolvedAddress,\n chainProvider,\n nameResolver,\n state: state || initialState,\n error: errors[errors.length - 1],\n errors,\n }),\n [resolvedAddress, chainProvider, nameResolver, state, errors],\n );\n}\n"]}
|
package/dist/lib/pkc-compat.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { PkcResolveAuthorName, PkcResolveAuthorNameOptions } from "./pkc-types.js";
|
|
1
2
|
export declare const getProtocolClient: (account: any) => any;
|
|
2
3
|
export declare const getProtocolOptions: (account: any) => any;
|
|
3
4
|
export declare const getChainProviders: (account: any) => any;
|
|
@@ -14,9 +15,14 @@ export type NameResolverInfo = {
|
|
|
14
15
|
};
|
|
15
16
|
export declare const getConfiguredNameResolverInfoByKey: (account: any) => Record<string, NameResolverInfo>;
|
|
16
17
|
export declare const getMatchingNameResolvers: (account: any, address?: string) => NameResolverInfo[];
|
|
17
|
-
|
|
18
|
-
address
|
|
19
|
-
}
|
|
18
|
+
type LegacyResolveAuthorAddress = (options: {
|
|
19
|
+
address: string;
|
|
20
|
+
}) => Promise<string> | string;
|
|
21
|
+
type AuthorNameProtocolClient = {
|
|
22
|
+
resolveAuthorName?: PkcResolveAuthorName;
|
|
23
|
+
resolveAuthorAddress?: LegacyResolveAuthorAddress;
|
|
24
|
+
};
|
|
25
|
+
export declare const resolveAuthorNameWithProtocol: (protocolClient: AuthorNameProtocolClient | undefined, options: PkcResolveAuthorNameOptions) => Promise<string>;
|
|
20
26
|
export declare const normalizeOptionsForPkcClient: <T extends Record<string, any> | undefined>(options: T) => T;
|
|
21
27
|
export declare const getPkcClientOptions: <T extends Record<string, any> | undefined>(account: any, options: T) => T;
|
|
22
28
|
export declare const normalizeAccountProtocolConfig: <T extends Record<string, any> | undefined>(account: T, defaultChainProviders?: Record<string, any>) => T;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkc-compat.d.ts","sourceRoot":"","sources":["../../src/lib/pkc-compat.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pkc-compat.d.ts","sourceRoot":"","sources":["../../src/lib/pkc-compat.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,oBAAoB,EACpB,2BAA2B,EAE5B,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,iBAAiB,GAAI,SAAS,GAAG,QAAiB,CAAC;AAEhE,eAAO,MAAM,kBAAkB,GAAI,SAAS,GAAG,QAAwB,CAAC;AAExE,eAAO,MAAM,iBAAiB,GAAI,SAAS,GAAG,QAC0B,CAAC;AAEzE,eAAO,MAAM,8BAA8B,GAAI,SAAS,GAAG,QACuC,CAAC;AAEnG,eAAO,MAAM,aAAa,GAAI,gBAAgB,GAAG,QAAiD,CAAC;AAEnG,eAAO,MAAM,iBAAiB,GAAI,SAAS,GAAG,QAAiC,CAAC;AAEhF,eAAO,MAAM,8BAA8B,GAAI,gBAAgB,GAAG,QAG9D,CAAC;AAEL,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAkCF,eAAO,MAAM,kCAAkC,GAC7C,SAAS,GAAG,KACX,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAuBjC,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,SAAS,GAAG,EAAE,UAAU,MAAM,KAAG,gBAAgB,EAMzF,CAAC;AAYF,KAAK,0BAA0B,GAAG,CAAC,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAE7F,KAAK,wBAAwB,GAAG;IAC9B,iBAAiB,CAAC,EAAE,oBAAoB,CAAC;IACzC,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;CACnD,CAAC;AAcF,eAAO,MAAM,6BAA6B,GACxC,gBAAgB,wBAAwB,GAAG,SAAS,EACpD,SAAS,2BAA2B,KACnC,OAAO,CAAC,MAAM,CAYhB,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EACpF,SAAS,CAAC,KACT,CAgBF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EAC3E,SAAS,GAAG,EACZ,SAAS,CAAC,KACT,CAaF,CAAC;AAEF,eAAO,MAAM,8BAA8B,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EACtF,SAAS,CAAC,EACV,wBAAwB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC1C,CA+BF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/D,SAAS,CAAC,EACV,iBAAiB,GAAG,EACpB,kBAAkB,GAAG,KACpB,CAWF,CAAC;AAEF,cAAc,mBAAmB,CAAC"}
|
package/dist/lib/pkc-compat.js
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
1
10
|
import assert from "assert";
|
|
2
11
|
import { BsoResolver } from "@bitsocial/bso-resolver";
|
|
3
12
|
export const getProtocolClient = (account) => account === null || account === void 0 ? void 0 : account.pkc;
|
|
@@ -66,11 +75,22 @@ const buildConfiguredNameResolvers = (account, dataPath) => Object.values(getCon
|
|
|
66
75
|
provider: resolverInfo.provider,
|
|
67
76
|
dataPath,
|
|
68
77
|
}));
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
78
|
+
const normalizeResolvedAuthorName = (result) => {
|
|
79
|
+
if (typeof result === "string") {
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
assert(typeof (result === null || result === void 0 ? void 0 : result.resolvedAuthorName) === "string", "protocol client resolveAuthorName returned invalid resolvedAuthorName");
|
|
83
|
+
return result.resolvedAuthorName;
|
|
73
84
|
};
|
|
85
|
+
export const resolveAuthorNameWithProtocol = (protocolClient, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
86
|
+
const resolveAuthorName = protocolClient === null || protocolClient === void 0 ? void 0 : protocolClient.resolveAuthorName;
|
|
87
|
+
if (typeof resolveAuthorName === "function") {
|
|
88
|
+
return normalizeResolvedAuthorName(yield resolveAuthorName.call(protocolClient, options));
|
|
89
|
+
}
|
|
90
|
+
const resolveAuthorAddress = protocolClient === null || protocolClient === void 0 ? void 0 : protocolClient.resolveAuthorAddress;
|
|
91
|
+
assert(typeof resolveAuthorAddress === "function", "protocol client resolveAuthorName/resolveAuthorAddress missing");
|
|
92
|
+
return resolveAuthorAddress.call(protocolClient, { address: options.name });
|
|
93
|
+
});
|
|
74
94
|
export const normalizeOptionsForPkcClient = (options) => {
|
|
75
95
|
if (!options) {
|
|
76
96
|
return options;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkc-compat.js","sourceRoot":"","sources":["../../src/lib/pkc-compat.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from \"assert\";\nimport { BsoResolver } from \"@bitsocial/bso-resolver\";\n\nexport const getProtocolClient = (account: any) => account?.pkc;\n\nexport const getProtocolOptions = (account: any) => account?.pkcOptions;\n\nexport const getChainProviders = (account: any) =>\n account?.chainProviders || getProtocolOptions(account)?.chainProviders;\n\nexport const getNameResolversChainProviders = (account: any) =>\n account?.nameResolversChainProviders || getProtocolOptions(account)?.nameResolversChainProviders;\n\nexport const getRpcClients = (protocolClient: any) => protocolClient?.clients?.pkcRpcClients || {};\n\nexport const getPageRpcClients = (clients: any) => clients?.pkcRpcClients || {};\n\nexport const getProtocolNameResolverClients = (protocolClient: any) =>\n protocolClient?.clients?.nameResolvers ||\n protocolClient?._clientsManager?.clients?.nameResolvers ||\n {};\n\nexport type NameResolverInfo = {\n key: string;\n nameSystem: string;\n chainTicker: string;\n provider: string;\n providerLabel: string;\n};\n\nconst isEthAliasDomain = (address?: string) =>\n typeof address === \"string\" &&\n (address.toLowerCase().endsWith(\".eth\") || address.toLowerCase().endsWith(\".bso\"));\n\nconst isSupportedBsoResolverProvider = (provider: string) =>\n provider === \"viem\" || /^(https?:\\/\\/|wss?:\\/\\/)/i.test(provider);\n\nconst getNameResolverProviderLabel = (provider: string) => {\n try {\n return new URL(provider).hostname;\n } catch (error) {\n return provider;\n }\n};\n\nconst getConfiguredEthNameResolverProviders = (account: any): string[] => {\n const nameResolverUrls = getNameResolversChainProviders(account)?.eth?.urls;\n const chainProviderUrls = getChainProviders(account)?.eth?.urls;\n const urls =\n Array.isArray(nameResolverUrls) && nameResolverUrls.length\n ? nameResolverUrls\n : chainProviderUrls;\n\n if (!Array.isArray(urls)) {\n return [];\n }\n\n return urls.filter(\n (provider): provider is string => typeof provider === \"string\" && provider.length > 0,\n );\n};\n\nexport const getConfiguredNameResolverInfoByKey = (\n account: any,\n): Record<string, NameResolverInfo> => {\n const infoByKey: Record<string, NameResolverInfo> = {};\n\n for (const provider of getConfiguredEthNameResolverProviders(account)) {\n if (!isSupportedBsoResolverProvider(provider)) {\n continue;\n }\n\n const providerLabel = getNameResolverProviderLabel(provider);\n const key = `eth-${providerLabel}`;\n\n if (!infoByKey[key]) {\n infoByKey[key] = {\n key,\n nameSystem: \"eth\",\n chainTicker: \"eth\",\n provider,\n providerLabel,\n };\n }\n }\n\n return infoByKey;\n};\n\nexport const getMatchingNameResolvers = (account: any, address?: string): NameResolverInfo[] => {\n if (!isEthAliasDomain(address)) {\n return [];\n }\n\n return Object.values(getConfiguredNameResolverInfoByKey(account));\n};\n\nconst buildConfiguredNameResolvers = (account: any, dataPath?: string) =>\n Object.values(getConfiguredNameResolverInfoByKey(account)).map(\n (resolverInfo) =>\n new BsoResolver({\n key: resolverInfo.key,\n provider: resolverInfo.provider,\n dataPath,\n }),\n );\n\nexport const resolveAuthorNameWithProtocol = (\n protocolClient: any,\n options: { address?: string } | Record<string, any>,\n) => {\n const resolveAuthorName =\n protocolClient?.resolveAuthorAddress || protocolClient?.resolveAuthorName;\n assert(\n typeof resolveAuthorName === \"function\",\n \"protocol client resolveAuthorName/resolveAuthorAddress missing\",\n );\n return resolveAuthorName.call(protocolClient, options);\n};\n\nexport const normalizeOptionsForPkcClient = <T extends Record<string, any> | undefined>(\n options: T,\n): T => {\n if (!options) {\n return options;\n }\n\n const normalized: Record<string, any> = { ...options };\n\n if (normalized.resolveAuthorNames == null && normalized.resolveAuthorAddresses != null) {\n normalized.resolveAuthorNames = normalized.resolveAuthorAddresses;\n }\n\n delete normalized.resolveAuthorAddresses;\n delete normalized.chainProviders;\n delete normalized.nameResolversChainProviders;\n\n return normalized as T;\n};\n\nexport const getPkcClientOptions = <T extends Record<string, any> | undefined>(\n account: any,\n options: T,\n): T => {\n const normalized = normalizeOptionsForPkcClient(options);\n\n if (!normalized) {\n return normalized;\n }\n\n const nameResolvers = buildConfiguredNameResolvers(account, normalized.dataPath);\n if (nameResolvers.length) {\n normalized.nameResolvers = nameResolvers;\n }\n\n return normalized as T;\n};\n\nexport const normalizeAccountProtocolConfig = <T extends Record<string, any> | undefined>(\n account: T,\n defaultChainProviders?: Record<string, any>,\n): T => {\n if (!account) {\n return account;\n }\n\n const nextAccount: Record<string, any> = { ...account };\n const protocolOptions =\n nextAccount.pkcOptions && typeof nextAccount.pkcOptions === \"object\"\n ? { ...nextAccount.pkcOptions }\n : nextAccount.pkcOptions;\n\n const chainProviders =\n nextAccount.chainProviders || protocolOptions?.chainProviders || defaultChainProviders;\n if (chainProviders !== undefined) {\n nextAccount.chainProviders = chainProviders;\n }\n\n if (\n nextAccount.nameResolversChainProviders === undefined &&\n protocolOptions?.nameResolversChainProviders !== undefined\n ) {\n nextAccount.nameResolversChainProviders = protocolOptions.nameResolversChainProviders;\n }\n\n if (protocolOptions && typeof protocolOptions === \"object\") {\n delete protocolOptions.chainProviders;\n delete protocolOptions.nameResolversChainProviders;\n nextAccount.pkcOptions = protocolOptions;\n }\n\n return nextAccount as T;\n};\n\nexport const withProtocolAliases = <T extends Record<string, any>>(\n account: T,\n protocolClient?: any,\n protocolOptions?: any,\n): T => {\n const nextAccount: Record<string, any> = { ...account };\n\n if (protocolClient !== undefined) {\n nextAccount.pkc = protocolClient;\n }\n if (protocolOptions !== undefined) {\n nextAccount.pkcOptions = protocolOptions;\n }\n\n return nextAccount as T;\n};\n\nexport * from \"./protocol-compat\";\n"]}
|
|
1
|
+
{"version":3,"file":"pkc-compat.js","sourceRoot":"","sources":["../../src/lib/pkc-compat.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAOtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,CAAC;AAEhE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,CAAC;AAExE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAY,EAAE,EAAE,WAChD,OAAA,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,MAAI,MAAA,kBAAkB,CAAC,OAAO,CAAC,0CAAE,cAAc,CAAA,CAAA,EAAA,CAAC;AAEzE,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,OAAY,EAAE,EAAE,WAC7D,OAAA,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,2BAA2B,MAAI,MAAA,kBAAkB,CAAC,OAAO,CAAC,0CAAE,2BAA2B,CAAA,CAAA,EAAA,CAAC;AAEnG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,cAAmB,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO,0CAAE,aAAa,KAAI,EAAE,CAAA,EAAA,CAAC;AAEnG,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,KAAI,EAAE,CAAC;AAEhF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,cAAmB,EAAE,EAAE;;IACpE,OAAA,CAAA,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO,0CAAE,aAAa;SACtC,MAAA,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,eAAe,0CAAE,OAAO,0CAAE,aAAa,CAAA;QACvD,EAAE,CAAA;CAAA,CAAC;AAUL,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAE,EAAE,CAC5C,OAAO,OAAO,KAAK,QAAQ;IAC3B,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAErF,MAAM,8BAA8B,GAAG,CAAC,QAAgB,EAAE,EAAE,CAC1D,QAAQ,KAAK,MAAM,IAAI,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAEpE,MAAM,4BAA4B,GAAG,CAAC,QAAgB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,qCAAqC,GAAG,CAAC,OAAY,EAAY,EAAE;;IACvE,MAAM,gBAAgB,GAAG,MAAA,MAAA,8BAA8B,CAAC,OAAO,CAAC,0CAAE,GAAG,0CAAE,IAAI,CAAC;IAC5E,MAAM,iBAAiB,GAAG,MAAA,MAAA,iBAAiB,CAAC,OAAO,CAAC,0CAAE,GAAG,0CAAE,IAAI,CAAC;IAChE,MAAM,IAAI,GACR,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,gBAAgB,CAAC,MAAM;QACxD,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,iBAAiB,CAAC;IAExB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAChB,CAAC,QAAQ,EAAsB,EAAE,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CACtF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAChD,OAAY,EACsB,EAAE;IACpC,MAAM,SAAS,GAAqC,EAAE,CAAC;IAEvD,KAAK,MAAM,QAAQ,IAAI,qCAAqC,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,SAAS;QACX,CAAC;QAED,MAAM,aAAa,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAG,OAAO,aAAa,EAAE,CAAC;QAEnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,SAAS,CAAC,GAAG,CAAC,GAAG;gBACf,GAAG;gBACH,UAAU,EAAE,KAAK;gBACjB,WAAW,EAAE,KAAK;gBAClB,QAAQ;gBACR,aAAa;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,OAAY,EAAE,OAAgB,EAAsB,EAAE;IAC7F,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,kCAAkC,CAAC,OAAO,CAAC,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,MAAM,4BAA4B,GAAG,CAAC,OAAY,EAAE,QAAiB,EAAE,EAAE,CACvE,MAAM,CAAC,MAAM,CAAC,kCAAkC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAC5D,CAAC,YAAY,EAAE,EAAE,CACf,IAAI,WAAW,CAAC;IACd,GAAG,EAAE,YAAY,CAAC,GAAG;IACrB,QAAQ,EAAE,YAAY,CAAC,QAAQ;IAC/B,QAAQ;CACT,CAAC,CACL,CAAC;AASJ,MAAM,2BAA2B,GAAG,CAAC,MAA2C,EAAU,EAAE;IAC1F,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CACJ,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,kBAAkB,CAAA,KAAK,QAAQ,EAC9C,uEAAuE,CACxE,CAAC;IACF,OAAO,MAAM,CAAC,kBAAkB,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,cAAoD,EACpD,OAAoC,EACnB,EAAE;IACnB,MAAM,iBAAiB,GAAG,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,iBAAiB,CAAC;IAC5D,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE,CAAC;QAC5C,OAAO,2BAA2B,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,oBAAoB,GAAG,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,oBAAoB,CAAC;IAClE,MAAM,CACJ,OAAO,oBAAoB,KAAK,UAAU,EAC1C,gEAAgE,CACjE,CAAC;IACF,OAAO,oBAAoB,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9E,CAAC,CAAA,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,OAAU,EACP,EAAE;IACL,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,UAAU,qBAA6B,OAAO,CAAE,CAAC;IAEvD,IAAI,UAAU,CAAC,kBAAkB,IAAI,IAAI,IAAI,UAAU,CAAC,sBAAsB,IAAI,IAAI,EAAE,CAAC;QACvF,UAAU,CAAC,kBAAkB,GAAG,UAAU,CAAC,sBAAsB,CAAC;IACpE,CAAC;IAED,OAAO,UAAU,CAAC,sBAAsB,CAAC;IACzC,OAAO,UAAU,CAAC,cAAc,CAAC;IACjC,OAAO,UAAU,CAAC,2BAA2B,CAAC;IAE9C,OAAO,UAAe,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,OAAY,EACZ,OAAU,EACP,EAAE;IACL,MAAM,UAAU,GAAG,4BAA4B,CAAC,OAAO,CAAC,CAAC;IAEzD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,aAAa,GAAG,4BAA4B,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IACjF,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACzB,UAAU,CAAC,aAAa,GAAG,aAAa,CAAC;IAC3C,CAAC;IAED,OAAO,UAAe,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC5C,OAAU,EACV,qBAA2C,EACxC,EAAE;IACL,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,WAAW,qBAA6B,OAAO,CAAE,CAAC;IACxD,MAAM,eAAe,GACnB,WAAW,CAAC,UAAU,IAAI,OAAO,WAAW,CAAC,UAAU,KAAK,QAAQ;QAClE,CAAC,mBAAM,WAAW,CAAC,UAAU,EAC7B,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC;IAE7B,MAAM,cAAc,GAClB,WAAW,CAAC,cAAc,KAAI,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,cAAc,CAAA,IAAI,qBAAqB,CAAC;IACzF,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,WAAW,CAAC,cAAc,GAAG,cAAc,CAAC;IAC9C,CAAC;IAED,IACE,WAAW,CAAC,2BAA2B,KAAK,SAAS;QACrD,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,2BAA2B,MAAK,SAAS,EAC1D,CAAC;QACD,WAAW,CAAC,2BAA2B,GAAG,eAAe,CAAC,2BAA2B,CAAC;IACxF,CAAC;IAED,IAAI,eAAe,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;QAC3D,OAAO,eAAe,CAAC,cAAc,CAAC;QACtC,OAAO,eAAe,CAAC,2BAA2B,CAAC;QACnD,WAAW,CAAC,UAAU,GAAG,eAAe,CAAC;IAC3C,CAAC;IAED,OAAO,WAAgB,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,OAAU,EACV,cAAoB,EACpB,eAAqB,EAClB,EAAE;IACL,MAAM,WAAW,qBAA6B,OAAO,CAAE,CAAC;IAExD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,WAAW,CAAC,GAAG,GAAG,cAAc,CAAC;IACnC,CAAC;IACD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,WAAW,CAAC,UAAU,GAAG,eAAe,CAAC;IAC3C,CAAC;IAED,OAAO,WAAgB,CAAC;AAC1B,CAAC,CAAC;AAEF,cAAc,mBAAmB,CAAC","sourcesContent":["import assert from \"assert\";\nimport { BsoResolver } from \"@bitsocial/bso-resolver\";\nimport type {\n PkcResolveAuthorName,\n PkcResolveAuthorNameOptions,\n PkcResolveAuthorNameResult,\n} from \"./pkc-types\";\n\nexport const getProtocolClient = (account: any) => account?.pkc;\n\nexport const getProtocolOptions = (account: any) => account?.pkcOptions;\n\nexport const getChainProviders = (account: any) =>\n account?.chainProviders || getProtocolOptions(account)?.chainProviders;\n\nexport const getNameResolversChainProviders = (account: any) =>\n account?.nameResolversChainProviders || getProtocolOptions(account)?.nameResolversChainProviders;\n\nexport const getRpcClients = (protocolClient: any) => protocolClient?.clients?.pkcRpcClients || {};\n\nexport const getPageRpcClients = (clients: any) => clients?.pkcRpcClients || {};\n\nexport const getProtocolNameResolverClients = (protocolClient: any) =>\n protocolClient?.clients?.nameResolvers ||\n protocolClient?._clientsManager?.clients?.nameResolvers ||\n {};\n\nexport type NameResolverInfo = {\n key: string;\n nameSystem: string;\n chainTicker: string;\n provider: string;\n providerLabel: string;\n};\n\nconst isEthAliasDomain = (address?: string) =>\n typeof address === \"string\" &&\n (address.toLowerCase().endsWith(\".eth\") || address.toLowerCase().endsWith(\".bso\"));\n\nconst isSupportedBsoResolverProvider = (provider: string) =>\n provider === \"viem\" || /^(https?:\\/\\/|wss?:\\/\\/)/i.test(provider);\n\nconst getNameResolverProviderLabel = (provider: string) => {\n try {\n return new URL(provider).hostname;\n } catch (error) {\n return provider;\n }\n};\n\nconst getConfiguredEthNameResolverProviders = (account: any): string[] => {\n const nameResolverUrls = getNameResolversChainProviders(account)?.eth?.urls;\n const chainProviderUrls = getChainProviders(account)?.eth?.urls;\n const urls =\n Array.isArray(nameResolverUrls) && nameResolverUrls.length\n ? nameResolverUrls\n : chainProviderUrls;\n\n if (!Array.isArray(urls)) {\n return [];\n }\n\n return urls.filter(\n (provider): provider is string => typeof provider === \"string\" && provider.length > 0,\n );\n};\n\nexport const getConfiguredNameResolverInfoByKey = (\n account: any,\n): Record<string, NameResolverInfo> => {\n const infoByKey: Record<string, NameResolverInfo> = {};\n\n for (const provider of getConfiguredEthNameResolverProviders(account)) {\n if (!isSupportedBsoResolverProvider(provider)) {\n continue;\n }\n\n const providerLabel = getNameResolverProviderLabel(provider);\n const key = `eth-${providerLabel}`;\n\n if (!infoByKey[key]) {\n infoByKey[key] = {\n key,\n nameSystem: \"eth\",\n chainTicker: \"eth\",\n provider,\n providerLabel,\n };\n }\n }\n\n return infoByKey;\n};\n\nexport const getMatchingNameResolvers = (account: any, address?: string): NameResolverInfo[] => {\n if (!isEthAliasDomain(address)) {\n return [];\n }\n\n return Object.values(getConfiguredNameResolverInfoByKey(account));\n};\n\nconst buildConfiguredNameResolvers = (account: any, dataPath?: string) =>\n Object.values(getConfiguredNameResolverInfoByKey(account)).map(\n (resolverInfo) =>\n new BsoResolver({\n key: resolverInfo.key,\n provider: resolverInfo.provider,\n dataPath,\n }),\n );\n\ntype LegacyResolveAuthorAddress = (options: { address: string }) => Promise<string> | string;\n\ntype AuthorNameProtocolClient = {\n resolveAuthorName?: PkcResolveAuthorName;\n resolveAuthorAddress?: LegacyResolveAuthorAddress;\n};\n\nconst normalizeResolvedAuthorName = (result: PkcResolveAuthorNameResult | string): string => {\n if (typeof result === \"string\") {\n return result;\n }\n\n assert(\n typeof result?.resolvedAuthorName === \"string\",\n \"protocol client resolveAuthorName returned invalid resolvedAuthorName\",\n );\n return result.resolvedAuthorName;\n};\n\nexport const resolveAuthorNameWithProtocol = async (\n protocolClient: AuthorNameProtocolClient | undefined,\n options: PkcResolveAuthorNameOptions,\n): Promise<string> => {\n const resolveAuthorName = protocolClient?.resolveAuthorName;\n if (typeof resolveAuthorName === \"function\") {\n return normalizeResolvedAuthorName(await resolveAuthorName.call(protocolClient, options));\n }\n\n const resolveAuthorAddress = protocolClient?.resolveAuthorAddress;\n assert(\n typeof resolveAuthorAddress === \"function\",\n \"protocol client resolveAuthorName/resolveAuthorAddress missing\",\n );\n return resolveAuthorAddress.call(protocolClient, { address: options.name });\n};\n\nexport const normalizeOptionsForPkcClient = <T extends Record<string, any> | undefined>(\n options: T,\n): T => {\n if (!options) {\n return options;\n }\n\n const normalized: Record<string, any> = { ...options };\n\n if (normalized.resolveAuthorNames == null && normalized.resolveAuthorAddresses != null) {\n normalized.resolveAuthorNames = normalized.resolveAuthorAddresses;\n }\n\n delete normalized.resolveAuthorAddresses;\n delete normalized.chainProviders;\n delete normalized.nameResolversChainProviders;\n\n return normalized as T;\n};\n\nexport const getPkcClientOptions = <T extends Record<string, any> | undefined>(\n account: any,\n options: T,\n): T => {\n const normalized = normalizeOptionsForPkcClient(options);\n\n if (!normalized) {\n return normalized;\n }\n\n const nameResolvers = buildConfiguredNameResolvers(account, normalized.dataPath);\n if (nameResolvers.length) {\n normalized.nameResolvers = nameResolvers;\n }\n\n return normalized as T;\n};\n\nexport const normalizeAccountProtocolConfig = <T extends Record<string, any> | undefined>(\n account: T,\n defaultChainProviders?: Record<string, any>,\n): T => {\n if (!account) {\n return account;\n }\n\n const nextAccount: Record<string, any> = { ...account };\n const protocolOptions =\n nextAccount.pkcOptions && typeof nextAccount.pkcOptions === \"object\"\n ? { ...nextAccount.pkcOptions }\n : nextAccount.pkcOptions;\n\n const chainProviders =\n nextAccount.chainProviders || protocolOptions?.chainProviders || defaultChainProviders;\n if (chainProviders !== undefined) {\n nextAccount.chainProviders = chainProviders;\n }\n\n if (\n nextAccount.nameResolversChainProviders === undefined &&\n protocolOptions?.nameResolversChainProviders !== undefined\n ) {\n nextAccount.nameResolversChainProviders = protocolOptions.nameResolversChainProviders;\n }\n\n if (protocolOptions && typeof protocolOptions === \"object\") {\n delete protocolOptions.chainProviders;\n delete protocolOptions.nameResolversChainProviders;\n nextAccount.pkcOptions = protocolOptions;\n }\n\n return nextAccount as T;\n};\n\nexport const withProtocolAliases = <T extends Record<string, any>>(\n account: T,\n protocolClient?: any,\n protocolOptions?: any,\n): T => {\n const nextAccount: Record<string, any> = { ...account };\n\n if (protocolClient !== undefined) {\n nextAccount.pkc = protocolClient;\n }\n if (protocolOptions !== undefined) {\n nextAccount.pkcOptions = protocolOptions;\n }\n\n return nextAccount as T;\n};\n\nexport * from \"./protocol-compat\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkc-js-mock-content.d.ts","sourceRoot":"","sources":["../../../src/lib/pkc-js/pkc-js-mock-content.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pkc-js-mock-content.d.ts","sourceRoot":"","sources":["../../../src/lib/pkc-js/pkc-js-mock-content.ts"],"names":[],"mappings":"AAy+CA,QAAA,MAAM,SAAS,EAAE,GAEhB,CAAC;AAeF,eAAe,SAAS,CAAC"}
|
|
@@ -747,7 +747,8 @@ class PKC extends EventEmitter {
|
|
|
747
747
|
}
|
|
748
748
|
resolveAuthorName(options) {
|
|
749
749
|
return __awaiter(this, void 0, void 0, function* () {
|
|
750
|
-
|
|
750
|
+
const resolvedAuthorName = yield this.resolveAuthorAddress({ address: options.name });
|
|
751
|
+
return { resolvedAuthorName };
|
|
751
752
|
});
|
|
752
753
|
}
|
|
753
754
|
createCommunity(createCommunityOptions) {
|