@bitsocial/bitsocial-react-hooks 0.1.0 → 0.1.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"pkc-js-mock-content.js","sourceRoot":"","sources":["../../../src/lib/pkc-js/pkc-js-mock-content.ts"],"names":[],"mappings":"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","sourcesContent":["import markdownExample from \"./fixtures/markdown-example\";\nimport EventEmitter from \"events\";\nimport assert from \"assert\";\nimport { sha256 } from \"multiformats/hashes/sha2\";\nimport { fromString as uint8ArrayFromString } from \"uint8arrays/from-string\";\nimport { toString as uint8ArrayToString } from \"uint8arrays/to-string\";\n\n// changeable with env variable so the frontend can test with different latencies\nconst doubleMedia = Boolean(process.env.REACT_APP_BITSOCIAL_REACT_HOOKS_MOCK_CONTENT_DOUBLE_MEDIA);\nconst loadingTime = Number(\n process.env.REACT_APP_BITSOCIAL_REACT_HOOKS_MOCK_CONTENT_LOADING_TIME || 100,\n);\nconst simulateLoadingTime = () => new Promise((r) => setTimeout(r, loadingTime));\nconst NOW = 1679800000;\nconst DAY = 60 * 60 * 24;\n\n// TODO: should delete this eventually to reduce npm package size\nlet captchaImageBase64 =\n \"iVBORw0KGgoAAAANSUhEUgAAAJYAAAAyCAMAAACJUtIoAAAAY1BMVEX////y8vLm5ub39/fr7Ozf39/a29u/6c256MjV8N7v+fL0+/bU1dXO7tnp9+7e8+TJ7NTOzs7E69Gt5L+I26ag4bfk9en3/fmS3Kyo4rx42J2Z37LI38/AwMDR5tip1Li+1cUdWDCzAAAEkElEQVRYw+1Y6ZKjIBBuGuTyPqKZHLP7/k+5KrhIUEwms1X7Y76pMYVg23x9IvzgZfQN/I/QXavhP0SXyh6+AdQbEYS3UJ1TkC/zlbDxEtOD7Q8JnQRMFxYzooL0A46APhlZEizw71A2X+kyu5pBHC8JMUJ3ITqpu0O6GPqbRU8l3CM1CdnCjC0a8Yil80pdLinEMXBc5BMCuwaMUejYimzHoZSgzzJ90oaY8HCW7BmD0ug9QmAXxWlULW9yM+IbgqyHUjJJsuZYyWZu6xEwc3keaqTqCoUJx5puCx1vo1GAWPUf1GI8CRhk6IZZQM8RdCu6HiBvlgCCjaetWhZYo28JkvmvpBO/iD5bNLBFHPnsW1oq7mQGoGSlosdqYB+bARiDb4H6NRiZ6AkM+SdG8Vf9BckXK6RQxsVrStF3etxx5Vf8BdGLlBfQS233xXx6SODRHm9oh6HeSLcyScJejIAmn0mgFMoEvWISS+wZcT8ecPpngVrInmPMLdGymKvSubv9TVLM5gVzY8ObOVt+aIJe0kRqdHPp5wVDUveIyRVQFvKTgI1rV6LjIIDJlCsy3IoXDiEyElUrI7UbpbI05jRVjK2oPwJmWcLgzk0W3u/Jnt8p8UplMZLGs0DaEdgcLEiMX3tlHHcKSHQeWIZr71aikfWdvdOoIkdMVtGM0QxG79v2rDPf96vLZ2j5/c33Hyp4EyO46UbJhulIzR55JOSv5zC27DftVFvs2/yxAKVdc833wps9MJBs+A4NWk/3GJ34tQ91AyhRPHeoYAnvAPKT3qE2XpFqujVh5lzcWSHXG7KIYo9qXfTUvqU7mWMPSW3UigO5YzXlk4LPKKYrKcWlVRrKFg4RngQyAnEkuC6opqDFFUuVEGriSKoiF+KSD48+ovTDzr36QP1WarclQPBhFbMFRxt9zfaGUohKr6spVB/NeK9fc9OdWzW4Vsz3SqSmPfsK+NRcm/iXp/EX61FO34im91Sfr+3E4OcvISxJjJ3Up7z+FcXhDYS009+zKZWsTnnye6SkBA/WrfL5yjiAzsW4KAX4uAWd29tAuiQDnH2saNP8apzJZEzqKukp78tz5XVCfSVkdzOLLHnBoeor4HSdqKpWXiq918SneXv+NQStwulyFv2R+GNEtkMR2ip1mShoE5DMqcjDR6mbk5B58RBcizHCCvlqX0ZwDLWT1IAJCfdpKxglj2oZ32ukKNdFp1DDs0ffY5QSegW0RrZLMIRqWfGlkJVeeC26czMNCI00Wc5PWRL7mpCezS2vC6Cx7VVnWawdUEqFprjz26l85qOKVSvqYH45DuMrnKG31q+Vn0I2o6YdRxi2zjCIkQO0I9FbpfX+p6wQDGcy9eB9nmCQKgmncpee0KoB8LhvHuhO2xM6Dnd32ms+uIS9xp0cbpvgYfBiQDh/KK585TdkWSSr6qpgA/SehQY8BllUQePfPFjACa53SO7rjo5YCqoKoBgng+xHMoQvIJtOJJMkNPI43fIGut0H0toOmJJLQDF4C+6d098XwZcn+9ZmsO9SC96Bc5TUSvvBD/49/gDEMCEP8TccuAAAAABJRU5ErkJggg==\";\n\nconst commentTitles = [\n `Own a Piece of Digital History- Winamp Is Now Selling Its Original 1.0 Skin as an NFT, Iconic Player “was the go-to music player everybody was using at the beginning of the history of digital music and was instrumental in helping the .mp3 become mainstream”.`,\n 'Buyer of \"Pepe the Frog\" NFT files US$500,000 lawsuit after creator releases identical NFTs for free',\n \"$5,100,000,000 Bitcoin Whale enters massive crypto accumulation mode\",\n \"Two Big Developments in Brave Browser\",\n \"🤡\",\n];\n\nconst commentContents = [\n `First of all, the sentiment in this sub concerning moons seems very __polarized__. Some people think they are a genius idea and others think they are making this sub this sub worse because of “moon farming.” which camp are you in? \n\nSecond, how/where can you sell them. And third c/eEY1MhxPNyvt, how many upvotes=one moon, some people have so many when I’m sitting here at 17.\n\n**Personally** I think Reddit is ahead of the _curve_, in a couple years I could easily see every social media platform incorporating their own coin into their interface. \n\nThink about it; it costs the company next to nothing, encourages users to spend more time and be more active on the platform, and capitalizes on their existing user base, skipping any need for marketing. \n\nu/BPNgj2dfHSn8 From the companies point of view it seems like a no brainer. p/reddit-screenshots.eth/c/QmeEY1MhxPNyvt5i8GVxZwqi11yweKuYFWyk1ST4GTKRnm\n\nCan people think of issues with this approach? For either the company or the consumer, because besides increased levels of spamming I don’t see much downside.`,\n \"What kind of messes up world is this. *Even* if they stop you, they would need some sort of seed phrase or private key to your account in order to get the funds.\",\n \"🤡\",\n `So real fast u/estebanabaroa.eth/c/QmeEY1MhxPNyvt5i8GVxZwqi11yweKuYFWyk1ST4GTKRnm, I'm not a legal person and this isn't legal advice. I'm just sharing what I found out. What is civil forfeiture In the USA basically the cops can take things if the suspect it could of been used in a crime (any crime even if there is no crime going on now or in the area and any evidence). Lets put it this way, in CA there is pot shops that used armor trucks to move their money (which many stores use). Pot shops in CA is legal, but the cops on a regular bases stopped the truck for stupid things like using the turn signal too early. They use civil forfeiture to take the cash. From there in all cases they send the stuff to the gov, and the gov gives the local cops a major amount of the value of the assets. Note in some states this is illegal like NC. But I seen in the past years where federal wants to cause a loophole using DEA to force cops by law to do it. But note if you travel through states with this being legal. Note this is actually is a huge problem in the USA. Even more for unbanked people and homeless. ALL lawyers and all people I talked to in legal/law thinks this is the ultimate forum of government theft, and this should be federally illegal. That the system is proven to be extremely abused just for the reason of bonuses and the ones taking the money keep a ton of it after it went through the system. My question Can the gov force you to unlock your phone in a civil forfeiture? This giving them access to your hot wallets. Can the gov take your crypto in a civil forfeiture since it is on the blockchain? It should be noted that with 2, there is no clear answer to this. Basically it came down to it has to be tested in courts or a law maker needs to make laws clearing this up. NOTE FOR ANY LAW MAKERS THAT WANT TO HELP WHO THEY REPRESENT, AND WANT TO MAKE A BILL TO HELP THEM GET REELECTED. FIX THIS What I found out So can they take your phone or hardware wallet? The answer to this seems to be yes. Can they force you to unlock your phone? The answer to this seems to be not without a warrant. Can they brute force, hack, or do whatever to get in after they taken the device in a civil forfeiture? The answer seems to be yes. Basically, the idea is that when this happens it now becomes gov property. And if the gov wants to break in their own property or wipe their end. There isn't jack you can do to stop them expect remote format the device (seriously look into this. You can do this with most phones.) Are they likely to break into your phone/hardware wallet if they take it? While there isn't really evidence of this happening yet. The likely if it was to happen then yes. The question is, do they know of a 0 day which will allow them to get in, and that answer to this is maybe. Like I've seen videos of people recovering their funds from their hardware wallet through taking apart something like a ledger, hooking up to given things, and doing a few other things. So lets not rule out they will have some way of doing just this. Because it is likely if they take one, then they most likely are taking as many as they see. Can the gov use civil forfeiture to get the crypto itself without going after the phone/hardware wallet? Chances are is no. Like they can't demand for the given crypto since they have no way of knowing the wallet address unless if you show them or after they taken the device. They have to prove in court they suspected x was used in some way with a crime. Not knowing the address prior to rules this out. So basically, don't talk to the legal people without a lawyer and don't give them more info than needed. Note: if they use the law to take the phone or hardware wallet, then they can make a case that maybe the crypto is part of the taking since you have direct control of the crypto using your phone. Therefore the crypto could've also been used in crime in some way in the same way the phone could've been. Basically, it is the argument of can they take the truck and the music CD inside thing. How to handle the situation? Don't talk to the cops about anything you don't have to. Note the laws, but in general if they ask you to get out of the car ask if it is a command. If they say yes, then get out. If they asked for documents, then give it (don't be an idiot, just give it to them even the technical bits you don't need to. You will just PO the cop which can cause problems.) Ask them if you can leave, and that you would like to leave. This indicates you aren't volunteering your stay, and in many states they have to be reasonable about the length of the stop and many cases they won't have enough time to do something stupid. When asked questions you don't have to answer say a lawyer friend told you to not talk to the cops while being questioned or at a stop. Never agree to them searching your car or you without a warrant. Never argue with them on the side of the road, the day for that is in court (meaning if they decided to arrest you, then let them and then wait to fight it in court since it is likely you can get a big paycheck if done right). Never be open about what you have. If they take the item using civil forfeiture, then it is likely any cash will be gone forever since some of these court cases can last for years. But you can and should fight them in court because there is a growing amount of cases which is forcing judges and others to look more into this and treat it more serious. If you can't afford a lawyer to fight, then there is a few groups that you can call depending on if you have military background, extreme poverty, and so on. But to be blunt, the best way to fight this risk is by getting law makers to make civil forfeiture illegal. BTW for people visiting the USA, you could face this problem.`,\n markdownExample,\n];\n\nconst commentLinks = [\n \"https://fortune.com/2022/03/16/bitcoin-200k-price-prediction-crypto-outlook/\",\n \"https://finance.yahoo.com/news/c2x-announces-25-million-funding-120000728.html\",\n \"https://finance.yahoo.com/news/adopting-crypto-legal-tender-signify-101309571.html\",\n \"https://x.com/pkcprotocol/status/1632113706015309825\",\n \"https://www.youtube.com/watch?v=jfKfPfyJRdk\",\n];\n\nconst mediaLinks = [\n \"https://upload.wikimedia.org/wikipedia/en/transcoded/b/bd/Exorcist_angiogram_scene.webm/Exorcist_angiogram_scene.webm.480p.vp9.webm\",\n \"https://upload.wikimedia.org/wikipedia/en/f/fa/2001_space_travel.ogv\",\n \"https://upload.wikimedia.org/wikipedia/en/e/e1/Don%27t_Look_Now_love_scene_.ogg\",\n \"https://upload.wikimedia.org/wikipedia/en/8/8a/Ellen_comes_out_airport.mp3\",\n \"https://upload.wikimedia.org/wikipedia/en/b/bf/Dave_Niehaus_Winning_Call_1995_AL_Division_Series.ogg\",\n];\n\nconst communityTitles = [\n \"The Ethereum investment community\",\n \"Cryptography news and discussions\",\n \"Memes\",\n \"🤡\",\n];\n\nconst communityDescriptions = [\n \"Welcome to /r/EthTrader, a 100% community driven sub. Here you can discuss Ethereum news, memes, investing, trading, miscellaneous market-related subjects and other relevant technology.\",\n \"Cryptography is the art of creating mathematical assurances for who can do what with data, including but not limited to encryption of messages such that only the key-holder can read it. Cryptography lives at an intersection of math and computer science. This subreddit covers the theory and practice of modern and *strong* cryptography, and it is a technical subreddit focused on the algorithms and implementations of cryptography.\",\n \"Memes\",\n \"🤡\",\n];\n\nconst urlSuffixes = [\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"#\",\n \"#/\",\n \"#?\",\n \"?\",\n \"?query\",\n \"#hash-value\",\n \"#hash-value?\",\n \"#hash-value?query=string\",\n \"#hash-value?query=string&yes=1\",\n \"?query=string\",\n \"?query=string&yes=1\",\n];\n\nconst firstNames = [\n \"james\",\n \"robert\",\n \"john\",\n \"michael\",\n \"william\",\n \"david\",\n \"richard\",\n \"joseph\",\n \"thomas\",\n \"charles\",\n \"christopher\",\n \"daniel\",\n \"matthew\",\n \"anthony\",\n \"mark\",\n \"donald\",\n \"steven\",\n \"paul\",\n \"andrew\",\n \"joshua\",\n];\n\nconst displayNames = [\n \"COVERCADIGMENTS!\",\n \"Everco__Evidehovi\",\n \"fermind-flashyte\",\n \"FlirtyraForeguiGoldhil_\",\n \"Hanmiddie Headro Herdman\",\n \"Hurigher Irongmug\",\n \"Islandvi Jumbinte\",\n \"Lackapac Lorvalow\",\n \"MarsEdgyMedprin\",\n \"parispn!!!\",\n \"personna\",\n \" popic😃\",\n \"Riderix\\n\",\n \"Romantec__\",\n \"Sellakuk23\",\n \"--TickoAim2$\",\n \"Transia4\\t\",\n \"Trippah+512\",\n \"😃\",\n \"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh\",\n \"aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa\",\n];\n\nconst postFlairs = [\n { text: \"Analysis\" },\n { text: \"ADVICE\", textColor: \"#000000\", backgroundColor: \"#252850\" },\n { text: \"comedy\", textColor: \"#FFFFFF\", backgroundColor: \"#23282B\" },\n { text: \"General News\" },\n {\n text: \"Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam!!!!!!!!!!!!!!!!!!!!!!\",\n textColor: \"#FFFFFF\",\n backgroundColor: \"#5B3A29\",\n },\n { text: \"education\", textColor: \"#000000\", backgroundColor: \"#4A192C\" },\n { text: \"MARKETS\", backgroundColor: \"#F8F32B\" },\n { text: \"IMPORTANT!!!\", backgroundColor: \"#C35831\" },\n {\n text: \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\",\n backgroundColor: \"#AF2B1E\",\n },\n { text: \"MOON 🌕\", backgroundColor: \"#D36E70\" },\n { text: \"video\", backgroundColor: \"#924E7D\" },\n];\n\nconst authorFlairs = [\n { text: \"SCAMMER\" },\n { text: \"Medical Doctor\", textColor: \"#000000\", backgroundColor: \"#252850\" },\n { text: \"pro\", textColor: \"#FFFFFF\", backgroundColor: \"#23282B\" },\n {\n text: \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\",\n },\n { text: \"Probably a scammer\", textColor: \"#FFFFFF\", backgroundColor: \"#5B3A29\" },\n { text: \"loser\", textColor: \"#000000\", backgroundColor: \"#4A192C\" },\n { text: \"WINNER\", backgroundColor: \"#F8F32B\" },\n { text: \"IMPORTANT VIP!!!\", backgroundColor: \"#C35831\" },\n {\n text: \"BE CAREFUL OF THIS MAN BE CAREFUL OF THIS MAN BE CAREFUL OF THIS MAN BE CAREFUL OF THIS MAN BE CAREFUL OF THIS MAN BE CAREFUL OF THIS MAN BE CAREFUL OF THIS MAN BE CAREFUL OF THIS MAN BE CAREFUL OF THIS MAN BE CAREFUL OF THIS MAN!!!!!!!!!!!!!!!!!!\",\n backgroundColor: \"#AF2B1E\",\n },\n { text: \"🌕\", backgroundColor: \"#D36E70\" },\n { text: \"creator\", backgroundColor: \"#924E7D\" },\n];\n\nconst reasons = [\n \"SPAM\",\n \"this is spam\",\n \"repeated spamming\",\n \"User is a known scammer\",\n \"NSFW\",\n \"SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM\",\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\",\n];\n\nconst getCidHash = async (string: string) => {\n assert(string && typeof string === \"string\", `can't getCidHash '${string} not a string'`);\n const seed = await getNumberHash(string);\n const cid = await seedToCid(seed);\n return cid;\n};\n\nconst seedToCid = async (seed: number) => {\n assert(\n typeof seed === \"number\" && !Number.isNaN(seed) && seed >= 0,\n `seedToCid seed argument must be positive number not '${seed}'`,\n );\n let base10Seed = String(seed);\n\n // seed base10 string is usually too small for a cid, make it longer\n // the cid is usually around 46 chars in base58, so 80 chars in base10\n const base10SeedLength = 80;\n while (base10Seed.length < base10SeedLength) {\n base10Seed += base10Seed;\n }\n base10Seed = base10Seed.substring(0, base10SeedLength);\n\n const uint8Array = uint8ArrayFromString(base10Seed, \"base10\");\n const base58Cid = uint8ArrayToString(uint8Array, \"base58btc\");\n return base58Cid;\n};\n\n// fake hash with lots of collision for speed\nconst getNumberHash = async (string: string) => {\n assert(string && typeof string === \"string\", `can't getNumberHash '${string} not a string'`);\n let hash = 0;\n for (let i = 0; i < string.length; i++) {\n const char = string.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash &= hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n};\n\nclass _SeedIncrementer {\n seed: number;\n numbers: number[];\n index = 0;\n constructor(seed: number) {\n assert(\n typeof seed === \"number\" && !Number.isNaN(seed) && seed >= 0,\n `getNumberBetween seed argument must be positive number not '${seed}'`,\n );\n this.seed = seed;\n this.numbers = String(seed)\n .split(\"\")\n .map((number) => Number(number));\n }\n increment() {\n this.index++;\n const divider = this.numbers[this.index % this.numbers.length] + this.index;\n return Math.round(this.seed / divider);\n }\n}\nconst SeedIncrementer = (seed: number) => new _SeedIncrementer(seed);\n\nconst getNumberBetween = async (min: number, max: number, seed: number) => {\n assert(\n typeof seed === \"number\" && !Number.isNaN(seed) && seed >= 0,\n `getNumberBetween seed argument must be positive number not '${seed}'`,\n );\n\n // if the string is exponent, remove chars\n if (String(seed).match(/[^0-9]/)) {\n throw Error(`getNumberBetween seed too large '${seed}'`);\n }\n\n const number = Number(\"0.\" + seed);\n return Math.floor(number * (max - min + 1) + min);\n};\n\nconst getArrayItem = async (array: any[], seed: number) => {\n // const index = await getNumberBetween(0, array.length - 1, seed)\n const index = seed % array.length;\n return array[index];\n};\n\nconst getImageUrl = async (_seed: number) => {\n assert(\n typeof _seed === \"number\" && !Number.isNaN(_seed) && _seed >= 0,\n `getImageUrl seed argument must be positive number not '${_seed}'`,\n );\n const seed = SeedIncrementer(_seed);\n const jpg = `https://picsum.photos/seed/${await getNumberBetween(10, 2000, seed.increment())}/${await getNumberBetween(\n 10,\n 2000,\n seed.increment(),\n )}/${await getNumberBetween(10, 2000, seed.increment())}.jpg`;\n\n const webp = `https://picsum.photos/seed/${await getNumberBetween(10, 2000, seed.increment())}/${await getNumberBetween(\n 10,\n 2000,\n seed.increment(),\n )}/${await getNumberBetween(10, 2000, seed.increment())}.webp`;\n\n const imageUrls = [\n // jpg & webp\n jpg,\n jpg,\n webp,\n webp,\n \"https://samplelib.com/lib/preview/png/sample-bumblebee-400x300.png\", // png\n \"https://c.tenor.com/WHs8ooxWJUIAAAAM/really-great-example-right-here-echo-gaming.gif\", // gif\n \"https://filesamples.com/samples/image/bmp/sample_640%C3%97426.bmp\", // bmp\n \"https://brokensite.xyz/images/dog.png\", // broken image\n \"https://brokensite.xyz/images/dog.jpeg\", // broken jpeg\n ];\n const imageUrl =\n (await getArrayItem(imageUrls, seed.increment())) +\n (await getArrayItem(urlSuffixes, seed.increment()));\n return imageUrl;\n};\n\nconst getAuthorAddress = async (_seed: number) => {\n assert(\n typeof _seed === \"number\" && !Number.isNaN(_seed) && _seed >= 0,\n `getAuthorAddress seed argument must be positive number not '${_seed}'`,\n );\n const seed = SeedIncrementer(_seed);\n const hasEns = await getArrayItem([true, false, false, false], seed.increment());\n if (hasEns) {\n const text = await getArrayItem([...firstNames, ...displayNames], seed.increment());\n return (text.toLowerCase().replace(/[^a-z0-9]/g, \"\") || \"john\") + \".eth\";\n } else {\n const address = await seedToCid(seed.increment());\n return address;\n }\n};\n\nconst getAuthor = async (seed: string) => {\n const authorNumberSeed = SeedIncrementer(await getNumberHash(seed));\n const author: any = {\n address: await getAuthorAddress(authorNumberSeed.increment()),\n };\n author.shortAddress = author.address.endsWith(\".eth\")\n ? author.address\n : author.address.substring(8, 20);\n const hasDisplayName = await getArrayItem(\n [true, true, true, false],\n authorNumberSeed.increment(),\n );\n if (hasDisplayName) {\n author.displayName = await getArrayItem(displayNames, authorNumberSeed.increment());\n }\n const rareTrue = [true, false, false, false, false, false, false, false];\n const hasNftAvatar = await getArrayItem(rareTrue, authorNumberSeed.increment());\n if (hasNftAvatar) {\n author.avatar = {\n chainTicker: \"eth\",\n address: await getArrayItem(\n [\n \"0xed5af388653567af2f388e6224dc7c4b3241c544\",\n \"0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d\",\n \"0x60e4d786628fea6478f785a6d7e704777c86a7c6\",\n \"0x79fcdef22feed20eddacbb2587640e45491b757f\",\n \"0x0000000000000000000000000000000000000dead\",\n ],\n authorNumberSeed.increment(),\n ),\n index: await getNumberBetween(1, 2000, authorNumberSeed.increment()),\n };\n }\n const hasFlair = await getArrayItem(rareTrue, authorNumberSeed.increment());\n if (hasFlair) {\n author.flair = await getArrayItem(authorFlairs, authorNumberSeed.increment());\n }\n return author;\n};\n\nconst getPostContent = async (seed: string) => {\n const postNumberSeed = SeedIncrementer(await getNumberHash(seed));\n const postContent: any = {\n depth: 0,\n author: await getAuthor(String(postNumberSeed)),\n title: await getArrayItem(commentTitles, postNumberSeed.increment()),\n };\n const hasFlair = await getArrayItem([true, false, false, false], postNumberSeed.increment());\n if (hasFlair) {\n postContent.flair = await getArrayItem(postFlairs, postNumberSeed.increment());\n }\n let isLinkPost = await getArrayItem([true, false], postNumberSeed.increment());\n if (doubleMedia && !isLinkPost) {\n isLinkPost = await getArrayItem([true, false], postNumberSeed.increment());\n }\n if (isLinkPost) {\n postContent.link = await getArrayItem(commentLinks, postNumberSeed.increment());\n let linkIsImage = await getArrayItem([true, false], postNumberSeed.increment());\n if (doubleMedia && !linkIsImage) {\n linkIsImage = await getArrayItem([true, false], postNumberSeed.increment());\n }\n if (linkIsImage) {\n postContent.link = await getImageUrl(postNumberSeed.increment());\n\n // add video and audio\n const imageIsMedia = await getArrayItem(\n [true, false, false, false],\n postNumberSeed.increment(),\n );\n if (imageIsMedia) {\n postContent.link = await getArrayItem(mediaLinks, postNumberSeed.increment());\n // add at least one example of video with width and height\n if (postContent.link === mediaLinks[0]) {\n postContent.linkWidth = 852;\n postContent.linkHeight = 480;\n }\n }\n // if link is image, add width and height\n else {\n const [, linkWidth, linkHeight] = (\n postContent.link.match(/\\d+\\/\\d+\\/\\d+/)?.[0] || \"\"\n ).split(\"/\");\n postContent.linkWidth = Number(linkWidth);\n postContent.linkHeight = Number(linkHeight);\n }\n }\n const hasThumbnail = await getArrayItem([true, true, true, false], postNumberSeed.increment());\n if (!linkIsImage && hasThumbnail) {\n postContent.thumbnailUrl = await getImageUrl(postNumberSeed.increment());\n }\n }\n // else is text post\n else {\n postContent.content = await getArrayItem(commentContents, postNumberSeed.increment());\n const hasQuote = await getArrayItem([true, false, false, false], postNumberSeed.increment());\n if (hasQuote) {\n const max = 7;\n const lines = postContent.content.split(\"\\n\");\n for (const i in lines) {\n const lineIsQuote = await getArrayItem([true, false], postNumberSeed.increment());\n if (lineIsQuote) {\n lines[i] = \">\" + lines[i];\n }\n if (Number(i) > max) {\n break;\n }\n }\n postContent.content = lines.join(\"\\n\");\n }\n }\n return postContent;\n};\n\nconst getReplyContent = async (getReplyContentOptions: any, seed: string) => {\n const replyNumberSeed = SeedIncrementer(await getNumberHash(seed));\n const { depth, parentCid, postCid } = getReplyContentOptions;\n const author = await getAuthor(String(replyNumberSeed.seed));\n let content = await getArrayItem(commentContents, replyNumberSeed.increment());\n\n const hasQuote = await getArrayItem([true, false, false, false], replyNumberSeed.increment());\n if (hasQuote) {\n const max = 7;\n const lines = content.split(\"\\n\");\n for (const i in lines) {\n const lineIsQuote = await getArrayItem([true, false], replyNumberSeed.increment());\n if (lineIsQuote) {\n lines[i] = \">\" + lines[i];\n }\n if (Number(i) > max) {\n break;\n }\n }\n content = lines.join(\"\\n\");\n }\n\n const replyContent: any = { content, author, depth, parentCid, postCid };\n\n const hasLink = await getArrayItem([true, false, false, false], replyNumberSeed.increment());\n if (hasLink) {\n replyContent.link = await getArrayItem(commentLinks, replyNumberSeed.increment());\n const linkIsImage = await getArrayItem([true, false], replyNumberSeed.increment());\n if (linkIsImage) {\n replyContent.link = await getImageUrl(replyNumberSeed.increment());\n\n // add video and audio\n const imageIsMedia = await getArrayItem(\n [true, false, false, false],\n replyNumberSeed.increment(),\n );\n if (imageIsMedia) {\n replyContent.link = await getArrayItem(mediaLinks, replyNumberSeed.increment());\n }\n }\n const hasThumbnail = await getArrayItem([true, true, true, false], replyNumberSeed.increment());\n if (!linkIsImage && hasThumbnail) {\n replyContent.thumbnailUrl = await getImageUrl(replyNumberSeed.increment());\n }\n }\n\n const hasTitle = await getArrayItem(\n [true, false, false, false, false, false, false],\n replyNumberSeed.increment(),\n );\n if (hasTitle) {\n replyContent.title = await getArrayItem(commentTitles, replyNumberSeed.increment());\n }\n\n return replyContent;\n};\n\nconst getCommunityContent = async (seed: string) => {\n const communityNumberSeed = SeedIncrementer(await getNumberHash(seed));\n const community: any = {\n pubsubTopic: await seedToCid(communityNumberSeed.seed),\n };\n\n const hasChallengeTypes = await getArrayItem([true, false], communityNumberSeed.increment());\n if (hasChallengeTypes) {\n community.challengeTypes = [\"image\"];\n }\n\n const hasRoles = await getArrayItem([true, false], communityNumberSeed.increment());\n if (hasRoles) {\n community.roles = {\n [await getAuthorAddress(communityNumberSeed.increment())]: { role: \"owner\" },\n [await getAuthorAddress(communityNumberSeed.increment())]: { role: \"admin\" },\n [await getAuthorAddress(communityNumberSeed.increment())]: { role: \"moderator\" },\n [await getAuthorAddress(communityNumberSeed.increment())]: { role: \"moderator\" },\n [await getAuthorAddress(communityNumberSeed.increment())]: { role: \"moderator\" },\n [await getAuthorAddress(communityNumberSeed.increment())]: { role: \"moderator\" },\n [await getAuthorAddress(communityNumberSeed.increment())]: { role: \"moderator\" },\n [await getAuthorAddress(communityNumberSeed.increment())]: { role: \"moderator\" },\n };\n }\n\n const title = await getArrayItem(\n [undefined, ...communityTitles],\n communityNumberSeed.increment(),\n );\n if (title) {\n community.title = title;\n }\n const description = await getArrayItem(\n [undefined, ...communityDescriptions],\n communityNumberSeed.increment(),\n );\n if (description) {\n community.description = description;\n }\n\n const hasPostFlairs = await getArrayItem([true, false], communityNumberSeed.increment());\n if (hasPostFlairs) {\n community.flairs = { post: postFlairs };\n }\n const hasAuthorFlairs = await getArrayItem([true, false], communityNumberSeed.increment());\n if (hasAuthorFlairs) {\n community.flairs = { post: community.flairs?.post, author: authorFlairs };\n }\n\n const hasSuggested = await getArrayItem([true, false], communityNumberSeed.increment());\n if (hasSuggested) {\n community.suggested = {\n primaryColor: (await getArrayItem(postFlairs, communityNumberSeed.increment()))\n .backgroundColor,\n secondaryColor: (await getArrayItem(postFlairs, communityNumberSeed.increment()))\n .backgroundColor,\n avatarUrl: await getArrayItem(\n [undefined, await getImageUrl(communityNumberSeed.increment())],\n communityNumberSeed.increment(),\n ),\n bannerUrl: await getArrayItem(\n [undefined, await getImageUrl(communityNumberSeed.increment())],\n communityNumberSeed.increment(),\n ),\n backgroundUrl: await getArrayItem(\n [undefined, await getImageUrl(communityNumberSeed.increment())],\n communityNumberSeed.increment(),\n ),\n language: await getArrayItem(\n [undefined, undefined, \"en\", \"en\", \"es\", \"ru\"],\n communityNumberSeed.increment(),\n ),\n };\n }\n\n const hasFeatures = await getArrayItem([true, false], communityNumberSeed.increment());\n if (hasFeatures) {\n community.features = {\n noVideos: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noSpoilers: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noImages: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noVideoReplies: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noSpoilerReplies: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noImageReplies: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noPolls: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noCrossposts: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noUpvotes: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noDownvotes: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noAuthors: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n anonymousAuthors: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noNestedReplies: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n safeForWork: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n authorFlairs: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n requireAuthorFlairs: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n postFlairs: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n requirePostFlairs: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noMarkdownImages: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noMarkdownVideos: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n markdownImageReplies: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n markdownVideoReplies: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n };\n }\n\n const hasRules = await getArrayItem([true, false], communityNumberSeed.increment());\n if (hasRules) {\n community.rules = [\n \"no spam\",\n \"be nice\",\n \"Do not link to CNN.\",\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\",\n \"OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO \",\n ];\n }\n\n const isOnline = await getArrayItem([true, false], communityNumberSeed.increment());\n if (isOnline) {\n // updated in last 1h\n community.updatedAt =\n Math.round(Date.now() / 1000) -\n (await getNumberBetween(1, 60 * 60, communityNumberSeed.increment()));\n } else {\n // updated in last month\n community.updatedAt =\n Math.round(Date.now() / 1000) -\n (await getNumberBetween(60 * 60, 60 * 60 * 24 * 30, communityNumberSeed.increment()));\n }\n community.createdAt =\n community.updatedAt -\n (await getNumberBetween(1, 60 * 60 * 24 * 3000, communityNumberSeed.increment()));\n\n return community;\n};\n\n// for debugging slow bulk reply generation\nlet replyLoopCount = 0;\n\nconst getCommentUpdateContent = async (comment: any) => {\n const commentUpdateSeedNumber = SeedIncrementer(await getNumberHash(comment.cid));\n const upvotesPerUpdate = await getNumberBetween(1, 1000, commentUpdateSeedNumber.increment());\n const downvotesPerUpdate = await getNumberBetween(1, 1000, commentUpdateSeedNumber.increment());\n\n const commentUpdateContent: any = {};\n // simulate finding vote counts on an IPNS record\n commentUpdateContent.upvoteCount =\n typeof comment.upvoteCount === \"number\"\n ? comment.upvoteCount + upvotesPerUpdate\n : upvotesPerUpdate;\n commentUpdateContent.downvoteCount =\n typeof comment.downvoteCount === \"number\"\n ? comment.downvoteCount + downvotesPerUpdate\n : downvotesPerUpdate;\n\n // find the number of replies\n commentUpdateContent.replyCount = 0;\n const hasReplies = await getArrayItem(\n [true, false, false, false],\n commentUpdateSeedNumber.increment(),\n );\n if (hasReplies) {\n commentUpdateContent.replyCount = await getNumberBetween(\n 0,\n 30,\n commentUpdateSeedNumber.increment(),\n );\n if (comment.depth > 0) {\n commentUpdateContent.replyCount = commentUpdateContent.replyCount / (comment.depth + 1) ** 2;\n }\n if (commentUpdateContent.replyCount < 1) {\n commentUpdateContent.replyCount = 0;\n }\n commentUpdateContent.replyCount = Math.round(commentUpdateContent.replyCount);\n }\n\n // simulate finding replies from IPNS record\n commentUpdateContent.replies = new Pages({ comment });\n commentUpdateContent.replies.pages.best = { nextCid: undefined, comments: [] };\n const getReplyContentOptions = {\n depth: comment.depth + 1,\n parentCid: comment.cid,\n postCid: comment.cid,\n };\n let replyCount = commentUpdateContent.replyCount;\n const replyCids: any = new Set();\n while (replyCount-- > 0) {\n // console.log({replyLoopCount: replyLoopCount++, replyCount: commentUpdateContent.replyCount, depth: comment.depth, cid: comment.cid, index: replyCount})\n const cid = await seedToCid(await getNumberHash(comment.cid + replyCount));\n const replyContent = await getReplyContent(\n getReplyContentOptions,\n cid + \"replycontent\" + replyCount,\n );\n const reply = {\n cid,\n shortCid: cid.substring(2, 14),\n timestamp: await getNumberBetween(\n comment.timestamp,\n NOW,\n commentUpdateSeedNumber.increment(),\n ),\n ...replyContent,\n communityAddress: comment.communityAddress || \"memes.eth\",\n };\n if (replyCids.has(reply.cid)) {\n console.error(`mock content error: duplicate reply cid '${reply.cid}'`);\n }\n replyCids.add(reply.cid);\n const replyUpdateContent = await getCommentUpdateContent(reply);\n commentUpdateContent.replies.pages.best.comments.push({ ...reply, ...replyUpdateContent });\n }\n\n // if post with lots of replies, add replies pages\n if (commentUpdateContent.replyCount >= 15 && comment.depth === 0) {\n commentUpdateContent.replies.pages.best.nextCid = await seedToCid(\n await getNumberHash(comment.cid + \"bestpagecid2\"),\n );\n commentUpdateContent.replies.pageCids = {\n new: await seedToCid(await getNumberHash(comment.cid + \"newpagecid\")),\n old: await seedToCid(await getNumberHash(comment.cid + \"oldpagecid\")),\n };\n }\n\n const rareTrue = [\n true,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n ];\n\n const isSpoiler = await getArrayItem(rareTrue, commentUpdateSeedNumber.increment());\n if (isSpoiler) {\n commentUpdateContent.spoiler = true;\n }\n\n const isEdited = await getArrayItem(rareTrue, commentUpdateSeedNumber.increment());\n if (isEdited && !comment.edit) {\n commentUpdateContent.edit = {\n commentCid: comment.cid,\n timestamp: comment.timestamp + 60 * 30,\n reason: \"I wanted to know why the downvotes?\",\n author: comment.author,\n };\n commentUpdateContent.original = {\n content: comment.content,\n };\n commentUpdateContent.content = (comment.content || \"\") + \" WHY DOWNVOTES!?\";\n }\n\n const isDeleted = await getArrayItem(rareTrue, commentUpdateSeedNumber.increment());\n const isPinned = await getArrayItem(rareTrue, commentUpdateSeedNumber.increment());\n const isRemoved = await getArrayItem(rareTrue, commentUpdateSeedNumber.increment());\n const isLocked = await getArrayItem(rareTrue, commentUpdateSeedNumber.increment());\n const isPurged = await getArrayItem(rareTrue, commentUpdateSeedNumber.increment());\n\n if (isDeleted) {\n commentUpdateContent.deleted = true;\n } else if (isPinned) {\n commentUpdateContent.pinned = true;\n } else if (isRemoved) {\n commentUpdateContent.removed = true;\n const hasReason = await getArrayItem([true, false], commentUpdateSeedNumber.increment());\n if (hasReason) {\n commentUpdateContent.reason = await getArrayItem(\n reasons,\n commentUpdateSeedNumber.increment(),\n );\n }\n } else if (isLocked && comment.depth === 0) {\n commentUpdateContent.locked = true;\n const hasReason = await getArrayItem([true, false], commentUpdateSeedNumber.increment());\n if (hasReason) {\n commentUpdateContent.reason = await getArrayItem(\n reasons,\n commentUpdateSeedNumber.increment(),\n );\n }\n } else if (isPurged) {\n commentUpdateContent.purged = true;\n const hasReason = await getArrayItem([true, false], commentUpdateSeedNumber.increment());\n if (hasReason) {\n commentUpdateContent.reason = await getArrayItem(\n reasons,\n commentUpdateSeedNumber.increment(),\n );\n }\n }\n\n commentUpdateContent.updatedAt = Math.round(Date.now() / 1000);\n\n return commentUpdateContent;\n};\n\nconst pageCommentCids: any = new Set();\nconst getCommentsPage = async (pageCid: string, communityOrComment: any) => {\n const communityAddress = communityOrComment.address || communityOrComment.communityAddress;\n const commentsPageSeedNumber = SeedIncrementer(await getNumberHash(pageCid));\n const page: any = {\n nextCid: await seedToCid(commentsPageSeedNumber.increment()),\n comments: [],\n };\n const postCount = 100;\n let index = 0;\n const pkc = new PKC();\n while (index++ < postCount) {\n const cid = await seedToCid(await getNumberHash(pageCid + index));\n // debug message\n if (pageCommentCids.has(cid)) {\n console.error(`mock content error: duplicate page comment cid '${cid}'`);\n }\n pageCommentCids.add(cid);\n // comment = {...comment, ...(await getPostContent(comment.cid)), ...(await getCommentUpdateContent(comment))}\n const comment: any = await pkc.getComment({ cid });\n comment.communityAddress = communityAddress;\n const commentUpdateContent: any = await getCommentUpdateContent(comment);\n for (const prop in commentUpdateContent) {\n comment[prop] = commentUpdateContent[prop];\n }\n page.comments.push(comment);\n }\n return page;\n};\n\n// array of communities probably created by the user\nconst createdCommunities: any = {};\n\nclass NameResolverClient extends EventEmitter {\n state = \"stopped\";\n}\n\nclass PKC extends EventEmitter {\n nameResolvers: any[];\n _clientsManager: {\n clients: {\n nameResolvers: { [resolverKey: string]: NameResolverClient };\n };\n };\n\n constructor(options: any = {}) {\n super();\n this.nameResolvers = options?.nameResolvers || [];\n this._clientsManager = {\n clients: {\n nameResolvers: this.nameResolvers.reduce(\n (resolverClients: { [resolverKey: string]: NameResolverClient }, resolver: any) => ({\n ...resolverClients,\n [resolver.key]: new NameResolverClient(),\n }),\n {},\n ),\n },\n };\n }\n\n async createSigner() {\n return {\n privateKey: \"private key\",\n address: await getCidHash(String(Math.random())),\n };\n }\n\n async resolveAuthorAddress(options: { address: string }) {\n const resolver = this.nameResolvers.find((nameResolver) =>\n nameResolver?.canResolve?.({ name: options.address }),\n );\n const resolverClient = resolver && this._clientsManager.clients.nameResolvers[resolver.key];\n if (resolverClient) {\n resolverClient.state = \"resolving-author-name\";\n resolverClient.emit(\"statechange\", resolverClient.state);\n }\n await new Promise((resolve) => setTimeout(resolve, 10));\n if (resolverClient) {\n resolverClient.state = \"stopped\";\n resolverClient.emit(\"statechange\", resolverClient.state);\n }\n return \"resolved author address\";\n }\n async resolveAuthorName(options: { address: string }) {\n return this.resolveAuthorAddress(options);\n }\n\n async createCommunity(createCommunityOptions: any) {\n const communityIdentifier =\n createCommunityOptions?.address ||\n createCommunityOptions?.name ||\n createCommunityOptions?.publicKey;\n\n // if the only argument is {address}, the user didn't create the sub, it's a fetched sub\n if (createCommunityOptions?.address && Object.keys(createCommunityOptions).length === 1) {\n return new Community(createCommunityOptions);\n }\n\n const signer = await this.createSigner();\n const community = new Community({ signer, ...createCommunityOptions });\n\n // keep a list of communities the user probably created himself to use with pkc.communities\n if (!communityIdentifier) {\n createdCommunities[community.address || \"\"] = community;\n }\n\n return community;\n }\n\n async getCommunity(options: { address: string }) {\n const address = options?.address;\n const createCommunityOptions = { address };\n const community: any = new Community(createCommunityOptions);\n const hotPageCid = await seedToCid(await getNumberHash(address + \"hotpagecid\"));\n community.posts.pages.hot = await getCommentsPage(hotPageCid, community);\n community.posts.pageCids = {\n hot: await seedToCid(await getNumberHash(address + \"hotpagecid2\")),\n topAll: await seedToCid(await getNumberHash(address + \"topallpagecid\")),\n new: await seedToCid(await getNumberHash(address + \"newpagecid\")),\n active: await seedToCid(await getNumberHash(address + \"activepagecid\")),\n };\n\n const communityContent = await getCommunityContent(address);\n // add extra props\n for (const prop in communityContent) {\n community[prop] = communityContent[prop];\n }\n return community;\n }\n\n // TODO: implement event communitieschange\n get communities() {\n const communityAddresses = Object.keys(createdCommunities);\n return communityAddresses;\n }\n\n async createComment(createCommentOptions: any) {\n return new Comment(createCommentOptions);\n }\n\n async getComment(options: { cid: string }) {\n const cid = options?.cid;\n const commentSeedNumber = SeedIncrementer(await getNumberHash(cid + \"getcomment\"));\n let commentContent: any = await getPostContent(cid + \"postcontent\");\n const isReply = cid.endsWith(\"reply\");\n if (isReply) {\n const depth = await getNumberBetween(1, 10, commentSeedNumber.increment());\n const parentCid = await seedToCid(commentSeedNumber.increment());\n const postCid = depth === 1 ? parentCid : await seedToCid(commentSeedNumber.increment());\n const getReplyContentOptions = { depth, parentCid, postCid };\n commentContent = await getReplyContent(getReplyContentOptions, cid + \"replycontent\");\n }\n const createCommentOptions = {\n cid,\n timestamp: await getNumberBetween(NOW - DAY * 30, NOW, commentSeedNumber.increment()),\n communityAddress: \"memes.eth\",\n ...commentContent,\n };\n const comment = new Comment(createCommentOptions);\n // add missing props from createCommentOptions\n for (const prop in createCommentOptions) {\n // @ts-ignore\n comment[prop] = createCommentOptions[prop];\n }\n return comment;\n }\n\n async createVote(publishVoteOptions: any) {\n return new Vote(publishVoteOptions);\n }\n\n async createCommentEdit(publishCommentEditOptions: any) {\n return new CommentEdit(publishCommentEditOptions);\n }\n\n async createCommunityEdit() {\n return new CommunityEdit();\n }\n\n async fetchCid(options: { cid: string }) {\n const cid = options?.cid;\n if (cid?.startsWith(\"statscid\")) {\n return JSON.stringify({\n hourActiveUserCount: 1,\n dayActiveUserCount: 11,\n weekActiveUserCount: 111,\n monthActiveUserCount: 1111,\n yearActiveUserCount: 11111,\n allActiveUserCount: 111111,\n hourPostCount: 2,\n dayPostCount: 22,\n weekPostCount: 222,\n monthPostCount: 2222,\n yearPostCount: 22222,\n allPostCount: 222222,\n });\n }\n throw Error(`pkc.fetchCid not implemented in mock content for cid '${cid}'`);\n }\n\n async pubsubSubscribe(communityAddress: string) {}\n async pubsubUnsubscribe(communityAddress: string) {}\n\n clients = (() => {\n const pkcRpcClients = {\n \"http://localhost:9138\": new PkcRpcClient(),\n };\n return {\n pkcRpcClients,\n };\n })();\n\n async validateComment(comment: any, validateCommentOptions: any) {}\n}\n\nclass PkcRpcClient extends EventEmitter {\n state = \"connecting\";\n settings: any = undefined;\n constructor() {\n super();\n // simulate connecting to the rpc\n setTimeout(() => {\n this.state = \"connected\";\n this.settings = { challenges: { \"text-math\": {} } };\n this.emit(\"statechange\", this.state);\n this.emit(\"settingschange\", this.settings);\n }, 5000);\n }\n\n async setSettings(settings: any) {\n this.settings = settings;\n this.emit(\"settingschange\", this.settings);\n }\n}\n\nclass Pages {\n pageCids: any = {};\n pages: any = {};\n community: any;\n comment: any;\n\n constructor(pagesOptions?: any) {\n Object.defineProperty(this, \"community\", {\n value: pagesOptions?.community,\n enumerable: false,\n });\n Object.defineProperty(this, \"comment\", { value: pagesOptions?.comment, enumerable: false });\n }\n\n async getPage(options: { cid: string }) {\n const cid = options?.cid;\n // need to wait twice otherwise react renders too fast and fetches too many pages in advance\n await simulateLoadingTime();\n return getCommentsPage(cid, this.community || this.comment);\n }\n\n async validatePage(page: any) {}\n}\n\nclass Community extends EventEmitter {\n address: string | undefined;\n title: string | undefined;\n description: string | undefined;\n pageCids: any;\n posts: Pages;\n pubsubTopic: string | undefined;\n createdAt: number | undefined;\n updatedAt: number | undefined;\n challengeTypes: string[] | undefined;\n roles: any | undefined;\n flairs: any | undefined;\n suggested: any | undefined;\n features: any | undefined;\n rules: string[] | undefined;\n signer: any | undefined;\n shortAddress: string | undefined;\n statsCid: string | undefined;\n _getCommunityOnFirstUpdate = false;\n updatingState: string | undefined;\n\n constructor(createCommunityOptions?: any) {\n super();\n this.address =\n createCommunityOptions?.address ||\n createCommunityOptions?.name ||\n createCommunityOptions?.publicKey;\n this.pubsubTopic = createCommunityOptions?.pubsubTopic;\n this.createdAt = createCommunityOptions?.createdAt;\n this.updatedAt = createCommunityOptions?.updatedAt;\n this.challengeTypes = createCommunityOptions?.challengeTypes;\n this.roles = createCommunityOptions?.roles;\n this.flairs = createCommunityOptions?.flairs;\n this.suggested = createCommunityOptions?.suggested;\n this.features = createCommunityOptions?.features;\n this.rules = createCommunityOptions?.rules;\n this.title = createCommunityOptions?.title;\n this.description = createCommunityOptions?.description;\n this.statsCid = \"statscid\";\n\n for (const prop in createCommunityOptions) {\n if (createCommunityOptions[prop] !== undefined) {\n // @ts-ignore\n this[prop] = createCommunityOptions[prop];\n }\n }\n this.posts = new Pages({ community: this });\n\n // add community.posts from createCommunityOptions\n if (createCommunityOptions?.posts?.pages) {\n this.posts.pages = createCommunityOptions?.posts?.pages;\n }\n if (createCommunityOptions?.posts?.pageCids) {\n this.posts.pageCids = createCommunityOptions?.posts?.pageCids;\n }\n\n if (!this.address && this.signer?.address) {\n this.address = this.signer.address;\n }\n this.shortAddress = this.address?.endsWith(\".eth\")\n ? this.address\n : this.address?.substring(8, 20);\n\n Object.defineProperty(this, \"updating\", { enumerable: false, writable: true });\n // @ts-ignore\n this.updating = false;\n\n // if the only argument is {address}, it means the first update should use getCommunity()\n if (createCommunityOptions?.address && Object.keys(createCommunityOptions).length === 1) {\n this._getCommunityOnFirstUpdate = true;\n }\n }\n\n async edit(editCommunityOptions: any) {\n assert(\n editCommunityOptions && typeof editCommunityOptions === \"object\",\n `invalid editCommunityOptions '${editCommunityOptions}'`,\n );\n for (const prop in editCommunityOptions) {\n if (editCommunityOptions[prop] !== undefined) {\n // @ts-ignore\n this[prop] = editCommunityOptions[prop];\n }\n }\n }\n\n async update() {\n if (!this.address) {\n throw Error(`can't update without community.address`);\n }\n // don't update twice\n // @ts-ignore\n if (this.updating) {\n return;\n }\n // @ts-ignore\n this.updating = true;\n this.updatingState = \"fetching-ipns\";\n this.emit(\"updatingstatechange\", \"fetching-ipns\");\n simulateLoadingTime().then(() => {\n this.simulateUpdateEvent();\n });\n }\n\n async delete() {\n if (this.address) {\n delete createdCommunities[this.address];\n }\n }\n\n simulateUpdateEvent() {\n if (this._getCommunityOnFirstUpdate) {\n return this.simulateGetCommunityOnFirstUpdateEvent();\n }\n this.emit(\"update\", this);\n }\n\n async simulateGetCommunityOnFirstUpdateEvent() {\n this._getCommunityOnFirstUpdate = false;\n\n // @ts-ignore\n const community = await new PKC().getCommunity({ address: this.address });\n const props = JSON.parse(JSON.stringify(community));\n for (const prop in props) {\n if (prop.startsWith(\"_\")) {\n continue;\n }\n // @ts-ignore\n this[prop] = props[prop];\n }\n this.posts.getPage = community.posts.getPage;\n this.updatingState = \"succeeded\";\n this.emit(\"update\", this);\n this.emit(\"updatingstatechange\", \"succeeded\");\n\n this.simulateUpdateEvent();\n }\n}\n\nlet challengeRequestCount = 0;\nlet challengeAnswerCount = 0;\n\nclass Publication extends EventEmitter {\n timestamp: number | undefined;\n content: string | undefined;\n cid: string | undefined;\n title: string | undefined;\n link: string | undefined;\n challengeRequestId!: string;\n challengeAnswerId!: string;\n\n constructor() {\n super();\n Object.defineProperty(this, \"challengeRequestId\", { enumerable: false, writable: true });\n Object.defineProperty(this, \"challengeAnswerId\", { enumerable: false, writable: true });\n this.challengeRequestId = `r${++challengeRequestCount}`;\n this.challengeAnswerId = `a${++challengeAnswerCount}`;\n }\n\n async publish() {\n await simulateLoadingTime();\n await this.simulateChallengeEvent();\n }\n\n async simulateChallengeEvent() {\n const challenges: any = [];\n const challengeCount = await getNumberBetween(\n 1,\n 3,\n await getNumberHash(this.challengeRequestId),\n );\n while (challenges.length < challengeCount) {\n challenges.push({ type: \"image/png\", challenge: captchaImageBase64 });\n }\n const challengeMessage = {\n type: \"CHALLENGE\",\n challengeRequestId: this.challengeRequestId,\n challenges,\n };\n this.emit(\"challenge\", challengeMessage, this);\n }\n\n async publishChallengeAnswers(challengeAnswers: string[]) {\n await simulateLoadingTime();\n this.simulateChallengeVerificationEvent();\n }\n\n async simulateChallengeVerificationEvent() {\n // if publication has content, create cid for this content and add it to comment and challengeVerificationMessage\n const cidSeed = `${this.content ?? \"\"}${this.title ?? \"\"}${this.link ?? \"\"}`;\n this.cid = cidSeed.length > 0 ? await getCidHash(`${cidSeed}cid`) : undefined;\n const commentUpdate = this.cid && { cid: this.cid };\n\n const challengeVerificationMessage = {\n type: \"CHALLENGEVERIFICATION\",\n challengeRequestId: this.challengeRequestId,\n challengeAnswerId: this.challengeAnswerId,\n challengeSuccess: true,\n commentUpdate,\n };\n this.emit(\"challengeverification\", challengeVerificationMessage, this);\n }\n\n stop() {\n if ((this as any).updating || (this as any).updatingState !== \"stopped\") {\n (this as any).state = \"stopped\";\n (this as any).updating = false;\n (this as any).updatingState = \"stopped\";\n this.emit(\"statechange\", \"stopped\");\n this.emit(\"updatingstatechange\", \"stopped\");\n }\n }\n}\n\nclass Comment extends Publication {\n author: any;\n updating: boolean;\n upvoteCount: number | undefined;\n downvoteCount: number | undefined;\n content: string | undefined;\n parentCid: string | undefined;\n replies: any;\n replyCount: number | undefined;\n postCid: string | undefined;\n depth: number | undefined;\n spoiler: boolean | undefined;\n flair: any | undefined;\n pinned: boolean | undefined;\n locked: boolean | undefined;\n deleted: boolean | undefined;\n removed: boolean | undefined;\n purged: boolean | undefined;\n edit: any;\n original: any;\n reason: string | undefined;\n shortCid: string | undefined;\n _getCommentOnFirstUpdate = false;\n updatingState: string | undefined;\n communityAddress: string | undefined;\n shortCommunityAddress: string | undefined;\n\n constructor(createCommentOptions?: any) {\n super();\n this.cid = createCommentOptions?.cid;\n this.upvoteCount = createCommentOptions?.upvoteCount;\n this.downvoteCount = createCommentOptions?.downvoteCount;\n this.content = createCommentOptions?.content;\n this.author = createCommentOptions?.author;\n this.timestamp = createCommentOptions?.timestamp;\n this.parentCid = createCommentOptions?.parentCid;\n this.postCid = createCommentOptions?.postCid;\n this.parentCid = createCommentOptions?.parentCid;\n this.depth = createCommentOptions?.depth;\n this.spoiler = createCommentOptions?.spoiler;\n this.flair = createCommentOptions?.flair;\n this.pinned = createCommentOptions?.pinned;\n this.locked = createCommentOptions?.locked;\n this.deleted = createCommentOptions?.deleted;\n this.removed = createCommentOptions?.removed;\n this.purged = createCommentOptions?.purged;\n this.reason = createCommentOptions?.reason;\n this.replies = new Pages({ comment: this });\n if (this.cid) {\n this.shortCid = this.cid.substring(2, 14);\n }\n\n Object.defineProperty(this, \"updating\", { enumerable: false, writable: true });\n // @ts-ignore\n this.updating = false;\n\n // add missing props from createCommentOptions\n for (const prop in createCommentOptions) {\n // @ts-ignore\n this[prop] = createCommentOptions[prop];\n }\n\n // if the only argument is {cid}, it means the first update should use getComment()\n if (createCommentOptions?.cid && Object.keys(createCommentOptions).length === 1) {\n this._getCommentOnFirstUpdate = true;\n }\n\n if (this.communityAddress) {\n this.shortCommunityAddress = this.communityAddress.substring(0, 12);\n }\n }\n\n async update() {\n // don't update twice\n // @ts-ignore\n if (this.updating) {\n return;\n }\n // @ts-ignore\n this.updating = true;\n this.updatingState = \"fetching-ipfs\";\n this.emit(\"updatingstatechange\", \"fetching-ipfs\");\n (async () => {\n while (this.updating) {\n await simulateLoadingTime();\n await simulateLoadingTime();\n await simulateLoadingTime();\n if (!this.updating) {\n return;\n }\n this.simulateUpdateEvent();\n }\n })();\n }\n\n async simulateUpdateEvent() {\n if (!this.updating) {\n return;\n }\n assert(this.cid, `invalid comment.cid '${this.cid}' can't simulateUpdateEvent`);\n if (this._getCommentOnFirstUpdate) {\n return this.simulateGetCommentOnFirstUpdateEvent();\n }\n\n const commentUpdateContent = await getCommentUpdateContent(this);\n for (const prop in commentUpdateContent) {\n // @ts-ignore\n this[prop] = commentUpdateContent[prop];\n }\n this.shortCid = this.cid.substring(2, 14);\n this.updatingState = \"succeeded\";\n this.emit(\"update\", this);\n this.emit(\"updatingstatechange\", \"succeeded\");\n }\n\n async simulateGetCommentOnFirstUpdateEvent() {\n if (!this.updating) {\n return;\n }\n this._getCommentOnFirstUpdate = false;\n\n // @ts-ignore\n const comment = await new PKC().getComment({ cid: this.cid });\n if (!this.updating) {\n return;\n }\n const props = JSON.parse(JSON.stringify(comment));\n for (const prop in props) {\n if (prop.startsWith(\"_\")) {\n continue;\n }\n // @ts-ignore\n this[prop] = props[prop];\n }\n this.emit(\"update\", this);\n }\n}\n\nclass Vote extends Publication {\n constructor(publishVoteOptions: any) {\n super();\n for (const prop in publishVoteOptions) {\n // @ts-ignore\n this[prop] = publishVoteOptions[prop];\n }\n }\n}\n\nclass CommentEdit extends Publication {\n constructor(publishCommentEditOptions: any) {\n super();\n for (const prop in publishCommentEditOptions) {\n // @ts-ignore\n this[prop] = publishCommentEditOptions[prop];\n }\n }\n}\n\nclass CommunityEdit extends Publication {}\n\nconst createPkc: any = async (...args: any) => {\n return new PKC(...args);\n};\n\ncreatePkc.getShortAddress = (options: { address: string }) => {\n const address = options?.address;\n if (address.includes(\".\")) {\n return address;\n }\n return address.substring(0, 12);\n};\n\ncreatePkc.getShortCid = (options: { cid: string }) => {\n const cid = options?.cid;\n return cid.substring(0, 12);\n};\n\nexport default createPkc;\n"]}
1
+ {"version":3,"file":"pkc-js-mock-content.js","sourceRoot":"","sources":["../../../src/lib/pkc-js/pkc-js-mock-content.ts"],"names":[],"mappings":"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","sourcesContent":["import markdownExample from \"./fixtures/markdown-example\";\nimport EventEmitter from \"events\";\nimport type { PkcResolveAuthorNameOptions, PkcResolveAuthorNameResult } from \"../pkc-types\";\nimport assert from \"assert\";\nimport { sha256 } from \"multiformats/hashes/sha2\";\nimport { fromString as uint8ArrayFromString } from \"uint8arrays/from-string\";\nimport { toString as uint8ArrayToString } from \"uint8arrays/to-string\";\n\n// changeable with env variable so the frontend can test with different latencies\nconst doubleMedia = Boolean(process.env.REACT_APP_BITSOCIAL_REACT_HOOKS_MOCK_CONTENT_DOUBLE_MEDIA);\nconst loadingTime = Number(\n process.env.REACT_APP_BITSOCIAL_REACT_HOOKS_MOCK_CONTENT_LOADING_TIME || 100,\n);\nconst simulateLoadingTime = () => new Promise((r) => setTimeout(r, loadingTime));\nconst NOW = 1679800000;\nconst DAY = 60 * 60 * 24;\n\n// TODO: should delete this eventually to reduce npm package size\nlet captchaImageBase64 =\n \"iVBORw0KGgoAAAANSUhEUgAAAJYAAAAyCAMAAACJUtIoAAAAY1BMVEX////y8vLm5ub39/fr7Ozf39/a29u/6c256MjV8N7v+fL0+/bU1dXO7tnp9+7e8+TJ7NTOzs7E69Gt5L+I26ag4bfk9en3/fmS3Kyo4rx42J2Z37LI38/AwMDR5tip1Li+1cUdWDCzAAAEkElEQVRYw+1Y6ZKjIBBuGuTyPqKZHLP7/k+5KrhIUEwms1X7Y76pMYVg23x9IvzgZfQN/I/QXavhP0SXyh6+AdQbEYS3UJ1TkC/zlbDxEtOD7Q8JnQRMFxYzooL0A46APhlZEizw71A2X+kyu5pBHC8JMUJ3ITqpu0O6GPqbRU8l3CM1CdnCjC0a8Yil80pdLinEMXBc5BMCuwaMUejYimzHoZSgzzJ90oaY8HCW7BmD0ug9QmAXxWlULW9yM+IbgqyHUjJJsuZYyWZu6xEwc3keaqTqCoUJx5puCx1vo1GAWPUf1GI8CRhk6IZZQM8RdCu6HiBvlgCCjaetWhZYo28JkvmvpBO/iD5bNLBFHPnsW1oq7mQGoGSlosdqYB+bARiDb4H6NRiZ6AkM+SdG8Vf9BckXK6RQxsVrStF3etxx5Vf8BdGLlBfQS233xXx6SODRHm9oh6HeSLcyScJejIAmn0mgFMoEvWISS+wZcT8ecPpngVrInmPMLdGymKvSubv9TVLM5gVzY8ObOVt+aIJe0kRqdHPp5wVDUveIyRVQFvKTgI1rV6LjIIDJlCsy3IoXDiEyElUrI7UbpbI05jRVjK2oPwJmWcLgzk0W3u/Jnt8p8UplMZLGs0DaEdgcLEiMX3tlHHcKSHQeWIZr71aikfWdvdOoIkdMVtGM0QxG79v2rDPf96vLZ2j5/c33Hyp4EyO46UbJhulIzR55JOSv5zC27DftVFvs2/yxAKVdc833wps9MJBs+A4NWk/3GJ34tQ91AyhRPHeoYAnvAPKT3qE2XpFqujVh5lzcWSHXG7KIYo9qXfTUvqU7mWMPSW3UigO5YzXlk4LPKKYrKcWlVRrKFg4RngQyAnEkuC6opqDFFUuVEGriSKoiF+KSD48+ovTDzr36QP1WarclQPBhFbMFRxt9zfaGUohKr6spVB/NeK9fc9OdWzW4Vsz3SqSmPfsK+NRcm/iXp/EX61FO34im91Sfr+3E4OcvISxJjJ3Up7z+FcXhDYS009+zKZWsTnnye6SkBA/WrfL5yjiAzsW4KAX4uAWd29tAuiQDnH2saNP8apzJZEzqKukp78tz5XVCfSVkdzOLLHnBoeor4HSdqKpWXiq918SneXv+NQStwulyFv2R+GNEtkMR2ip1mShoE5DMqcjDR6mbk5B58RBcizHCCvlqX0ZwDLWT1IAJCfdpKxglj2oZ32ukKNdFp1DDs0ffY5QSegW0RrZLMIRqWfGlkJVeeC26czMNCI00Wc5PWRL7mpCezS2vC6Cx7VVnWawdUEqFprjz26l85qOKVSvqYH45DuMrnKG31q+Vn0I2o6YdRxi2zjCIkQO0I9FbpfX+p6wQDGcy9eB9nmCQKgmncpee0KoB8LhvHuhO2xM6Dnd32ms+uIS9xp0cbpvgYfBiQDh/KK585TdkWSSr6qpgA/SehQY8BllUQePfPFjACa53SO7rjo5YCqoKoBgng+xHMoQvIJtOJJMkNPI43fIGut0H0toOmJJLQDF4C+6d098XwZcn+9ZmsO9SC96Bc5TUSvvBD/49/gDEMCEP8TccuAAAAABJRU5ErkJggg==\";\n\nconst commentTitles = [\n `Own a Piece of Digital History- Winamp Is Now Selling Its Original 1.0 Skin as an NFT, Iconic Player “was the go-to music player everybody was using at the beginning of the history of digital music and was instrumental in helping the .mp3 become mainstream”.`,\n 'Buyer of \"Pepe the Frog\" NFT files US$500,000 lawsuit after creator releases identical NFTs for free',\n \"$5,100,000,000 Bitcoin Whale enters massive crypto accumulation mode\",\n \"Two Big Developments in Brave Browser\",\n \"🤡\",\n];\n\nconst commentContents = [\n `First of all, the sentiment in this sub concerning moons seems very __polarized__. Some people think they are a genius idea and others think they are making this sub this sub worse because of “moon farming.” which camp are you in? \n\nSecond, how/where can you sell them. And third c/eEY1MhxPNyvt, how many upvotes=one moon, some people have so many when I’m sitting here at 17.\n\n**Personally** I think Reddit is ahead of the _curve_, in a couple years I could easily see every social media platform incorporating their own coin into their interface. \n\nThink about it; it costs the company next to nothing, encourages users to spend more time and be more active on the platform, and capitalizes on their existing user base, skipping any need for marketing. \n\nu/BPNgj2dfHSn8 From the companies point of view it seems like a no brainer. p/reddit-screenshots.eth/c/QmeEY1MhxPNyvt5i8GVxZwqi11yweKuYFWyk1ST4GTKRnm\n\nCan people think of issues with this approach? For either the company or the consumer, because besides increased levels of spamming I don’t see much downside.`,\n \"What kind of messes up world is this. *Even* if they stop you, they would need some sort of seed phrase or private key to your account in order to get the funds.\",\n \"🤡\",\n `So real fast u/estebanabaroa.eth/c/QmeEY1MhxPNyvt5i8GVxZwqi11yweKuYFWyk1ST4GTKRnm, I'm not a legal person and this isn't legal advice. I'm just sharing what I found out. What is civil forfeiture In the USA basically the cops can take things if the suspect it could of been used in a crime (any crime even if there is no crime going on now or in the area and any evidence). Lets put it this way, in CA there is pot shops that used armor trucks to move their money (which many stores use). Pot shops in CA is legal, but the cops on a regular bases stopped the truck for stupid things like using the turn signal too early. They use civil forfeiture to take the cash. From there in all cases they send the stuff to the gov, and the gov gives the local cops a major amount of the value of the assets. Note in some states this is illegal like NC. But I seen in the past years where federal wants to cause a loophole using DEA to force cops by law to do it. But note if you travel through states with this being legal. Note this is actually is a huge problem in the USA. Even more for unbanked people and homeless. ALL lawyers and all people I talked to in legal/law thinks this is the ultimate forum of government theft, and this should be federally illegal. That the system is proven to be extremely abused just for the reason of bonuses and the ones taking the money keep a ton of it after it went through the system. My question Can the gov force you to unlock your phone in a civil forfeiture? This giving them access to your hot wallets. Can the gov take your crypto in a civil forfeiture since it is on the blockchain? It should be noted that with 2, there is no clear answer to this. Basically it came down to it has to be tested in courts or a law maker needs to make laws clearing this up. NOTE FOR ANY LAW MAKERS THAT WANT TO HELP WHO THEY REPRESENT, AND WANT TO MAKE A BILL TO HELP THEM GET REELECTED. FIX THIS What I found out So can they take your phone or hardware wallet? The answer to this seems to be yes. Can they force you to unlock your phone? The answer to this seems to be not without a warrant. Can they brute force, hack, or do whatever to get in after they taken the device in a civil forfeiture? The answer seems to be yes. Basically, the idea is that when this happens it now becomes gov property. And if the gov wants to break in their own property or wipe their end. There isn't jack you can do to stop them expect remote format the device (seriously look into this. You can do this with most phones.) Are they likely to break into your phone/hardware wallet if they take it? While there isn't really evidence of this happening yet. The likely if it was to happen then yes. The question is, do they know of a 0 day which will allow them to get in, and that answer to this is maybe. Like I've seen videos of people recovering their funds from their hardware wallet through taking apart something like a ledger, hooking up to given things, and doing a few other things. So lets not rule out they will have some way of doing just this. Because it is likely if they take one, then they most likely are taking as many as they see. Can the gov use civil forfeiture to get the crypto itself without going after the phone/hardware wallet? Chances are is no. Like they can't demand for the given crypto since they have no way of knowing the wallet address unless if you show them or after they taken the device. They have to prove in court they suspected x was used in some way with a crime. Not knowing the address prior to rules this out. So basically, don't talk to the legal people without a lawyer and don't give them more info than needed. Note: if they use the law to take the phone or hardware wallet, then they can make a case that maybe the crypto is part of the taking since you have direct control of the crypto using your phone. Therefore the crypto could've also been used in crime in some way in the same way the phone could've been. Basically, it is the argument of can they take the truck and the music CD inside thing. How to handle the situation? Don't talk to the cops about anything you don't have to. Note the laws, but in general if they ask you to get out of the car ask if it is a command. If they say yes, then get out. If they asked for documents, then give it (don't be an idiot, just give it to them even the technical bits you don't need to. You will just PO the cop which can cause problems.) Ask them if you can leave, and that you would like to leave. This indicates you aren't volunteering your stay, and in many states they have to be reasonable about the length of the stop and many cases they won't have enough time to do something stupid. When asked questions you don't have to answer say a lawyer friend told you to not talk to the cops while being questioned or at a stop. Never agree to them searching your car or you without a warrant. Never argue with them on the side of the road, the day for that is in court (meaning if they decided to arrest you, then let them and then wait to fight it in court since it is likely you can get a big paycheck if done right). Never be open about what you have. If they take the item using civil forfeiture, then it is likely any cash will be gone forever since some of these court cases can last for years. But you can and should fight them in court because there is a growing amount of cases which is forcing judges and others to look more into this and treat it more serious. If you can't afford a lawyer to fight, then there is a few groups that you can call depending on if you have military background, extreme poverty, and so on. But to be blunt, the best way to fight this risk is by getting law makers to make civil forfeiture illegal. BTW for people visiting the USA, you could face this problem.`,\n markdownExample,\n];\n\nconst commentLinks = [\n \"https://fortune.com/2022/03/16/bitcoin-200k-price-prediction-crypto-outlook/\",\n \"https://finance.yahoo.com/news/c2x-announces-25-million-funding-120000728.html\",\n \"https://finance.yahoo.com/news/adopting-crypto-legal-tender-signify-101309571.html\",\n \"https://x.com/pkcprotocol/status/1632113706015309825\",\n \"https://www.youtube.com/watch?v=jfKfPfyJRdk\",\n];\n\nconst mediaLinks = [\n \"https://upload.wikimedia.org/wikipedia/en/transcoded/b/bd/Exorcist_angiogram_scene.webm/Exorcist_angiogram_scene.webm.480p.vp9.webm\",\n \"https://upload.wikimedia.org/wikipedia/en/f/fa/2001_space_travel.ogv\",\n \"https://upload.wikimedia.org/wikipedia/en/e/e1/Don%27t_Look_Now_love_scene_.ogg\",\n \"https://upload.wikimedia.org/wikipedia/en/8/8a/Ellen_comes_out_airport.mp3\",\n \"https://upload.wikimedia.org/wikipedia/en/b/bf/Dave_Niehaus_Winning_Call_1995_AL_Division_Series.ogg\",\n];\n\nconst communityTitles = [\n \"The Ethereum investment community\",\n \"Cryptography news and discussions\",\n \"Memes\",\n \"🤡\",\n];\n\nconst communityDescriptions = [\n \"Welcome to /r/EthTrader, a 100% community driven sub. Here you can discuss Ethereum news, memes, investing, trading, miscellaneous market-related subjects and other relevant technology.\",\n \"Cryptography is the art of creating mathematical assurances for who can do what with data, including but not limited to encryption of messages such that only the key-holder can read it. Cryptography lives at an intersection of math and computer science. This subreddit covers the theory and practice of modern and *strong* cryptography, and it is a technical subreddit focused on the algorithms and implementations of cryptography.\",\n \"Memes\",\n \"🤡\",\n];\n\nconst urlSuffixes = [\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"#\",\n \"#/\",\n \"#?\",\n \"?\",\n \"?query\",\n \"#hash-value\",\n \"#hash-value?\",\n \"#hash-value?query=string\",\n \"#hash-value?query=string&yes=1\",\n \"?query=string\",\n \"?query=string&yes=1\",\n];\n\nconst firstNames = [\n \"james\",\n \"robert\",\n \"john\",\n \"michael\",\n \"william\",\n \"david\",\n \"richard\",\n \"joseph\",\n \"thomas\",\n \"charles\",\n \"christopher\",\n \"daniel\",\n \"matthew\",\n \"anthony\",\n \"mark\",\n \"donald\",\n \"steven\",\n \"paul\",\n \"andrew\",\n \"joshua\",\n];\n\nconst displayNames = [\n \"COVERCADIGMENTS!\",\n \"Everco__Evidehovi\",\n \"fermind-flashyte\",\n \"FlirtyraForeguiGoldhil_\",\n \"Hanmiddie Headro Herdman\",\n \"Hurigher Irongmug\",\n \"Islandvi Jumbinte\",\n \"Lackapac Lorvalow\",\n \"MarsEdgyMedprin\",\n \"parispn!!!\",\n \"personna\",\n \" popic😃\",\n \"Riderix\\n\",\n \"Romantec__\",\n \"Sellakuk23\",\n \"--TickoAim2$\",\n \"Transia4\\t\",\n \"Trippah+512\",\n \"😃\",\n \"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh\",\n \"aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa\",\n];\n\nconst postFlairs = [\n { text: \"Analysis\" },\n { text: \"ADVICE\", textColor: \"#000000\", backgroundColor: \"#252850\" },\n { text: \"comedy\", textColor: \"#FFFFFF\", backgroundColor: \"#23282B\" },\n { text: \"General News\" },\n {\n text: \"Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam Probably a scam!!!!!!!!!!!!!!!!!!!!!!\",\n textColor: \"#FFFFFF\",\n backgroundColor: \"#5B3A29\",\n },\n { text: \"education\", textColor: \"#000000\", backgroundColor: \"#4A192C\" },\n { text: \"MARKETS\", backgroundColor: \"#F8F32B\" },\n { text: \"IMPORTANT!!!\", backgroundColor: \"#C35831\" },\n {\n text: \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\",\n backgroundColor: \"#AF2B1E\",\n },\n { text: \"MOON 🌕\", backgroundColor: \"#D36E70\" },\n { text: \"video\", backgroundColor: \"#924E7D\" },\n];\n\nconst authorFlairs = [\n { text: \"SCAMMER\" },\n { text: \"Medical Doctor\", textColor: \"#000000\", backgroundColor: \"#252850\" },\n { text: \"pro\", textColor: \"#FFFFFF\", backgroundColor: \"#23282B\" },\n {\n text: \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\",\n },\n { text: \"Probably a scammer\", textColor: \"#FFFFFF\", backgroundColor: \"#5B3A29\" },\n { text: \"loser\", textColor: \"#000000\", backgroundColor: \"#4A192C\" },\n { text: \"WINNER\", backgroundColor: \"#F8F32B\" },\n { text: \"IMPORTANT VIP!!!\", backgroundColor: \"#C35831\" },\n {\n text: \"BE CAREFUL OF THIS MAN BE CAREFUL OF THIS MAN BE CAREFUL OF THIS MAN BE CAREFUL OF THIS MAN BE CAREFUL OF THIS MAN BE CAREFUL OF THIS MAN BE CAREFUL OF THIS MAN BE CAREFUL OF THIS MAN BE CAREFUL OF THIS MAN BE CAREFUL OF THIS MAN!!!!!!!!!!!!!!!!!!\",\n backgroundColor: \"#AF2B1E\",\n },\n { text: \"🌕\", backgroundColor: \"#D36E70\" },\n { text: \"creator\", backgroundColor: \"#924E7D\" },\n];\n\nconst reasons = [\n \"SPAM\",\n \"this is spam\",\n \"repeated spamming\",\n \"User is a known scammer\",\n \"NSFW\",\n \"SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM\",\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\",\n];\n\nconst getCidHash = async (string: string) => {\n assert(string && typeof string === \"string\", `can't getCidHash '${string} not a string'`);\n const seed = await getNumberHash(string);\n const cid = await seedToCid(seed);\n return cid;\n};\n\nconst seedToCid = async (seed: number) => {\n assert(\n typeof seed === \"number\" && !Number.isNaN(seed) && seed >= 0,\n `seedToCid seed argument must be positive number not '${seed}'`,\n );\n let base10Seed = String(seed);\n\n // seed base10 string is usually too small for a cid, make it longer\n // the cid is usually around 46 chars in base58, so 80 chars in base10\n const base10SeedLength = 80;\n while (base10Seed.length < base10SeedLength) {\n base10Seed += base10Seed;\n }\n base10Seed = base10Seed.substring(0, base10SeedLength);\n\n const uint8Array = uint8ArrayFromString(base10Seed, \"base10\");\n const base58Cid = uint8ArrayToString(uint8Array, \"base58btc\");\n return base58Cid;\n};\n\n// fake hash with lots of collision for speed\nconst getNumberHash = async (string: string) => {\n assert(string && typeof string === \"string\", `can't getNumberHash '${string} not a string'`);\n let hash = 0;\n for (let i = 0; i < string.length; i++) {\n const char = string.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash &= hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n};\n\nclass _SeedIncrementer {\n seed: number;\n numbers: number[];\n index = 0;\n constructor(seed: number) {\n assert(\n typeof seed === \"number\" && !Number.isNaN(seed) && seed >= 0,\n `getNumberBetween seed argument must be positive number not '${seed}'`,\n );\n this.seed = seed;\n this.numbers = String(seed)\n .split(\"\")\n .map((number) => Number(number));\n }\n increment() {\n this.index++;\n const divider = this.numbers[this.index % this.numbers.length] + this.index;\n return Math.round(this.seed / divider);\n }\n}\nconst SeedIncrementer = (seed: number) => new _SeedIncrementer(seed);\n\nconst getNumberBetween = async (min: number, max: number, seed: number) => {\n assert(\n typeof seed === \"number\" && !Number.isNaN(seed) && seed >= 0,\n `getNumberBetween seed argument must be positive number not '${seed}'`,\n );\n\n // if the string is exponent, remove chars\n if (String(seed).match(/[^0-9]/)) {\n throw Error(`getNumberBetween seed too large '${seed}'`);\n }\n\n const number = Number(\"0.\" + seed);\n return Math.floor(number * (max - min + 1) + min);\n};\n\nconst getArrayItem = async (array: any[], seed: number) => {\n // const index = await getNumberBetween(0, array.length - 1, seed)\n const index = seed % array.length;\n return array[index];\n};\n\nconst getImageUrl = async (_seed: number) => {\n assert(\n typeof _seed === \"number\" && !Number.isNaN(_seed) && _seed >= 0,\n `getImageUrl seed argument must be positive number not '${_seed}'`,\n );\n const seed = SeedIncrementer(_seed);\n const jpg = `https://picsum.photos/seed/${await getNumberBetween(10, 2000, seed.increment())}/${await getNumberBetween(\n 10,\n 2000,\n seed.increment(),\n )}/${await getNumberBetween(10, 2000, seed.increment())}.jpg`;\n\n const webp = `https://picsum.photos/seed/${await getNumberBetween(10, 2000, seed.increment())}/${await getNumberBetween(\n 10,\n 2000,\n seed.increment(),\n )}/${await getNumberBetween(10, 2000, seed.increment())}.webp`;\n\n const imageUrls = [\n // jpg & webp\n jpg,\n jpg,\n webp,\n webp,\n \"https://samplelib.com/lib/preview/png/sample-bumblebee-400x300.png\", // png\n \"https://c.tenor.com/WHs8ooxWJUIAAAAM/really-great-example-right-here-echo-gaming.gif\", // gif\n \"https://filesamples.com/samples/image/bmp/sample_640%C3%97426.bmp\", // bmp\n \"https://brokensite.xyz/images/dog.png\", // broken image\n \"https://brokensite.xyz/images/dog.jpeg\", // broken jpeg\n ];\n const imageUrl =\n (await getArrayItem(imageUrls, seed.increment())) +\n (await getArrayItem(urlSuffixes, seed.increment()));\n return imageUrl;\n};\n\nconst getAuthorAddress = async (_seed: number) => {\n assert(\n typeof _seed === \"number\" && !Number.isNaN(_seed) && _seed >= 0,\n `getAuthorAddress seed argument must be positive number not '${_seed}'`,\n );\n const seed = SeedIncrementer(_seed);\n const hasEns = await getArrayItem([true, false, false, false], seed.increment());\n if (hasEns) {\n const text = await getArrayItem([...firstNames, ...displayNames], seed.increment());\n return (text.toLowerCase().replace(/[^a-z0-9]/g, \"\") || \"john\") + \".eth\";\n } else {\n const address = await seedToCid(seed.increment());\n return address;\n }\n};\n\nconst getAuthor = async (seed: string) => {\n const authorNumberSeed = SeedIncrementer(await getNumberHash(seed));\n const author: any = {\n address: await getAuthorAddress(authorNumberSeed.increment()),\n };\n author.shortAddress = author.address.endsWith(\".eth\")\n ? author.address\n : author.address.substring(8, 20);\n const hasDisplayName = await getArrayItem(\n [true, true, true, false],\n authorNumberSeed.increment(),\n );\n if (hasDisplayName) {\n author.displayName = await getArrayItem(displayNames, authorNumberSeed.increment());\n }\n const rareTrue = [true, false, false, false, false, false, false, false];\n const hasNftAvatar = await getArrayItem(rareTrue, authorNumberSeed.increment());\n if (hasNftAvatar) {\n author.avatar = {\n chainTicker: \"eth\",\n address: await getArrayItem(\n [\n \"0xed5af388653567af2f388e6224dc7c4b3241c544\",\n \"0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d\",\n \"0x60e4d786628fea6478f785a6d7e704777c86a7c6\",\n \"0x79fcdef22feed20eddacbb2587640e45491b757f\",\n \"0x0000000000000000000000000000000000000dead\",\n ],\n authorNumberSeed.increment(),\n ),\n index: await getNumberBetween(1, 2000, authorNumberSeed.increment()),\n };\n }\n const hasFlair = await getArrayItem(rareTrue, authorNumberSeed.increment());\n if (hasFlair) {\n author.flair = await getArrayItem(authorFlairs, authorNumberSeed.increment());\n }\n return author;\n};\n\nconst getPostContent = async (seed: string) => {\n const postNumberSeed = SeedIncrementer(await getNumberHash(seed));\n const postContent: any = {\n depth: 0,\n author: await getAuthor(String(postNumberSeed)),\n title: await getArrayItem(commentTitles, postNumberSeed.increment()),\n };\n const hasFlair = await getArrayItem([true, false, false, false], postNumberSeed.increment());\n if (hasFlair) {\n postContent.flair = await getArrayItem(postFlairs, postNumberSeed.increment());\n }\n let isLinkPost = await getArrayItem([true, false], postNumberSeed.increment());\n if (doubleMedia && !isLinkPost) {\n isLinkPost = await getArrayItem([true, false], postNumberSeed.increment());\n }\n if (isLinkPost) {\n postContent.link = await getArrayItem(commentLinks, postNumberSeed.increment());\n let linkIsImage = await getArrayItem([true, false], postNumberSeed.increment());\n if (doubleMedia && !linkIsImage) {\n linkIsImage = await getArrayItem([true, false], postNumberSeed.increment());\n }\n if (linkIsImage) {\n postContent.link = await getImageUrl(postNumberSeed.increment());\n\n // add video and audio\n const imageIsMedia = await getArrayItem(\n [true, false, false, false],\n postNumberSeed.increment(),\n );\n if (imageIsMedia) {\n postContent.link = await getArrayItem(mediaLinks, postNumberSeed.increment());\n // add at least one example of video with width and height\n if (postContent.link === mediaLinks[0]) {\n postContent.linkWidth = 852;\n postContent.linkHeight = 480;\n }\n }\n // if link is image, add width and height\n else {\n const [, linkWidth, linkHeight] = (\n postContent.link.match(/\\d+\\/\\d+\\/\\d+/)?.[0] || \"\"\n ).split(\"/\");\n postContent.linkWidth = Number(linkWidth);\n postContent.linkHeight = Number(linkHeight);\n }\n }\n const hasThumbnail = await getArrayItem([true, true, true, false], postNumberSeed.increment());\n if (!linkIsImage && hasThumbnail) {\n postContent.thumbnailUrl = await getImageUrl(postNumberSeed.increment());\n }\n }\n // else is text post\n else {\n postContent.content = await getArrayItem(commentContents, postNumberSeed.increment());\n const hasQuote = await getArrayItem([true, false, false, false], postNumberSeed.increment());\n if (hasQuote) {\n const max = 7;\n const lines = postContent.content.split(\"\\n\");\n for (const i in lines) {\n const lineIsQuote = await getArrayItem([true, false], postNumberSeed.increment());\n if (lineIsQuote) {\n lines[i] = \">\" + lines[i];\n }\n if (Number(i) > max) {\n break;\n }\n }\n postContent.content = lines.join(\"\\n\");\n }\n }\n return postContent;\n};\n\nconst getReplyContent = async (getReplyContentOptions: any, seed: string) => {\n const replyNumberSeed = SeedIncrementer(await getNumberHash(seed));\n const { depth, parentCid, postCid } = getReplyContentOptions;\n const author = await getAuthor(String(replyNumberSeed.seed));\n let content = await getArrayItem(commentContents, replyNumberSeed.increment());\n\n const hasQuote = await getArrayItem([true, false, false, false], replyNumberSeed.increment());\n if (hasQuote) {\n const max = 7;\n const lines = content.split(\"\\n\");\n for (const i in lines) {\n const lineIsQuote = await getArrayItem([true, false], replyNumberSeed.increment());\n if (lineIsQuote) {\n lines[i] = \">\" + lines[i];\n }\n if (Number(i) > max) {\n break;\n }\n }\n content = lines.join(\"\\n\");\n }\n\n const replyContent: any = { content, author, depth, parentCid, postCid };\n\n const hasLink = await getArrayItem([true, false, false, false], replyNumberSeed.increment());\n if (hasLink) {\n replyContent.link = await getArrayItem(commentLinks, replyNumberSeed.increment());\n const linkIsImage = await getArrayItem([true, false], replyNumberSeed.increment());\n if (linkIsImage) {\n replyContent.link = await getImageUrl(replyNumberSeed.increment());\n\n // add video and audio\n const imageIsMedia = await getArrayItem(\n [true, false, false, false],\n replyNumberSeed.increment(),\n );\n if (imageIsMedia) {\n replyContent.link = await getArrayItem(mediaLinks, replyNumberSeed.increment());\n }\n }\n const hasThumbnail = await getArrayItem([true, true, true, false], replyNumberSeed.increment());\n if (!linkIsImage && hasThumbnail) {\n replyContent.thumbnailUrl = await getImageUrl(replyNumberSeed.increment());\n }\n }\n\n const hasTitle = await getArrayItem(\n [true, false, false, false, false, false, false],\n replyNumberSeed.increment(),\n );\n if (hasTitle) {\n replyContent.title = await getArrayItem(commentTitles, replyNumberSeed.increment());\n }\n\n return replyContent;\n};\n\nconst getCommunityContent = async (seed: string) => {\n const communityNumberSeed = SeedIncrementer(await getNumberHash(seed));\n const community: any = {\n pubsubTopic: await seedToCid(communityNumberSeed.seed),\n };\n\n const hasChallengeTypes = await getArrayItem([true, false], communityNumberSeed.increment());\n if (hasChallengeTypes) {\n community.challengeTypes = [\"image\"];\n }\n\n const hasRoles = await getArrayItem([true, false], communityNumberSeed.increment());\n if (hasRoles) {\n community.roles = {\n [await getAuthorAddress(communityNumberSeed.increment())]: { role: \"owner\" },\n [await getAuthorAddress(communityNumberSeed.increment())]: { role: \"admin\" },\n [await getAuthorAddress(communityNumberSeed.increment())]: { role: \"moderator\" },\n [await getAuthorAddress(communityNumberSeed.increment())]: { role: \"moderator\" },\n [await getAuthorAddress(communityNumberSeed.increment())]: { role: \"moderator\" },\n [await getAuthorAddress(communityNumberSeed.increment())]: { role: \"moderator\" },\n [await getAuthorAddress(communityNumberSeed.increment())]: { role: \"moderator\" },\n [await getAuthorAddress(communityNumberSeed.increment())]: { role: \"moderator\" },\n };\n }\n\n const title = await getArrayItem(\n [undefined, ...communityTitles],\n communityNumberSeed.increment(),\n );\n if (title) {\n community.title = title;\n }\n const description = await getArrayItem(\n [undefined, ...communityDescriptions],\n communityNumberSeed.increment(),\n );\n if (description) {\n community.description = description;\n }\n\n const hasPostFlairs = await getArrayItem([true, false], communityNumberSeed.increment());\n if (hasPostFlairs) {\n community.flairs = { post: postFlairs };\n }\n const hasAuthorFlairs = await getArrayItem([true, false], communityNumberSeed.increment());\n if (hasAuthorFlairs) {\n community.flairs = { post: community.flairs?.post, author: authorFlairs };\n }\n\n const hasSuggested = await getArrayItem([true, false], communityNumberSeed.increment());\n if (hasSuggested) {\n community.suggested = {\n primaryColor: (await getArrayItem(postFlairs, communityNumberSeed.increment()))\n .backgroundColor,\n secondaryColor: (await getArrayItem(postFlairs, communityNumberSeed.increment()))\n .backgroundColor,\n avatarUrl: await getArrayItem(\n [undefined, await getImageUrl(communityNumberSeed.increment())],\n communityNumberSeed.increment(),\n ),\n bannerUrl: await getArrayItem(\n [undefined, await getImageUrl(communityNumberSeed.increment())],\n communityNumberSeed.increment(),\n ),\n backgroundUrl: await getArrayItem(\n [undefined, await getImageUrl(communityNumberSeed.increment())],\n communityNumberSeed.increment(),\n ),\n language: await getArrayItem(\n [undefined, undefined, \"en\", \"en\", \"es\", \"ru\"],\n communityNumberSeed.increment(),\n ),\n };\n }\n\n const hasFeatures = await getArrayItem([true, false], communityNumberSeed.increment());\n if (hasFeatures) {\n community.features = {\n noVideos: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noSpoilers: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noImages: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noVideoReplies: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noSpoilerReplies: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noImageReplies: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noPolls: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noCrossposts: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noUpvotes: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noDownvotes: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noAuthors: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n anonymousAuthors: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noNestedReplies: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n safeForWork: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n authorFlairs: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n requireAuthorFlairs: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n postFlairs: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n requirePostFlairs: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noMarkdownImages: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n noMarkdownVideos: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n markdownImageReplies: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n markdownVideoReplies: await getArrayItem(\n [undefined, undefined, true, false],\n communityNumberSeed.increment(),\n ),\n };\n }\n\n const hasRules = await getArrayItem([true, false], communityNumberSeed.increment());\n if (hasRules) {\n community.rules = [\n \"no spam\",\n \"be nice\",\n \"Do not link to CNN.\",\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\",\n \"OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO \",\n ];\n }\n\n const isOnline = await getArrayItem([true, false], communityNumberSeed.increment());\n if (isOnline) {\n // updated in last 1h\n community.updatedAt =\n Math.round(Date.now() / 1000) -\n (await getNumberBetween(1, 60 * 60, communityNumberSeed.increment()));\n } else {\n // updated in last month\n community.updatedAt =\n Math.round(Date.now() / 1000) -\n (await getNumberBetween(60 * 60, 60 * 60 * 24 * 30, communityNumberSeed.increment()));\n }\n community.createdAt =\n community.updatedAt -\n (await getNumberBetween(1, 60 * 60 * 24 * 3000, communityNumberSeed.increment()));\n\n return community;\n};\n\n// for debugging slow bulk reply generation\nlet replyLoopCount = 0;\n\nconst getCommentUpdateContent = async (comment: any) => {\n const commentUpdateSeedNumber = SeedIncrementer(await getNumberHash(comment.cid));\n const upvotesPerUpdate = await getNumberBetween(1, 1000, commentUpdateSeedNumber.increment());\n const downvotesPerUpdate = await getNumberBetween(1, 1000, commentUpdateSeedNumber.increment());\n\n const commentUpdateContent: any = {};\n // simulate finding vote counts on an IPNS record\n commentUpdateContent.upvoteCount =\n typeof comment.upvoteCount === \"number\"\n ? comment.upvoteCount + upvotesPerUpdate\n : upvotesPerUpdate;\n commentUpdateContent.downvoteCount =\n typeof comment.downvoteCount === \"number\"\n ? comment.downvoteCount + downvotesPerUpdate\n : downvotesPerUpdate;\n\n // find the number of replies\n commentUpdateContent.replyCount = 0;\n const hasReplies = await getArrayItem(\n [true, false, false, false],\n commentUpdateSeedNumber.increment(),\n );\n if (hasReplies) {\n commentUpdateContent.replyCount = await getNumberBetween(\n 0,\n 30,\n commentUpdateSeedNumber.increment(),\n );\n if (comment.depth > 0) {\n commentUpdateContent.replyCount = commentUpdateContent.replyCount / (comment.depth + 1) ** 2;\n }\n if (commentUpdateContent.replyCount < 1) {\n commentUpdateContent.replyCount = 0;\n }\n commentUpdateContent.replyCount = Math.round(commentUpdateContent.replyCount);\n }\n\n // simulate finding replies from IPNS record\n commentUpdateContent.replies = new Pages({ comment });\n commentUpdateContent.replies.pages.best = { nextCid: undefined, comments: [] };\n const getReplyContentOptions = {\n depth: comment.depth + 1,\n parentCid: comment.cid,\n postCid: comment.cid,\n };\n let replyCount = commentUpdateContent.replyCount;\n const replyCids: any = new Set();\n while (replyCount-- > 0) {\n // console.log({replyLoopCount: replyLoopCount++, replyCount: commentUpdateContent.replyCount, depth: comment.depth, cid: comment.cid, index: replyCount})\n const cid = await seedToCid(await getNumberHash(comment.cid + replyCount));\n const replyContent = await getReplyContent(\n getReplyContentOptions,\n cid + \"replycontent\" + replyCount,\n );\n const reply = {\n cid,\n shortCid: cid.substring(2, 14),\n timestamp: await getNumberBetween(\n comment.timestamp,\n NOW,\n commentUpdateSeedNumber.increment(),\n ),\n ...replyContent,\n communityAddress: comment.communityAddress || \"memes.eth\",\n };\n if (replyCids.has(reply.cid)) {\n console.error(`mock content error: duplicate reply cid '${reply.cid}'`);\n }\n replyCids.add(reply.cid);\n const replyUpdateContent = await getCommentUpdateContent(reply);\n commentUpdateContent.replies.pages.best.comments.push({ ...reply, ...replyUpdateContent });\n }\n\n // if post with lots of replies, add replies pages\n if (commentUpdateContent.replyCount >= 15 && comment.depth === 0) {\n commentUpdateContent.replies.pages.best.nextCid = await seedToCid(\n await getNumberHash(comment.cid + \"bestpagecid2\"),\n );\n commentUpdateContent.replies.pageCids = {\n new: await seedToCid(await getNumberHash(comment.cid + \"newpagecid\")),\n old: await seedToCid(await getNumberHash(comment.cid + \"oldpagecid\")),\n };\n }\n\n const rareTrue = [\n true,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n ];\n\n const isSpoiler = await getArrayItem(rareTrue, commentUpdateSeedNumber.increment());\n if (isSpoiler) {\n commentUpdateContent.spoiler = true;\n }\n\n const isEdited = await getArrayItem(rareTrue, commentUpdateSeedNumber.increment());\n if (isEdited && !comment.edit) {\n commentUpdateContent.edit = {\n commentCid: comment.cid,\n timestamp: comment.timestamp + 60 * 30,\n reason: \"I wanted to know why the downvotes?\",\n author: comment.author,\n };\n commentUpdateContent.original = {\n content: comment.content,\n };\n commentUpdateContent.content = (comment.content || \"\") + \" WHY DOWNVOTES!?\";\n }\n\n const isDeleted = await getArrayItem(rareTrue, commentUpdateSeedNumber.increment());\n const isPinned = await getArrayItem(rareTrue, commentUpdateSeedNumber.increment());\n const isRemoved = await getArrayItem(rareTrue, commentUpdateSeedNumber.increment());\n const isLocked = await getArrayItem(rareTrue, commentUpdateSeedNumber.increment());\n const isPurged = await getArrayItem(rareTrue, commentUpdateSeedNumber.increment());\n\n if (isDeleted) {\n commentUpdateContent.deleted = true;\n } else if (isPinned) {\n commentUpdateContent.pinned = true;\n } else if (isRemoved) {\n commentUpdateContent.removed = true;\n const hasReason = await getArrayItem([true, false], commentUpdateSeedNumber.increment());\n if (hasReason) {\n commentUpdateContent.reason = await getArrayItem(\n reasons,\n commentUpdateSeedNumber.increment(),\n );\n }\n } else if (isLocked && comment.depth === 0) {\n commentUpdateContent.locked = true;\n const hasReason = await getArrayItem([true, false], commentUpdateSeedNumber.increment());\n if (hasReason) {\n commentUpdateContent.reason = await getArrayItem(\n reasons,\n commentUpdateSeedNumber.increment(),\n );\n }\n } else if (isPurged) {\n commentUpdateContent.purged = true;\n const hasReason = await getArrayItem([true, false], commentUpdateSeedNumber.increment());\n if (hasReason) {\n commentUpdateContent.reason = await getArrayItem(\n reasons,\n commentUpdateSeedNumber.increment(),\n );\n }\n }\n\n commentUpdateContent.updatedAt = Math.round(Date.now() / 1000);\n\n return commentUpdateContent;\n};\n\nconst pageCommentCids: any = new Set();\nconst getCommentsPage = async (pageCid: string, communityOrComment: any) => {\n const communityAddress = communityOrComment.address || communityOrComment.communityAddress;\n const commentsPageSeedNumber = SeedIncrementer(await getNumberHash(pageCid));\n const page: any = {\n nextCid: await seedToCid(commentsPageSeedNumber.increment()),\n comments: [],\n };\n const postCount = 100;\n let index = 0;\n const pkc = new PKC();\n while (index++ < postCount) {\n const cid = await seedToCid(await getNumberHash(pageCid + index));\n // debug message\n if (pageCommentCids.has(cid)) {\n console.error(`mock content error: duplicate page comment cid '${cid}'`);\n }\n pageCommentCids.add(cid);\n // comment = {...comment, ...(await getPostContent(comment.cid)), ...(await getCommentUpdateContent(comment))}\n const comment: any = await pkc.getComment({ cid });\n comment.communityAddress = communityAddress;\n const commentUpdateContent: any = await getCommentUpdateContent(comment);\n for (const prop in commentUpdateContent) {\n comment[prop] = commentUpdateContent[prop];\n }\n page.comments.push(comment);\n }\n return page;\n};\n\n// array of communities probably created by the user\nconst createdCommunities: any = {};\n\nclass NameResolverClient extends EventEmitter {\n state = \"stopped\";\n}\n\nclass PKC extends EventEmitter {\n nameResolvers: any[];\n _clientsManager: {\n clients: {\n nameResolvers: { [resolverKey: string]: NameResolverClient };\n };\n };\n\n constructor(options: any = {}) {\n super();\n this.nameResolvers = options?.nameResolvers || [];\n this._clientsManager = {\n clients: {\n nameResolvers: this.nameResolvers.reduce(\n (resolverClients: { [resolverKey: string]: NameResolverClient }, resolver: any) => ({\n ...resolverClients,\n [resolver.key]: new NameResolverClient(),\n }),\n {},\n ),\n },\n };\n }\n\n async createSigner() {\n return {\n privateKey: \"private key\",\n address: await getCidHash(String(Math.random())),\n };\n }\n\n async resolveAuthorAddress(options: { address: string }) {\n const resolver = this.nameResolvers.find((nameResolver) =>\n nameResolver?.canResolve?.({ name: options.address }),\n );\n const resolverClient = resolver && this._clientsManager.clients.nameResolvers[resolver.key];\n if (resolverClient) {\n resolverClient.state = \"resolving-author-name\";\n resolverClient.emit(\"statechange\", resolverClient.state);\n }\n await new Promise((resolve) => setTimeout(resolve, 10));\n if (resolverClient) {\n resolverClient.state = \"stopped\";\n resolverClient.emit(\"statechange\", resolverClient.state);\n }\n return \"resolved author address\";\n }\n async resolveAuthorName(\n options: PkcResolveAuthorNameOptions,\n ): Promise<PkcResolveAuthorNameResult> {\n const resolvedAuthorName = await this.resolveAuthorAddress({ address: options.name });\n return { resolvedAuthorName };\n }\n\n async createCommunity(createCommunityOptions: any) {\n const communityIdentifier =\n createCommunityOptions?.address ||\n createCommunityOptions?.name ||\n createCommunityOptions?.publicKey;\n\n // if the only argument is {address}, the user didn't create the sub, it's a fetched sub\n if (createCommunityOptions?.address && Object.keys(createCommunityOptions).length === 1) {\n return new Community(createCommunityOptions);\n }\n\n const signer = await this.createSigner();\n const community = new Community({ signer, ...createCommunityOptions });\n\n // keep a list of communities the user probably created himself to use with pkc.communities\n if (!communityIdentifier) {\n createdCommunities[community.address || \"\"] = community;\n }\n\n return community;\n }\n\n async getCommunity(options: { address: string }) {\n const address = options?.address;\n const createCommunityOptions = { address };\n const community: any = new Community(createCommunityOptions);\n const hotPageCid = await seedToCid(await getNumberHash(address + \"hotpagecid\"));\n community.posts.pages.hot = await getCommentsPage(hotPageCid, community);\n community.posts.pageCids = {\n hot: await seedToCid(await getNumberHash(address + \"hotpagecid2\")),\n topAll: await seedToCid(await getNumberHash(address + \"topallpagecid\")),\n new: await seedToCid(await getNumberHash(address + \"newpagecid\")),\n active: await seedToCid(await getNumberHash(address + \"activepagecid\")),\n };\n\n const communityContent = await getCommunityContent(address);\n // add extra props\n for (const prop in communityContent) {\n community[prop] = communityContent[prop];\n }\n return community;\n }\n\n // TODO: implement event communitieschange\n get communities() {\n const communityAddresses = Object.keys(createdCommunities);\n return communityAddresses;\n }\n\n async createComment(createCommentOptions: any) {\n return new Comment(createCommentOptions);\n }\n\n async getComment(options: { cid: string }) {\n const cid = options?.cid;\n const commentSeedNumber = SeedIncrementer(await getNumberHash(cid + \"getcomment\"));\n let commentContent: any = await getPostContent(cid + \"postcontent\");\n const isReply = cid.endsWith(\"reply\");\n if (isReply) {\n const depth = await getNumberBetween(1, 10, commentSeedNumber.increment());\n const parentCid = await seedToCid(commentSeedNumber.increment());\n const postCid = depth === 1 ? parentCid : await seedToCid(commentSeedNumber.increment());\n const getReplyContentOptions = { depth, parentCid, postCid };\n commentContent = await getReplyContent(getReplyContentOptions, cid + \"replycontent\");\n }\n const createCommentOptions = {\n cid,\n timestamp: await getNumberBetween(NOW - DAY * 30, NOW, commentSeedNumber.increment()),\n communityAddress: \"memes.eth\",\n ...commentContent,\n };\n const comment = new Comment(createCommentOptions);\n // add missing props from createCommentOptions\n for (const prop in createCommentOptions) {\n // @ts-ignore\n comment[prop] = createCommentOptions[prop];\n }\n return comment;\n }\n\n async createVote(publishVoteOptions: any) {\n return new Vote(publishVoteOptions);\n }\n\n async createCommentEdit(publishCommentEditOptions: any) {\n return new CommentEdit(publishCommentEditOptions);\n }\n\n async createCommunityEdit() {\n return new CommunityEdit();\n }\n\n async fetchCid(options: { cid: string }) {\n const cid = options?.cid;\n if (cid?.startsWith(\"statscid\")) {\n return JSON.stringify({\n hourActiveUserCount: 1,\n dayActiveUserCount: 11,\n weekActiveUserCount: 111,\n monthActiveUserCount: 1111,\n yearActiveUserCount: 11111,\n allActiveUserCount: 111111,\n hourPostCount: 2,\n dayPostCount: 22,\n weekPostCount: 222,\n monthPostCount: 2222,\n yearPostCount: 22222,\n allPostCount: 222222,\n });\n }\n throw Error(`pkc.fetchCid not implemented in mock content for cid '${cid}'`);\n }\n\n async pubsubSubscribe(communityAddress: string) {}\n async pubsubUnsubscribe(communityAddress: string) {}\n\n clients = (() => {\n const pkcRpcClients = {\n \"http://localhost:9138\": new PkcRpcClient(),\n };\n return {\n pkcRpcClients,\n };\n })();\n\n async validateComment(comment: any, validateCommentOptions: any) {}\n}\n\nclass PkcRpcClient extends EventEmitter {\n state = \"connecting\";\n settings: any = undefined;\n constructor() {\n super();\n // simulate connecting to the rpc\n setTimeout(() => {\n this.state = \"connected\";\n this.settings = { challenges: { \"text-math\": {} } };\n this.emit(\"statechange\", this.state);\n this.emit(\"settingschange\", this.settings);\n }, 5000);\n }\n\n async setSettings(settings: any) {\n this.settings = settings;\n this.emit(\"settingschange\", this.settings);\n }\n}\n\nclass Pages {\n pageCids: any = {};\n pages: any = {};\n community: any;\n comment: any;\n\n constructor(pagesOptions?: any) {\n Object.defineProperty(this, \"community\", {\n value: pagesOptions?.community,\n enumerable: false,\n });\n Object.defineProperty(this, \"comment\", { value: pagesOptions?.comment, enumerable: false });\n }\n\n async getPage(options: { cid: string }) {\n const cid = options?.cid;\n // need to wait twice otherwise react renders too fast and fetches too many pages in advance\n await simulateLoadingTime();\n return getCommentsPage(cid, this.community || this.comment);\n }\n\n async validatePage(page: any) {}\n}\n\nclass Community extends EventEmitter {\n address: string | undefined;\n title: string | undefined;\n description: string | undefined;\n pageCids: any;\n posts: Pages;\n pubsubTopic: string | undefined;\n createdAt: number | undefined;\n updatedAt: number | undefined;\n challengeTypes: string[] | undefined;\n roles: any | undefined;\n flairs: any | undefined;\n suggested: any | undefined;\n features: any | undefined;\n rules: string[] | undefined;\n signer: any | undefined;\n shortAddress: string | undefined;\n statsCid: string | undefined;\n _getCommunityOnFirstUpdate = false;\n updatingState: string | undefined;\n\n constructor(createCommunityOptions?: any) {\n super();\n this.address =\n createCommunityOptions?.address ||\n createCommunityOptions?.name ||\n createCommunityOptions?.publicKey;\n this.pubsubTopic = createCommunityOptions?.pubsubTopic;\n this.createdAt = createCommunityOptions?.createdAt;\n this.updatedAt = createCommunityOptions?.updatedAt;\n this.challengeTypes = createCommunityOptions?.challengeTypes;\n this.roles = createCommunityOptions?.roles;\n this.flairs = createCommunityOptions?.flairs;\n this.suggested = createCommunityOptions?.suggested;\n this.features = createCommunityOptions?.features;\n this.rules = createCommunityOptions?.rules;\n this.title = createCommunityOptions?.title;\n this.description = createCommunityOptions?.description;\n this.statsCid = \"statscid\";\n\n for (const prop in createCommunityOptions) {\n if (createCommunityOptions[prop] !== undefined) {\n // @ts-ignore\n this[prop] = createCommunityOptions[prop];\n }\n }\n this.posts = new Pages({ community: this });\n\n // add community.posts from createCommunityOptions\n if (createCommunityOptions?.posts?.pages) {\n this.posts.pages = createCommunityOptions?.posts?.pages;\n }\n if (createCommunityOptions?.posts?.pageCids) {\n this.posts.pageCids = createCommunityOptions?.posts?.pageCids;\n }\n\n if (!this.address && this.signer?.address) {\n this.address = this.signer.address;\n }\n this.shortAddress = this.address?.endsWith(\".eth\")\n ? this.address\n : this.address?.substring(8, 20);\n\n Object.defineProperty(this, \"updating\", { enumerable: false, writable: true });\n // @ts-ignore\n this.updating = false;\n\n // if the only argument is {address}, it means the first update should use getCommunity()\n if (createCommunityOptions?.address && Object.keys(createCommunityOptions).length === 1) {\n this._getCommunityOnFirstUpdate = true;\n }\n }\n\n async edit(editCommunityOptions: any) {\n assert(\n editCommunityOptions && typeof editCommunityOptions === \"object\",\n `invalid editCommunityOptions '${editCommunityOptions}'`,\n );\n for (const prop in editCommunityOptions) {\n if (editCommunityOptions[prop] !== undefined) {\n // @ts-ignore\n this[prop] = editCommunityOptions[prop];\n }\n }\n }\n\n async update() {\n if (!this.address) {\n throw Error(`can't update without community.address`);\n }\n // don't update twice\n // @ts-ignore\n if (this.updating) {\n return;\n }\n // @ts-ignore\n this.updating = true;\n this.updatingState = \"fetching-ipns\";\n this.emit(\"updatingstatechange\", \"fetching-ipns\");\n simulateLoadingTime().then(() => {\n this.simulateUpdateEvent();\n });\n }\n\n async delete() {\n if (this.address) {\n delete createdCommunities[this.address];\n }\n }\n\n simulateUpdateEvent() {\n if (this._getCommunityOnFirstUpdate) {\n return this.simulateGetCommunityOnFirstUpdateEvent();\n }\n this.emit(\"update\", this);\n }\n\n async simulateGetCommunityOnFirstUpdateEvent() {\n this._getCommunityOnFirstUpdate = false;\n\n // @ts-ignore\n const community = await new PKC().getCommunity({ address: this.address });\n const props = JSON.parse(JSON.stringify(community));\n for (const prop in props) {\n if (prop.startsWith(\"_\")) {\n continue;\n }\n // @ts-ignore\n this[prop] = props[prop];\n }\n this.posts.getPage = community.posts.getPage;\n this.updatingState = \"succeeded\";\n this.emit(\"update\", this);\n this.emit(\"updatingstatechange\", \"succeeded\");\n\n this.simulateUpdateEvent();\n }\n}\n\nlet challengeRequestCount = 0;\nlet challengeAnswerCount = 0;\n\nclass Publication extends EventEmitter {\n timestamp: number | undefined;\n content: string | undefined;\n cid: string | undefined;\n title: string | undefined;\n link: string | undefined;\n challengeRequestId!: string;\n challengeAnswerId!: string;\n\n constructor() {\n super();\n Object.defineProperty(this, \"challengeRequestId\", { enumerable: false, writable: true });\n Object.defineProperty(this, \"challengeAnswerId\", { enumerable: false, writable: true });\n this.challengeRequestId = `r${++challengeRequestCount}`;\n this.challengeAnswerId = `a${++challengeAnswerCount}`;\n }\n\n async publish() {\n await simulateLoadingTime();\n await this.simulateChallengeEvent();\n }\n\n async simulateChallengeEvent() {\n const challenges: any = [];\n const challengeCount = await getNumberBetween(\n 1,\n 3,\n await getNumberHash(this.challengeRequestId),\n );\n while (challenges.length < challengeCount) {\n challenges.push({ type: \"image/png\", challenge: captchaImageBase64 });\n }\n const challengeMessage = {\n type: \"CHALLENGE\",\n challengeRequestId: this.challengeRequestId,\n challenges,\n };\n this.emit(\"challenge\", challengeMessage, this);\n }\n\n async publishChallengeAnswers(challengeAnswers: string[]) {\n await simulateLoadingTime();\n this.simulateChallengeVerificationEvent();\n }\n\n async simulateChallengeVerificationEvent() {\n // if publication has content, create cid for this content and add it to comment and challengeVerificationMessage\n const cidSeed = `${this.content ?? \"\"}${this.title ?? \"\"}${this.link ?? \"\"}`;\n this.cid = cidSeed.length > 0 ? await getCidHash(`${cidSeed}cid`) : undefined;\n const commentUpdate = this.cid && { cid: this.cid };\n\n const challengeVerificationMessage = {\n type: \"CHALLENGEVERIFICATION\",\n challengeRequestId: this.challengeRequestId,\n challengeAnswerId: this.challengeAnswerId,\n challengeSuccess: true,\n commentUpdate,\n };\n this.emit(\"challengeverification\", challengeVerificationMessage, this);\n }\n\n stop() {\n if ((this as any).updating || (this as any).updatingState !== \"stopped\") {\n (this as any).state = \"stopped\";\n (this as any).updating = false;\n (this as any).updatingState = \"stopped\";\n this.emit(\"statechange\", \"stopped\");\n this.emit(\"updatingstatechange\", \"stopped\");\n }\n }\n}\n\nclass Comment extends Publication {\n author: any;\n updating: boolean;\n upvoteCount: number | undefined;\n downvoteCount: number | undefined;\n content: string | undefined;\n parentCid: string | undefined;\n replies: any;\n replyCount: number | undefined;\n postCid: string | undefined;\n depth: number | undefined;\n spoiler: boolean | undefined;\n flair: any | undefined;\n pinned: boolean | undefined;\n locked: boolean | undefined;\n deleted: boolean | undefined;\n removed: boolean | undefined;\n purged: boolean | undefined;\n edit: any;\n original: any;\n reason: string | undefined;\n shortCid: string | undefined;\n _getCommentOnFirstUpdate = false;\n updatingState: string | undefined;\n communityAddress: string | undefined;\n shortCommunityAddress: string | undefined;\n\n constructor(createCommentOptions?: any) {\n super();\n this.cid = createCommentOptions?.cid;\n this.upvoteCount = createCommentOptions?.upvoteCount;\n this.downvoteCount = createCommentOptions?.downvoteCount;\n this.content = createCommentOptions?.content;\n this.author = createCommentOptions?.author;\n this.timestamp = createCommentOptions?.timestamp;\n this.parentCid = createCommentOptions?.parentCid;\n this.postCid = createCommentOptions?.postCid;\n this.parentCid = createCommentOptions?.parentCid;\n this.depth = createCommentOptions?.depth;\n this.spoiler = createCommentOptions?.spoiler;\n this.flair = createCommentOptions?.flair;\n this.pinned = createCommentOptions?.pinned;\n this.locked = createCommentOptions?.locked;\n this.deleted = createCommentOptions?.deleted;\n this.removed = createCommentOptions?.removed;\n this.purged = createCommentOptions?.purged;\n this.reason = createCommentOptions?.reason;\n this.replies = new Pages({ comment: this });\n if (this.cid) {\n this.shortCid = this.cid.substring(2, 14);\n }\n\n Object.defineProperty(this, \"updating\", { enumerable: false, writable: true });\n // @ts-ignore\n this.updating = false;\n\n // add missing props from createCommentOptions\n for (const prop in createCommentOptions) {\n // @ts-ignore\n this[prop] = createCommentOptions[prop];\n }\n\n // if the only argument is {cid}, it means the first update should use getComment()\n if (createCommentOptions?.cid && Object.keys(createCommentOptions).length === 1) {\n this._getCommentOnFirstUpdate = true;\n }\n\n if (this.communityAddress) {\n this.shortCommunityAddress = this.communityAddress.substring(0, 12);\n }\n }\n\n async update() {\n // don't update twice\n // @ts-ignore\n if (this.updating) {\n return;\n }\n // @ts-ignore\n this.updating = true;\n this.updatingState = \"fetching-ipfs\";\n this.emit(\"updatingstatechange\", \"fetching-ipfs\");\n (async () => {\n while (this.updating) {\n await simulateLoadingTime();\n await simulateLoadingTime();\n await simulateLoadingTime();\n if (!this.updating) {\n return;\n }\n this.simulateUpdateEvent();\n }\n })();\n }\n\n async simulateUpdateEvent() {\n if (!this.updating) {\n return;\n }\n assert(this.cid, `invalid comment.cid '${this.cid}' can't simulateUpdateEvent`);\n if (this._getCommentOnFirstUpdate) {\n return this.simulateGetCommentOnFirstUpdateEvent();\n }\n\n const commentUpdateContent = await getCommentUpdateContent(this);\n for (const prop in commentUpdateContent) {\n // @ts-ignore\n this[prop] = commentUpdateContent[prop];\n }\n this.shortCid = this.cid.substring(2, 14);\n this.updatingState = \"succeeded\";\n this.emit(\"update\", this);\n this.emit(\"updatingstatechange\", \"succeeded\");\n }\n\n async simulateGetCommentOnFirstUpdateEvent() {\n if (!this.updating) {\n return;\n }\n this._getCommentOnFirstUpdate = false;\n\n // @ts-ignore\n const comment = await new PKC().getComment({ cid: this.cid });\n if (!this.updating) {\n return;\n }\n const props = JSON.parse(JSON.stringify(comment));\n for (const prop in props) {\n if (prop.startsWith(\"_\")) {\n continue;\n }\n // @ts-ignore\n this[prop] = props[prop];\n }\n this.emit(\"update\", this);\n }\n}\n\nclass Vote extends Publication {\n constructor(publishVoteOptions: any) {\n super();\n for (const prop in publishVoteOptions) {\n // @ts-ignore\n this[prop] = publishVoteOptions[prop];\n }\n }\n}\n\nclass CommentEdit extends Publication {\n constructor(publishCommentEditOptions: any) {\n super();\n for (const prop in publishCommentEditOptions) {\n // @ts-ignore\n this[prop] = publishCommentEditOptions[prop];\n }\n }\n}\n\nclass CommunityEdit extends Publication {}\n\nconst createPkc: any = async (...args: any) => {\n return new PKC(...args);\n};\n\ncreatePkc.getShortAddress = (options: { address: string }) => {\n const address = options?.address;\n if (address.includes(\".\")) {\n return address;\n }\n return address.substring(0, 12);\n};\n\ncreatePkc.getShortCid = (options: { cid: string }) => {\n const cid = options?.cid;\n return cid.substring(0, 12);\n};\n\nexport default createPkc;\n"]}
@@ -1,4 +1,5 @@
1
1
  import EventEmitter from "events";
2
+ import type { PkcResolveAuthorNameOptions, PkcResolveAuthorNameResult } from "../pkc-types.js";
2
3
  export declare const simulateLoadingTime: () => Promise<unknown>;
3
4
  export declare const resetPkcJsMock: () => void;
4
5
  export declare const debugPkcJsMock: () => void;
@@ -18,9 +19,7 @@ export declare class PKC extends EventEmitter {
18
19
  resolveAuthorAddress(options: {
19
20
  address: string;
20
21
  }): Promise<string>;
21
- resolveAuthorName(options: {
22
- address: string;
23
- }): Promise<string>;
22
+ resolveAuthorName(options: PkcResolveAuthorNameOptions): Promise<PkcResolveAuthorNameResult>;
24
23
  createSigner(): Promise<{
25
24
  privateKey: string;
26
25
  address: string;
@@ -1 +1 @@
1
- {"version":3,"file":"pkc-js-mock.d.ts","sourceRoot":"","sources":["../../../src/lib/pkc-js/pkc-js-mock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pkc-js-mock.d.ts","sourceRoot":"","sources":["../../../src/lib/pkc-js/pkc-js-mock.ts"],"names":[],"mappings":"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"}
@@ -64,7 +64,8 @@ export class PKC extends EventEmitter {
64
64
  }
65
65
  resolveAuthorName(options) {
66
66
  return __awaiter(this, void 0, void 0, function* () {
67
- return this.resolveAuthorAddress(options);
67
+ const resolvedAuthorName = yield this.resolveAuthorAddress({ address: options.name });
68
+ return { resolvedAuthorName };
68
69
  });
69
70
  }
70
71
  createSigner() {