From 6f4276d04fa308dc7199a3f9268a0fe3007b79d4 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Mon, 30 Jun 2025 11:05:53 -0700 Subject: [PATCH 01/48] fucking syntax --- JS/expanded.js | 1 + 1 file changed, 1 insertion(+) diff --git a/JS/expanded.js b/JS/expanded.js index 86aa9db..d79406c 100644 --- a/JS/expanded.js +++ b/JS/expanded.js @@ -183,6 +183,7 @@ async function MastodonReplylFunction(ClassName, post) { if (OtherPost.media_attachments.length != 0) { for (let i of OtherPost.media_attachments) { ApplyMedia(i, document.getElementsByClassName("Images " + ClassName)[0]); + } } } return OtherPost; -- 2.45.3 From fdbcf3a1294934a0a2035b7663090b42eb0f956e Mon Sep 17 00:00:00 2001 From: CatAClock Date: Mon, 30 Jun 2025 11:07:45 -0700 Subject: [PATCH 02/48] Revert "fucking syntax" This reverts commit 6f4276d04fa308dc7199a3f9268a0fe3007b79d4. --- JS/expanded.js | 1 - 1 file changed, 1 deletion(-) diff --git a/JS/expanded.js b/JS/expanded.js index d79406c..86aa9db 100644 --- a/JS/expanded.js +++ b/JS/expanded.js @@ -183,7 +183,6 @@ async function MastodonReplylFunction(ClassName, post) { if (OtherPost.media_attachments.length != 0) { for (let i of OtherPost.media_attachments) { ApplyMedia(i, document.getElementsByClassName("Images " + ClassName)[0]); - } } } return OtherPost; -- 2.45.3 From b5ddb10d2b0deaf4d3b2113cdc51fc02b2eb90a2 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Mon, 30 Jun 2025 11:09:21 -0700 Subject: [PATCH 03/48] Fucking syntax --- JS/expanded.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/JS/expanded.js b/JS/expanded.js index 86aa9db..de0866d 100644 --- a/JS/expanded.js +++ b/JS/expanded.js @@ -175,7 +175,7 @@ async function GetPost() { async function MastodonReplylFunction(ClassName, post) { let OtherPost = await MastodonAPI.GetStatus(post); document.getElementsByClassName("Origin " + ClassName)[0].innerHTML = website; - document.getElementsByClassName("Handle " + ClassName)[0].innerHTML = post.account.acct; + document.getElementsByClassName("Handle " + ClassName)[0].innerHTML = OtherPost.account.acct; if (OtherPost.spoiler_text != "") { document.getElementsByClassName("PostText " + ClassName)[0].innerHTML = "WARNING: " + OtherPost.spoiler_text; } else { @@ -183,6 +183,7 @@ async function MastodonReplylFunction(ClassName, post) { if (OtherPost.media_attachments.length != 0) { for (let i of OtherPost.media_attachments) { ApplyMedia(i, document.getElementsByClassName("Images " + ClassName)[0]); + } } } return OtherPost; -- 2.45.3 From 460f44ea7a31458deef33ef52c2b4a75397d7791 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Fri, 4 Jul 2025 18:37:02 -0700 Subject: [PATCH 04/48] fucking hell. But we did it. Backend baby! --- .gitignore | 2 +- Cargo.lock | 1831 +++++++++++++++++ Cargo.toml | 8 + Dockerfile | 17 - docker-compose.yml | 9 - oauth/README.md | 3 - package-lock.json | 544 ----- package.json | 5 - {Audio => src/HTTP/Audio}/button-305770.mp3 | Bin .../HTTP/Audio}/button-pressed-38129.mp3 | Bin .../HTTP/Audio}/soft-piano-music-312509.mp3 | Bin {CSS => src/HTTP/CSS}/account.css | 0 {CSS => src/HTTP/CSS}/expanded.css | 0 {CSS => src/HTTP/CSS}/index.css | 0 {CSS => src/HTTP/CSS}/mail.css | 0 {CSS => src/HTTP/CSS}/post.css | 0 {CSS => src/HTTP/CSS}/setting.css | 0 src/HTTP/HTML/404.html | 14 + {HTML => src/HTTP/HTML}/account.html | 6 +- {HTML => src/HTTP/HTML}/expanded.html | 6 +- index.html => src/HTTP/HTML/index.html | 12 +- {HTML => src/HTTP/HTML}/mail.html | 6 +- {HTML => src/HTTP/HTML}/post.html | 6 +- {HTML => src/HTTP/HTML}/setting.html | 6 +- {Icons => src/HTTP/Icons}/ArrowLeft.png | Bin {Icons => src/HTTP/Icons}/ArrowRight.png | Bin {Icons => src/HTTP/Icons}/Favicon.png | Bin {Icons => src/HTTP/Icons}/IndexBackground.png | Bin .../HTTP/Icons}/IndexBlackBackground.png | Bin {Icons => src/HTTP/Icons}/favicon.ico | Bin {JS => src/HTTP/JS}/BlueskyAPI.js | 0 {JS => src/HTTP/JS}/MastodonAPI.js | 0 {JS => src/HTTP/JS}/TumblrAPI.js | 0 {JS => src/HTTP/JS}/Variables.js | 0 {JS => src/HTTP/JS}/YoutubeAPI.js | 0 {JS => src/HTTP/JS}/account.js | 8 +- {JS => src/HTTP/JS}/expanded.js | 12 +- {JS => src/HTTP/JS}/index.js | 18 +- {JS => src/HTTP/JS}/mail.js | 8 +- {JS => src/HTTP/JS}/post.js | 8 +- {JS => src/HTTP/JS}/setting.js | 10 +- {oauth => src/HTTP}/client-metadata.json | 0 robots.txt => src/HTTP/robots.txt | 0 src/main.rs | 122 ++ 44 files changed, 2029 insertions(+), 632 deletions(-) create mode 100644 Cargo.lock create mode 100644 Cargo.toml delete mode 100644 Dockerfile delete mode 100644 docker-compose.yml delete mode 100644 oauth/README.md delete mode 100644 package-lock.json delete mode 100644 package.json rename {Audio => src/HTTP/Audio}/button-305770.mp3 (100%) rename {Audio => src/HTTP/Audio}/button-pressed-38129.mp3 (100%) rename {Audio => src/HTTP/Audio}/soft-piano-music-312509.mp3 (100%) rename {CSS => src/HTTP/CSS}/account.css (100%) rename {CSS => src/HTTP/CSS}/expanded.css (100%) rename {CSS => src/HTTP/CSS}/index.css (100%) rename {CSS => src/HTTP/CSS}/mail.css (100%) rename {CSS => src/HTTP/CSS}/post.css (100%) rename {CSS => src/HTTP/CSS}/setting.css (100%) create mode 100644 src/HTTP/HTML/404.html rename {HTML => src/HTTP/HTML}/account.html (88%) rename {HTML => src/HTTP/HTML}/expanded.html (89%) rename index.html => src/HTTP/HTML/index.html (95%) rename {HTML => src/HTTP/HTML}/mail.html (82%) rename {HTML => src/HTTP/HTML}/post.html (90%) rename {HTML => src/HTTP/HTML}/setting.html (91%) rename {Icons => src/HTTP/Icons}/ArrowLeft.png (100%) rename {Icons => src/HTTP/Icons}/ArrowRight.png (100%) rename {Icons => src/HTTP/Icons}/Favicon.png (100%) rename {Icons => src/HTTP/Icons}/IndexBackground.png (100%) rename {Icons => src/HTTP/Icons}/IndexBlackBackground.png (100%) rename {Icons => src/HTTP/Icons}/favicon.ico (100%) rename {JS => src/HTTP/JS}/BlueskyAPI.js (100%) rename {JS => src/HTTP/JS}/MastodonAPI.js (100%) rename {JS => src/HTTP/JS}/TumblrAPI.js (100%) rename {JS => src/HTTP/JS}/Variables.js (100%) rename {JS => src/HTTP/JS}/YoutubeAPI.js (100%) rename {JS => src/HTTP/JS}/account.js (96%) rename {JS => src/HTTP/JS}/expanded.js (97%) rename {JS => src/HTTP/JS}/index.js (97%) rename {JS => src/HTTP/JS}/mail.js (90%) rename {JS => src/HTTP/JS}/post.js (96%) rename {JS => src/HTTP/JS}/setting.js (94%) rename {oauth => src/HTTP}/client-metadata.json (100%) rename robots.txt => src/HTTP/robots.txt (100%) create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore index 07e6e47..ea8c4bf 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -/node_modules +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..8ecd51e --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,1831 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "CrowdedGames" +version = "1.1.0" +dependencies = [ + "postgres", + "rouille", +] + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ascii" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16" + +[[package]] +name = "async-trait" +version = "0.1.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "brotli" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d640d25bc63c50fb1f0b545ffd80207d2e10a4c965530809b40ba3386825c391" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "buf_redux" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b953a6887648bb07a535631f2bc00fbdb2a2216f135552cb3f534ed136b9c07f" +dependencies = [ + "memchr", + "safemem", +] + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cc" +version = "1.2.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ad45f4f74e4e20eaa392913b7b33a7091c87e59628f4dd27888205ad888843c" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "chrono" +version = "0.4.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "windows-link", +] + +[[package]] +name = "chunked_transfer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4de3bc4ea267985becf712dc6d9eed8b04c953b3fcfb339ebc87acd9804901" + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "deflate" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c86f7e25f518f4b81808a2cf1c50996a61f5c2eb394b2393bd87f2a4780a432f" +dependencies = [ + "adler32", + "gzip-header", +] + +[[package]] +name = "deranged" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "errno" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "filetime" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +dependencies = [ + "cfg-if", + "libc", + "libredox", + "windows-sys 0.59.0", +] + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-macro", + "futures-sink", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "gzip-header" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95cc527b92e6029a62960ad99aa8a6660faa4555fe5f731aab13aa6a921795a2" +dependencies = [ + "crc32fast", +] + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "iana-time-zone" +version = "0.1.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "io-uring" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013" +dependencies = [ + "bitflags", + "cfg-if", + "libc", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "libc" +version = "0.2.174" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" + +[[package]] +name = "libredox" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638" +dependencies = [ + "bitflags", + "libc", + "redox_syscall", +] + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "multipart" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00dec633863867f29cb39df64a397cdf4a6354708ddd7759f70c7fb51c5f9182" +dependencies = [ + "buf_redux", + "httparse", + "log", + "mime", + "mime_guess", + "quick-error", + "rand 0.8.5", + "safemem", + "tempfile", + "twoway", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "postgres" +version = "0.19.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "363e6dfbdd780d3aa3597b6eb430db76bb315fa9bad7fae595bb8def808b8470" +dependencies = [ + "bytes", + "fallible-iterator", + "futures-util", + "log", + "tokio", + "tokio-postgres", +] + +[[package]] +name = "postgres-protocol" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ff0abab4a9b844b93ef7b81f1efc0a366062aaef2cd702c76256b5dc075c54" +dependencies = [ + "base64 0.22.1", + "byteorder", + "bytes", + "fallible-iterator", + "hmac", + "md-5", + "memchr", + "rand 0.9.1", + "sha2", + "stringprep", +] + +[[package]] +name = "postgres-types" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613283563cd90e1dfc3518d548caee47e0e725455ed619881f5cf21f36de4b48" +dependencies = [ + "bytes", + "fallible-iterator", + "postgres-protocol", +] + +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", +] + +[[package]] +name = "redox_syscall" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +dependencies = [ + "bitflags", +] + +[[package]] +name = "rouille" +version = "3.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3716fbf57fc1084d7a706adf4e445298d123e4a44294c4e8213caf1b85fcc921" +dependencies = [ + "base64 0.13.1", + "brotli", + "chrono", + "deflate", + "filetime", + "multipart", + "percent-encoding", + "rand 0.8.5", + "serde", + "serde_derive", + "serde_json", + "sha1_smol", + "threadpool", + "time", + "tiny_http", + "url", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" + +[[package]] +name = "rustix" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustversion" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "safemem" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "sha1_smol" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "slab" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "stringprep" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" +dependencies = [ + "unicode-bidi", + "unicode-normalization", + "unicode-properties", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "time" +version = "0.3.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +dependencies = [ + "deranged", + "libc", + "num-conv", + "num_threads", + "powerfmt", + "serde", + "time-core", +] + +[[package]] +name = "time-core" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" + +[[package]] +name = "tiny_http" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389915df6413a2e74fb181895f933386023c71110878cd0825588928e64cdc82" +dependencies = [ + "ascii", + "chunked_transfer", + "httpdate", + "log", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.46.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17" +dependencies = [ + "backtrace", + "bytes", + "io-uring", + "libc", + "mio", + "pin-project-lite", + "slab", + "socket2", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-postgres" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c95d533c83082bb6490e0189acaa0bbeef9084e60471b696ca6988cd0541fb0" +dependencies = [ + "async-trait", + "byteorder", + "bytes", + "fallible-iterator", + "futures-channel", + "futures-util", + "log", + "parking_lot", + "percent-encoding", + "phf", + "pin-project-lite", + "postgres-protocol", + "postgres-types", + "rand 0.9.1", + "socket2", + "tokio", + "tokio-util", + "whoami", +] + +[[package]] +name = "tokio-util" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "twoway" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59b11b2b5241ba34be09c3cc85a36e56e48f9888862e19cedf23336d35316ed1" +dependencies = [ + "memchr", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "unicase" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + +[[package]] +name = "unicode-bidi" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-normalization" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-properties" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "whoami" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6994d13118ab492c3c80c1f81928718159254c53c472bf9ce36f8dae4add02a7" +dependencies = [ + "redox_syscall", + "wasite", + "web-sys", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.2", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags", +] + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..1a5b20e --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "CrowdedGames" +version = "1.1.0" +edition = "2024" + +[dependencies] +rouille = "3.6.2" +postgres = "0.19.10" diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 1bb6fe6..0000000 --- a/Dockerfile +++ /dev/null @@ -1,17 +0,0 @@ -# get a base -FROM node:22-bookworm - -# place the files into the image -WORKDIR /app -COPY . /app - -# Dependencies -RUN apt update -RUN apt install npm -y -RUN npm install http-server - -# Expose the port from docker-compose.yml -EXPOSE 4000 - -# Run the thing -CMD npx http-server /app --port 4000 --cors diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index f7eaafa..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,9 +0,0 @@ -services: - channelviewer: - restart: unless-stopped - build: - context: . - dockerfile: Dockerfile - image: channelviewer:latest - ports: - - 4000:4000 diff --git a/oauth/README.md b/oauth/README.md deleted file mode 100644 index d251bc4..0000000 --- a/oauth/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Bluesky stuff. - -Yeah. diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index d06be41..0000000 --- a/package-lock.json +++ /dev/null @@ -1,544 +0,0 @@ -{ - "name": "Fedi.CrowdedGames.Group", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "dependencies": { - "http-server": "^14.1.1" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" - }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/corser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", - "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "bin": { - "he": "bin/he" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-server": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", - "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", - "dependencies": { - "basic-auth": "^2.0.1", - "chalk": "^4.1.2", - "corser": "^2.0.1", - "he": "^1.2.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy": "^1.18.1", - "mime": "^1.6.0", - "minimist": "^1.2.6", - "opener": "^1.5.1", - "portfinder": "^1.0.28", - "secure-compare": "3.0.1", - "union": "~0.5.0", - "url-join": "^4.0.1" - }, - "bin": { - "http-server": "bin/http-server" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "bin": { - "opener": "bin/opener-bin.js" - } - }, - "node_modules/portfinder": { - "version": "1.0.36", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.36.tgz", - "integrity": "sha512-gMKUzCoP+feA7t45moaSx7UniU7PgGN3hA8acAB+3Qn7/js0/lJ07fYZlxt9riE9S3myyxDCyAFzSrLlta0c9g==", - "dependencies": { - "async": "^3.2.6", - "debug": "^4.3.6" - }, - "engines": { - "node": ">= 10.12" - } - }, - "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/secure-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", - "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==" - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/union": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", - "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", - "dependencies": { - "qs": "^6.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" - }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index f72c21f..0000000 --- a/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "dependencies": { - "http-server": "^14.1.1" - } -} diff --git a/Audio/button-305770.mp3 b/src/HTTP/Audio/button-305770.mp3 similarity index 100% rename from Audio/button-305770.mp3 rename to src/HTTP/Audio/button-305770.mp3 diff --git a/Audio/button-pressed-38129.mp3 b/src/HTTP/Audio/button-pressed-38129.mp3 similarity index 100% rename from Audio/button-pressed-38129.mp3 rename to src/HTTP/Audio/button-pressed-38129.mp3 diff --git a/Audio/soft-piano-music-312509.mp3 b/src/HTTP/Audio/soft-piano-music-312509.mp3 similarity index 100% rename from Audio/soft-piano-music-312509.mp3 rename to src/HTTP/Audio/soft-piano-music-312509.mp3 diff --git a/CSS/account.css b/src/HTTP/CSS/account.css similarity index 100% rename from CSS/account.css rename to src/HTTP/CSS/account.css diff --git a/CSS/expanded.css b/src/HTTP/CSS/expanded.css similarity index 100% rename from CSS/expanded.css rename to src/HTTP/CSS/expanded.css diff --git a/CSS/index.css b/src/HTTP/CSS/index.css similarity index 100% rename from CSS/index.css rename to src/HTTP/CSS/index.css diff --git a/CSS/mail.css b/src/HTTP/CSS/mail.css similarity index 100% rename from CSS/mail.css rename to src/HTTP/CSS/mail.css diff --git a/CSS/post.css b/src/HTTP/CSS/post.css similarity index 100% rename from CSS/post.css rename to src/HTTP/CSS/post.css diff --git a/CSS/setting.css b/src/HTTP/CSS/setting.css similarity index 100% rename from CSS/setting.css rename to src/HTTP/CSS/setting.css diff --git a/src/HTTP/HTML/404.html b/src/HTTP/HTML/404.html new file mode 100644 index 0000000..5157cd5 --- /dev/null +++ b/src/HTTP/HTML/404.html @@ -0,0 +1,14 @@ + + + + The Fediverse + + + + + + +

No.

+ + + diff --git a/HTML/account.html b/src/HTTP/HTML/account.html similarity index 88% rename from HTML/account.html rename to src/HTTP/HTML/account.html index 102fe34..66f011c 100644 --- a/HTML/account.html +++ b/src/HTTP/HTML/account.html @@ -4,9 +4,9 @@ The Fediverse - - - + + + diff --git a/HTML/expanded.html b/src/HTTP/HTML/expanded.html similarity index 89% rename from HTML/expanded.html rename to src/HTTP/HTML/expanded.html index a4acf62..df124eb 100644 --- a/HTML/expanded.html +++ b/src/HTTP/HTML/expanded.html @@ -4,9 +4,9 @@ The Fediverse - - - + + + diff --git a/index.html b/src/HTTP/HTML/index.html similarity index 95% rename from index.html rename to src/HTTP/HTML/index.html index ea47ce9..63f69e8 100644 --- a/index.html +++ b/src/HTTP/HTML/index.html @@ -4,12 +4,12 @@ The Fediverse - - + + - + @@ -296,8 +296,8 @@ - - + +

Setting

@@ -308,6 +308,6 @@
- + diff --git a/HTML/mail.html b/src/HTTP/HTML/mail.html similarity index 82% rename from HTML/mail.html rename to src/HTTP/HTML/mail.html index 10e8c85..c06d22c 100644 --- a/HTML/mail.html +++ b/src/HTTP/HTML/mail.html @@ -4,9 +4,9 @@ The Fediverse - - - + + + diff --git a/HTML/post.html b/src/HTTP/HTML/post.html similarity index 90% rename from HTML/post.html rename to src/HTTP/HTML/post.html index 94e50bf..d1a03e4 100644 --- a/HTML/post.html +++ b/src/HTTP/HTML/post.html @@ -4,9 +4,9 @@ The Fediverse - - - + + + diff --git a/HTML/setting.html b/src/HTTP/HTML/setting.html similarity index 91% rename from HTML/setting.html rename to src/HTTP/HTML/setting.html index d389c1f..afca64d 100644 --- a/HTML/setting.html +++ b/src/HTTP/HTML/setting.html @@ -4,9 +4,9 @@ The Fediverse - - - + + + diff --git a/Icons/ArrowLeft.png b/src/HTTP/Icons/ArrowLeft.png similarity index 100% rename from Icons/ArrowLeft.png rename to src/HTTP/Icons/ArrowLeft.png diff --git a/Icons/ArrowRight.png b/src/HTTP/Icons/ArrowRight.png similarity index 100% rename from Icons/ArrowRight.png rename to src/HTTP/Icons/ArrowRight.png diff --git a/Icons/Favicon.png b/src/HTTP/Icons/Favicon.png similarity index 100% rename from Icons/Favicon.png rename to src/HTTP/Icons/Favicon.png diff --git a/Icons/IndexBackground.png b/src/HTTP/Icons/IndexBackground.png similarity index 100% rename from Icons/IndexBackground.png rename to src/HTTP/Icons/IndexBackground.png diff --git a/Icons/IndexBlackBackground.png b/src/HTTP/Icons/IndexBlackBackground.png similarity index 100% rename from Icons/IndexBlackBackground.png rename to src/HTTP/Icons/IndexBlackBackground.png diff --git a/Icons/favicon.ico b/src/HTTP/Icons/favicon.ico similarity index 100% rename from Icons/favicon.ico rename to src/HTTP/Icons/favicon.ico diff --git a/JS/BlueskyAPI.js b/src/HTTP/JS/BlueskyAPI.js similarity index 100% rename from JS/BlueskyAPI.js rename to src/HTTP/JS/BlueskyAPI.js diff --git a/JS/MastodonAPI.js b/src/HTTP/JS/MastodonAPI.js similarity index 100% rename from JS/MastodonAPI.js rename to src/HTTP/JS/MastodonAPI.js diff --git a/JS/TumblrAPI.js b/src/HTTP/JS/TumblrAPI.js similarity index 100% rename from JS/TumblrAPI.js rename to src/HTTP/JS/TumblrAPI.js diff --git a/JS/Variables.js b/src/HTTP/JS/Variables.js similarity index 100% rename from JS/Variables.js rename to src/HTTP/JS/Variables.js diff --git a/JS/YoutubeAPI.js b/src/HTTP/JS/YoutubeAPI.js similarity index 100% rename from JS/YoutubeAPI.js rename to src/HTTP/JS/YoutubeAPI.js diff --git a/JS/account.js b/src/HTTP/JS/account.js similarity index 96% rename from JS/account.js rename to src/HTTP/JS/account.js index cff9871..62dc8d1 100644 --- a/JS/account.js +++ b/src/HTTP/JS/account.js @@ -1,7 +1,7 @@ -import * as MastodonAPI from "./MastodonAPI.js"; -import * as BlueskyAPI from "./BlueskyAPI.js"; -import * as TumblrAPI from "./TumblrAPI.js"; -import * as Variables from "./Variables.js"; +import * as MastodonAPI from "/JS/MastodonAPI.js"; +import * as BlueskyAPI from "/JS/BlueskyAPI.js"; +import * as TumblrAPI from "/JS/TumblrAPI.js"; +import * as Variables from "/JS/Variables.js"; let website = document.location.href.split("website=")[1]; let post = JSON.parse(localStorage.getItem("post")); diff --git a/JS/expanded.js b/src/HTTP/JS/expanded.js similarity index 97% rename from JS/expanded.js rename to src/HTTP/JS/expanded.js index de0866d..4c697f0 100644 --- a/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -1,7 +1,7 @@ -import * as MastodonAPI from "./MastodonAPI.js"; -import * as BlueskyAPI from "./BlueskyAPI.js"; -import * as TumblrAPI from "./TumblrAPI.js"; -import * as Variables from "./Variables.js"; +import * as MastodonAPI from "/JS/MastodonAPI.js"; +import * as BlueskyAPI from "/JS/BlueskyAPI.js"; +import * as TumblrAPI from "/JS/TumblrAPI.js"; +import * as Variables from "/JS/Variables.js"; // Buttons let Favorite = document.getElementsByClassName("Favorite")[0]; @@ -61,14 +61,14 @@ async function Boostee() { } Reply.onclick = (event) => { - window.location.href = "../../HTML/post.html?website=" + website; + window.location.href = "/post?website=" + website; } // Other post stuff. for (let i of document.getElementsByClassName("Regular")) { i.onclick = (event) => { if (i.classList.contains("Handle")) { - window.location.href = "../../HTML/account.html?website=" + website; + window.location.href = "/account?website=" + website; } } } diff --git a/JS/index.js b/src/HTTP/JS/index.js similarity index 97% rename from JS/index.js rename to src/HTTP/JS/index.js index 6f8f158..e362dff 100644 --- a/JS/index.js +++ b/src/HTTP/JS/index.js @@ -1,7 +1,7 @@ -import * as MastodonAPI from "./MastodonAPI.js"; -import * as BlueskyAPI from "./BlueskyAPI.js"; -import * as TumblrAPI from "./TumblrAPI.js"; -import * as Variables from "./Variables.js"; +import * as MastodonAPI from "/JS/MastodonAPI.js"; +import * as BlueskyAPI from "/JS/BlueskyAPI.js"; +import * as TumblrAPI from "/JS/TumblrAPI.js"; +import * as Variables from "/JS/Variables.js"; // GLOBAL VARS // fuck you. I see why website developers use divs so fucking often. @@ -151,7 +151,7 @@ for (let i of ClickableContainers) { } // Save some info localStorage.setItem("post", JSON.stringify(post)); - document.location.href = "./HTML/expanded.html?website=" + website; + document.location.href = "/expanded?website=" + website; } } @@ -341,23 +341,23 @@ function CheckForDups(Timeline, DupeArray, counter) { // Open the settings. SettingButton.onclick = (event) => { - window.location.href = "./HTML/setting.html"; + window.location.href = "/setting"; } // Open the notifs, private message, favorites, ... anything mail related! MailButton.onclick = (event) => { - window.location.href = "./HTML/mail.html"; + window.location.href = "/mail"; } // A quick way of opening the account. // In theory, this should be in another "channel" or the mail area, but those areas are crowded. TimeAccountButton.onclick = (event) => { - window.location.href = "./HTML/account.html"; + window.location.href = "/account"; } // Open the posting area. PostingButton.onclick = (event) => { - window.location.href = "./HTML/post.html"; + window.location.href = "/post"; } // Change the feed to a "public" feed. diff --git a/JS/mail.js b/src/HTTP/JS/mail.js similarity index 90% rename from JS/mail.js rename to src/HTTP/JS/mail.js index 8dac64e..8fd6611 100644 --- a/JS/mail.js +++ b/src/HTTP/JS/mail.js @@ -1,7 +1,7 @@ -import * as MastodonAPI from "./MastodonAPI.js"; -import * as BlueskyAPI from "./BlueskyAPI.js"; -import * as TumblrAPI from "./TumblrAPI.js"; -import * as Variables from "./Variables.js"; +import * as MastodonAPI from "/JS/MastodonAPI.js"; +import * as BlueskyAPI from "/JS/BlueskyAPI.js"; +import * as TumblrAPI from "/JS/TumblrAPI.js"; +import * as Variables from "/JS/Variables.js"; // Below is the thing it populates if you login. async function PopulateFavorites() { diff --git a/JS/post.js b/src/HTTP/JS/post.js similarity index 96% rename from JS/post.js rename to src/HTTP/JS/post.js index 20e9921..b4f1752 100644 --- a/JS/post.js +++ b/src/HTTP/JS/post.js @@ -1,7 +1,7 @@ -import * as MastodonAPI from "./MastodonAPI.js"; -import * as BlueskyAPI from "./BlueskyAPI.js"; -import * as TumblrAPI from "./TumblrAPI.js"; -import * as Variables from "./Variables.js"; +import * as MastodonAPI from "/JS/MastodonAPI.js"; +import * as BlueskyAPI from "/JS/BlueskyAPI.js"; +import * as TumblrAPI from "/JS/TumblrAPI.js"; +import * as Variables from "/JS/Variables.js"; // Elements. let PostButton = document.getElementsByClassName("Button")[0]; diff --git a/JS/setting.js b/src/HTTP/JS/setting.js similarity index 94% rename from JS/setting.js rename to src/HTTP/JS/setting.js index 045b1a5..2962de8 100644 --- a/JS/setting.js +++ b/src/HTTP/JS/setting.js @@ -1,8 +1,8 @@ -import * as MastodonAPI from "./MastodonAPI.js"; -import * as BlueskyAPI from "./BlueskyAPI.js"; -import * as TumblrAPI from "./TumblrAPI.js"; -import * as YoutubeAPI from "./YoutubeAPI.js"; -import * as Variables from "./Variables.js"; +import * as MastodonAPI from "/JS/MastodonAPI.js"; +import * as BlueskyAPI from "/JS/BlueskyAPI.js"; +import * as TumblrAPI from "/JS/TumblrAPI.js"; +import * as YoutubeAPI from "/JS/YoutubeAPI.js"; +import * as Variables from "/JS/Variables.js"; // Settings buttons let RemoteButton = document.getElementsByClassName("Remote")[0]; diff --git a/oauth/client-metadata.json b/src/HTTP/client-metadata.json similarity index 100% rename from oauth/client-metadata.json rename to src/HTTP/client-metadata.json diff --git a/robots.txt b/src/HTTP/robots.txt similarity index 100% rename from robots.txt rename to src/HTTP/robots.txt diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..df2ebc9 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,122 @@ +#![allow(non_snake_case)] +#![allow(unused_braces)] +use rouille::{router, Response}; +use std::fs::File; + +fn main() { + // Never leave the server. CTRL + C if you have issues. + rouille::start_server("127.0.0.1:5001", move |Request| { + // Router. Go to the correct pages, else hit the sack. + router!(Request, + // Icons. + (GET) ["/Icons/ArrowLeft.png"] => { + Response::from_file("image/png", File::open("src/HTTP/Icons/ArrowLeft.png").unwrap()).with_status_code(200) + }, + (GET) ["/Icons/ArrowRight.png"] => { + Response::from_file("image/png", File::open("src/HTTP/Icons/ArrowRight.png").unwrap()).with_status_code(200) + }, + (GET) ["/Icons/favicon.ico"] => { + Response::from_file("image/vnd.microsoft.icon", File::open("src/HTTP/Icons/favicon.ico").unwrap()).with_status_code(200) + }, + (GET) ["/Icons/IndexBackground.png"] => { + Response::from_file("image/png", File::open("src/HTTP/Icons/IndexBackground.png").unwrap()).with_status_code(200) + }, + (GET) ["/Icons/IndexBlackBackground.png"] => { + Response::from_file("image/png", File::open("src/HTTP/Icons/IndexBlackBackground.png").unwrap()).with_status_code(200) + }, + // Audio. + (GET) ["/Audio/button-305770.mp3"] => { + Response::from_file("audio/mpeg", File::open("src/HTTP/Audio/button-305770.mp3").unwrap()).with_status_code(200) + }, + (GET) ["/Audio/button-pressed-38129.mp3"] => { + Response::from_file("audio/mpeg", File::open("src/HTTP/Audio/button-pressed-38129.mp3").unwrap()).with_status_code(200) + }, + (GET) ["/Audio/soft-piano-music-312509.mp3"] => { + Response::from_file("audio/mpeg", File::open("src/HTTP/Audio/soft-piano-music-312509.mp3").unwrap()).with_status_code(200) + }, + // JS. + (GET) ["/JS/index.js"] => { + Response::from_file("text/javascript", File::open("src/HTTP/JS/index.js").unwrap()).with_status_code(200) + }, + (GET) ["/JS/account.js"] => { + Response::from_file("text/javascript", File::open("src/HTTP/JS/account.js").unwrap()).with_status_code(200) + }, + (GET) ["/JS/expanded.js"] => { + Response::from_file("text/javascript", File::open("src/HTTP/JS/expanded.js").unwrap()).with_status_code(200) + }, + (GET) ["/JS/mail.js"] => { + Response::from_file("text/javascript", File::open("src/HTTP/JS/mail.js").unwrap()).with_status_code(200) + }, + (GET) ["/JS/post.js"] => { + Response::from_file("text/javascript", File::open("src/HTTP/JS/post.js").unwrap()).with_status_code(200) + }, + (GET) ["/JS/setting.js"] => { + Response::from_file("text/javascript", File::open("src/HTTP/JS/setting.js").unwrap()).with_status_code(200) + }, + (GET) ["/JS/BlueskyAPI.js"] => { + Response::from_file("text/javascript", File::open("src/HTTP/JS/BlueskyAPI.js").unwrap()).with_status_code(200) + }, + (GET) ["/JS/MastodonAPI.js"] => { + Response::from_file("text/javascript", File::open("src/HTTP/JS/MastodonAPI.js").unwrap()).with_status_code(200) + }, + (GET) ["/JS/TumblrAPI.js"] => { + Response::from_file("text/javascript", File::open("src/HTTP/JS/TumblrAPI.js").unwrap()).with_status_code(200) + }, + (GET) ["/JS/YoutubeAPI.js"] => { + Response::from_file("text/javascript", File::open("src/HTTP/JS/YoutubeAPI.js").unwrap()).with_status_code(200) + }, + (GET) ["/JS/Variables.js"] => { + Response::from_file("text/javascript", File::open("src/HTTP/JS/Variables.js").unwrap()).with_status_code(200) + }, + // Robots. + (GET) ["/robots.txt"] => { + Response::from_file("text/plain", File::open("src/HTTP/robots.txt").unwrap()).with_status_code(200) + }, + // Oauth. + (GET) ["/oauth/client-metadata.json"] => { + Response::from_file("application/json", File::open("src/HTTP/client-metadata.json").unwrap()).with_status_code(200) + }, + // CSS. + (GET) ["/CSS/index.css"] => { + Response::from_file("text/css", File::open("src/HTTP/CSS/index.css").unwrap()).with_status_code(200) + }, + (GET) ["/CSS/account.css"] => { + Response::from_file("text/css", File::open("src/HTTP/CSS/account.css").unwrap()).with_status_code(200) + }, + (GET) ["/CSS/expanded.css"] => { + Response::from_file("text/css", File::open("src/HTTP/CSS/expanded.css").unwrap()).with_status_code(200) + }, + (GET) ["/CSS/mail.css"] => { + Response::from_file("text/css", File::open("src/HTTP/CSS/mail.css").unwrap()).with_status_code(200) + }, + (GET) ["/CSS/post.css"] => { + Response::from_file("text/css", File::open("src/HTTP/CSS/post.css").unwrap()).with_status_code(200) + }, + (GET) ["/CSS/setting.css"] => { + Response::from_file("text/css", File::open("src/HTTP/CSS/setting.css").unwrap()).with_status_code(200) + }, + // Actual Web Pages. + (GET) ["/"] => { + Response::from_file("text/html", File::open("src/HTTP/HTML/index.html").unwrap()).with_status_code(200) + }, + (GET) ["/account"] => { + Response::from_file("text/html", File::open("src/HTTP/HTML/account.html").unwrap()).with_status_code(200) + }, + (GET) ["/expanded"] => { + Response::from_file("text/html", File::open("src/HTTP/HTML/expanded.html").unwrap()).with_status_code(200) + }, + (GET) ["/mail"] => { + Response::from_file("text/html", File::open("src/HTTP/HTML/mail.html").unwrap()).with_status_code(200) + }, + (GET) ["/post"] => { + Response::from_file("text/html", File::open("src/HTTP/HTML/post.html").unwrap()).with_status_code(200) + }, + (GET) ["/setting"] => { + Response::from_file("text/html", File::open("src/HTTP/HTML/setting.html").unwrap()).with_status_code(200) + }, + _ => { + Response::from_file("text/html", File::open("src/HTTP/HTML/404.html").unwrap()).with_status_code(404) + }, + ) + }); +} -- 2.45.3 From 927467084ffb733a60853dc54f99746af4a2409f Mon Sep 17 00:00:00 2001 From: CatAClock Date: Sun, 6 Jul 2025 17:04:01 -0700 Subject: [PATCH 05/48] fixed bug --- src/HTTP/JS/expanded.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index 4c697f0..cbb402e 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -95,9 +95,9 @@ async function SetThreadPost(element, i) { localStorage.setItem("post", JSON.stringify(element)); } if (i.classList.contains("Handle")) { - window.location.href = "../../HTML/account.html?website=" + website; + window.location.href = "/account?website=" + website; } else { - window.location.href = "../../HTML/expanded.html?website=" + website; + window.location.href = "/expanded?website=" + website; } } -- 2.45.3 From 9679b731c64ee331c03e24378cb0ca9c9e3411b2 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Mon, 7 Jul 2025 23:58:37 -0700 Subject: [PATCH 06/48] line fix --- src/HTTP/client-metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/HTTP/client-metadata.json b/src/HTTP/client-metadata.json index 4075d9b..4b9959a 100644 --- a/src/HTTP/client-metadata.json +++ b/src/HTTP/client-metadata.json @@ -9,7 +9,7 @@ "refresh_token" ], "redirect_uris": [ - "https://fedi.crowdedgames.group/HTML/setting.html" + "https://fedi.crowdedgames.group/setting" ], "response_types": [ "code" -- 2.45.3 From b5970b11f363fee0868c94237303a4f8dbedb2a9 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Sun, 13 Jul 2025 06:49:46 -0700 Subject: [PATCH 07/48] Warning fix --- src/HTTP/JS/BlueskyAPI.js | 2 ++ src/HTTP/JS/index.js | 18 ++++++++---------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/HTTP/JS/BlueskyAPI.js b/src/HTTP/JS/BlueskyAPI.js index bf7048b..5dd50e5 100644 --- a/src/HTTP/JS/BlueskyAPI.js +++ b/src/HTTP/JS/BlueskyAPI.js @@ -343,6 +343,8 @@ export function ApplyFacets(record, text) { let Hrefs = []; let TempText = ""; if (record.hasOwnProperty("facets")) { + // First minute append. + SplitAreas.push(text.length); // First, append split areas. for (let i of record.facets) { if (i.features[0].$type == "app.bsky.richtext.facet#link") { diff --git a/src/HTTP/JS/index.js b/src/HTTP/JS/index.js index e362dff..6a5c411 100644 --- a/src/HTTP/JS/index.js +++ b/src/HTTP/JS/index.js @@ -228,7 +228,7 @@ async function PosterContainerUpdate(Direction) { } MastodonLoadedFeed = await MastodonLoadedFeed.concat(TempFeed); } - // put the reblog into the regular post; Make changes as necessary. + // Put the reblog into the regular post; Make changes as necessary. if (MastodonLoadedFeed[CurrentThing + counter].reblog != null && typeof MastodonLoadedFeed[CurrentThing + counter].reblog != "string") { // Fix a reblog issue. let ReblogFix = MastodonLoadedFeed[CurrentThing + counter].account.acct; @@ -239,7 +239,7 @@ async function PosterContainerUpdate(Direction) { // this function is if the changes are already made. i.getElementsByClassName("Username")[0].innerHTML = " ( R: " + MastodonLoadedFeed[CurrentThing + counter].reblog + " )"; } - i.getElementsByClassName("Username")[0].innerHTML = MastodonLoadedFeed[CurrentThing + counter].account.acct + i.getElementsByClassName("Username")[0].innerHTML + i.getElementsByClassName("Username")[0].innerHTML = MastodonLoadedFeed[CurrentThing + counter].account.acct; // Check for images. if (MastodonLoadedFeed[CurrentThing + counter].media_attachments.length != 0) { if (MastodonLoadedFeed[CurrentThing + counter].media_attachments[0].type == "image") { @@ -255,7 +255,6 @@ async function PosterContainerUpdate(Direction) { // Content warning. Don't show the content unless clicked!!! if (MastodonLoadedFeed[CurrentThing + counter].spoiler_text != "") { i.getElementsByClassName("PostContent")[0].innerHTML += "WARNING: " + MastodonLoadedFeed[CurrentThing + counter].spoiler_text + ""; - i.getElementsByClassName("Username")[0].innerHTML = MastodonLoadedFeed[CurrentThing + counter].account.username; break; } i.getElementsByClassName("PostContent")[0].innerHTML += MastodonLoadedFeed[CurrentThing + counter].content; @@ -274,6 +273,12 @@ async function PosterContainerUpdate(Direction) { } BlueskyLoadedFeed = await BlueskyLoadedFeed.concat(TempFeed); } + // Check for a reblog. + if (BlueskyLoadedFeed[CurrentThing + counter].hasOwnProperty("reason") && BlueskyLoadedFeed[CurrentThing + counter].reason.$type == "app.bsky.feed.defs#reasonRepost") { + i.getElementsByClassName("Username")[0].innerHTML = BlueskyLoadedFeed[CurrentThing + counter].post.author.handle + " ( R: " + BlueskyLoadedFeed[CurrentThing + counter].reason.by.handle + " )"; + } else { + i.getElementsByClassName("Username")[0].innerHTML = BlueskyLoadedFeed[CurrentThing + counter].post.author.handle; + } // check for "already seen" posts, then put it as a seen post. BlueskyLoadedFeed = CheckForDups(BlueskyLoadedFeed, BlueskyPostsDup, counter); BlueskyPostsDup.push(BlueskyLoadedFeed[counter].post.uri); @@ -296,19 +301,12 @@ async function PosterContainerUpdate(Direction) { // Labels if (BlueskyLoadedFeed[CurrentThing + counter].post.labels.length != 0) { i.getElementsByClassName("PostContent")[0].innerHTML += "LABELS APPLIED: "; - i.getElementsByClassName("Username")[0].innerHTML = BlueskyLoadedFeed[CurrentThing + counter].post.author.handle; for (let lab of BlueskyLoadedFeed[CurrentThing + counter].post.labels) { i.getElementsByClassName("PostContent")[0].innerHTML += lab.val + " "; } i.getElementsByClassName("PostContent")[0].innerHTML += ""; break; } - // Check for a reblog. - if (BlueskyLoadedFeed[CurrentThing + counter].hasOwnProperty("reason") && BlueskyLoadedFeed[CurrentThing + counter].reason.$type == "app.bsky.feed.defs#reasonRepost") { - i.getElementsByClassName("Username")[0].innerHTML = BlueskyLoadedFeed[CurrentThing + counter].post.author.handle + " ( R: " + BlueskyLoadedFeed[CurrentThing + counter].reason.by.handle + " )"; - } else { - i.getElementsByClassName("Username")[0].innerHTML = BlueskyLoadedFeed[CurrentThing + counter].post.author.handle; - } // Apply correct facets. let TempText = await BlueskyAPI.ApplyFacets(BlueskyLoadedFeed[CurrentThing + counter].post.record, BlueskyLoadedFeed[CurrentThing + counter].post.record.text); TempText = TempText.replace(/\r?\n|\r/g, "
"); -- 2.45.3 From 4cdceff049844af00460b3db6868b1a63f58e602 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Sun, 13 Jul 2025 06:56:41 -0700 Subject: [PATCH 08/48] :/ --- src/HTTP/JS/BlueskyAPI.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/HTTP/JS/BlueskyAPI.js b/src/HTTP/JS/BlueskyAPI.js index 5dd50e5..bf7048b 100644 --- a/src/HTTP/JS/BlueskyAPI.js +++ b/src/HTTP/JS/BlueskyAPI.js @@ -343,8 +343,6 @@ export function ApplyFacets(record, text) { let Hrefs = []; let TempText = ""; if (record.hasOwnProperty("facets")) { - // First minute append. - SplitAreas.push(text.length); // First, append split areas. for (let i of record.facets) { if (i.features[0].$type == "app.bsky.richtext.facet#link") { -- 2.45.3 From b5bd664d883e3bdcf63d82df0230fa86f9989ff0 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Sun, 13 Jul 2025 11:36:03 -0700 Subject: [PATCH 09/48] Potential fix for emojies --- src/HTTP/JS/BlueskyAPI.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/HTTP/JS/BlueskyAPI.js b/src/HTTP/JS/BlueskyAPI.js index bf7048b..347870f 100644 --- a/src/HTTP/JS/BlueskyAPI.js +++ b/src/HTTP/JS/BlueskyAPI.js @@ -358,21 +358,26 @@ export function ApplyFacets(record, text) { } // Last minute append. SplitAreas.push(text.length); - // Remove emoji regex - let EmojiObjects = text.match(/\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F/gu); let SubtractNumber = 0; - if (EmojiObjects != null) { - SubtractNumber = EmojiObjects.length * 2; - } // Now we split the string for (let i = 1; i < SplitAreas.length; i++) { - StringArray.push(text.slice(SplitAreas[i - 1] - SubtractNumber, SplitAreas[i] - SubtractNumber)); + // Remove emoji regex + let TextThing = text.slice(SplitAreas[i - 1] - SubtractNumber, SplitAreas[i] - SubtractNumber); + let EmojiObjects = TextThing.match(/\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F/gu); + if (EmojiObjects != null) { + SubtractNumber = SubtractNumber + (EmojiObjects.length * 2); + StringArray.push(text.slice(SplitAreas[i - 1] - SubtractNumber, SplitAreas[i] - SubtractNumber)); + } else { + // If no regex, just send it. + StringArray.push(TextThing); + } } // Finally, we append the string with for (let i = 0; i < StringArray.length; i += 2) { if (Hrefs[(i / 2)] != undefined && Hrefs[(i / 2)].split("https://").length != 1) { TempText += StringArray[i] + "" + StringArray[i + 1] + ""; } else { + // The "last string" TempText += StringArray[i]; } } -- 2.45.3 From 6a1ceb473f12ee9f60e04025287955dfcf2959ca Mon Sep 17 00:00:00 2001 From: CatAClock Date: Sun, 13 Jul 2025 11:38:17 -0700 Subject: [PATCH 10/48] Bug fix --- src/HTTP/JS/setting.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/HTTP/JS/setting.js b/src/HTTP/JS/setting.js index 2962de8..e018daa 100644 --- a/src/HTTP/JS/setting.js +++ b/src/HTTP/JS/setting.js @@ -22,7 +22,7 @@ let YoutubeHandleInput = document.getElementsByClassName("WebInput Youtube")[1]; let YoutubeLogoutButton = document.getElementsByClassName("Logout Youtube")[0]; // original link -let Origin = location.origin + "/HTML/setting.html" +let Origin = location.origin + "/setting" // Allow the user to change if Remote is a thing or not. RemoteButton.onclick = (event) => { -- 2.45.3 From 73967f7b1c6503bcc6a18cbea0012e7d8a520480 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Sun, 13 Jul 2025 11:58:49 -0700 Subject: [PATCH 11/48] another bug fix --- src/HTTP/JS/BlueskyAPI.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/HTTP/JS/BlueskyAPI.js b/src/HTTP/JS/BlueskyAPI.js index 347870f..78fb4d1 100644 --- a/src/HTTP/JS/BlueskyAPI.js +++ b/src/HTTP/JS/BlueskyAPI.js @@ -443,7 +443,7 @@ export async function CreatePKCECodeChallenge(CodeVerifier) { // Component 3/4 export async function PARrequest(PAREndpoint, State, Challenge) { - return fetch(PAREndpoint, {method: "POST", body: new URLSearchParams({ response_type: "code", code_challenge_method: "S256", scope: "atproto transition:generic", client_id: "https://fedi.crowdedgames.group/oauth/client-metadata.json", redirect_uri: "https://fedi.crowdedgames.group/HTML/setting.html", code_challenge: Challenge, state: State, login_hint: "crowdedgames.group" }), headers: {"Content-Type": "application/x-www-form-urlencoded"}}); + return fetch(PAREndpoint, {method: "POST", body: new URLSearchParams({ response_type: "code", code_challenge_method: "S256", scope: "atproto transition:generic", client_id: "https://fedi.crowdedgames.group/oauth/client-metadata.json", redirect_uri: "https://fedi.crowdedgames.group/setting", code_challenge: Challenge, state: State, login_hint: "crowdedgames.group" }), headers: {"Content-Type": "application/x-www-form-urlencoded"}}); } async function AuthRequest(TokenEndpoint, code, DPoP, Verify) { -- 2.45.3 From 96a04146389eb1620bec75e65fd9b2f065c99be0 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Sun, 13 Jul 2025 11:59:59 -0700 Subject: [PATCH 12/48] hm --- src/HTTP/JS/BlueskyAPI.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/HTTP/JS/BlueskyAPI.js b/src/HTTP/JS/BlueskyAPI.js index 78fb4d1..4a1e173 100644 --- a/src/HTTP/JS/BlueskyAPI.js +++ b/src/HTTP/JS/BlueskyAPI.js @@ -447,7 +447,7 @@ export async function PARrequest(PAREndpoint, State, Challenge) { } async function AuthRequest(TokenEndpoint, code, DPoP, Verify) { - return fetch(TokenEndpoint, {method: "POST", body: new URLSearchParams({ grant_type: "authorization_code", code: code, client_id: "https://fedi.crowdedgames.group/oauth/client-metadata.json", redirect_uri: "https://fedi.crowdedgames.group/HTML/setting.html", code_verifier: Verify}), headers: { "DPoP": DPoP, "Content-Type": "application/x-www-form-urlencoded"}}) + return fetch(TokenEndpoint, {method: "POST", body: new URLSearchParams({ grant_type: "authorization_code", code: code, client_id: "https://fedi.crowdedgames.group/oauth/client-metadata.json", redirect_uri: "https://fedi.crowdedgames.group/setting", code_verifier: Verify}), headers: { "DPoP": DPoP, "Content-Type": "application/x-www-form-urlencoded"}}) .then((response) => response.json()); } -- 2.45.3 From 7476ffb4c151633d699a7aeaa8cae7075b9e3419 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Sun, 13 Jul 2025 13:42:49 -0700 Subject: [PATCH 13/48] facet fix? --- src/HTTP/JS/BlueskyAPI.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/HTTP/JS/BlueskyAPI.js b/src/HTTP/JS/BlueskyAPI.js index 4a1e173..1db1106 100644 --- a/src/HTTP/JS/BlueskyAPI.js +++ b/src/HTTP/JS/BlueskyAPI.js @@ -358,6 +358,7 @@ export function ApplyFacets(record, text) { } // Last minute append. SplitAreas.push(text.length); + let SubtractNumber = 0; // Now we split the string for (let i = 1; i < SplitAreas.length; i++) { @@ -366,11 +367,15 @@ export function ApplyFacets(record, text) { let EmojiObjects = TextThing.match(/\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F/gu); if (EmojiObjects != null) { SubtractNumber = SubtractNumber + (EmojiObjects.length * 2); - StringArray.push(text.slice(SplitAreas[i - 1] - SubtractNumber, SplitAreas[i] - SubtractNumber)); - } else { - // If no regex, just send it. - StringArray.push(TextThing); + if (SplitAreas[i - 1] == 0) { + TextThing = text.slice(SplitAreas[i - 1], SplitAreas[i] - SubtractNumber); + } else if (SplitAreas[i] == text.length) { + TextThing = text.slice(SplitAreas[i - 1] - SubtractNumber, SplitAreas[i]); + } else { + TextThing = text.slice(SplitAreas[i - 1] - SubtractNumber, SplitAreas[i] - SubtractNumber); + } } + StringArray.push(TextThing); } // Finally, we append the string with for (let i = 0; i < StringArray.length; i += 2) { -- 2.45.3 From 13f42d374653774c892d78701180c0a0b6bd380f Mon Sep 17 00:00:00 2001 From: CatAClock Date: Sun, 13 Jul 2025 13:47:16 -0700 Subject: [PATCH 14/48] god fucking work --- src/HTTP/JS/BlueskyAPI.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/HTTP/JS/BlueskyAPI.js b/src/HTTP/JS/BlueskyAPI.js index 1db1106..0c1fd71 100644 --- a/src/HTTP/JS/BlueskyAPI.js +++ b/src/HTTP/JS/BlueskyAPI.js @@ -360,23 +360,25 @@ export function ApplyFacets(record, text) { SplitAreas.push(text.length); let SubtractNumber = 0; + let TextThing = ""; // Now we split the string for (let i = 1; i < SplitAreas.length; i++) { // Remove emoji regex - let TextThing = text.slice(SplitAreas[i - 1] - SubtractNumber, SplitAreas[i] - SubtractNumber); + TextThing = text.slice(SplitAreas[i - 1] - SubtractNumber, SplitAreas[i] - SubtractNumber); let EmojiObjects = TextThing.match(/\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F/gu); if (EmojiObjects != null) { SubtractNumber = SubtractNumber + (EmojiObjects.length * 2); if (SplitAreas[i - 1] == 0) { TextThing = text.slice(SplitAreas[i - 1], SplitAreas[i] - SubtractNumber); - } else if (SplitAreas[i] == text.length) { - TextThing = text.slice(SplitAreas[i - 1] - SubtractNumber, SplitAreas[i]); } else { TextThing = text.slice(SplitAreas[i - 1] - SubtractNumber, SplitAreas[i] - SubtractNumber); } } StringArray.push(TextThing); } + // Last minute shit! Maybe! + TextThing = text.slice(SplitAreas[SplitAreas.length - 2] - SubtractNumber, SplitAreas[SplitAreas.length - 1]); + StringArray.push(TextThing); // Finally, we append the string with for (let i = 0; i < StringArray.length; i += 2) { if (Hrefs[(i / 2)] != undefined && Hrefs[(i / 2)].split("https://").length != 1) { -- 2.45.3 From f01f0ea80d434c71dad3fc6fc7ce2328382d9d28 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Sun, 13 Jul 2025 13:57:32 -0700 Subject: [PATCH 15/48] mhm --- src/HTTP/JS/BlueskyAPI.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/HTTP/JS/BlueskyAPI.js b/src/HTTP/JS/BlueskyAPI.js index 0c1fd71..a9c4e60 100644 --- a/src/HTTP/JS/BlueskyAPI.js +++ b/src/HTTP/JS/BlueskyAPI.js @@ -376,9 +376,6 @@ export function ApplyFacets(record, text) { } StringArray.push(TextThing); } - // Last minute shit! Maybe! - TextThing = text.slice(SplitAreas[SplitAreas.length - 2] - SubtractNumber, SplitAreas[SplitAreas.length - 1]); - StringArray.push(TextThing); // Finally, we append the string with for (let i = 0; i < StringArray.length; i += 2) { if (Hrefs[(i / 2)] != undefined && Hrefs[(i / 2)].split("https://").length != 1) { -- 2.45.3 From 36cd843eccd833e5df12493daa8dc209e4fd0a08 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Sun, 13 Jul 2025 21:14:15 -0700 Subject: [PATCH 16/48] tag fix. I have dumb --- src/HTTP/JS/post.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/HTTP/JS/post.js b/src/HTTP/JS/post.js index b4f1752..c760c5f 100644 --- a/src/HTTP/JS/post.js +++ b/src/HTTP/JS/post.js @@ -36,7 +36,7 @@ async function Post() { // Adding tags let TempText = Text; let Tags = TagsInputArea.value.split(";"); - if (Tags.length > 1) { + if (Tags.length >= 1) { TempText += "

"; } for (let i of Tags) { -- 2.45.3 From 9e1c507a8a619505fc044886add29e75e6025b3b Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 11:47:31 -0700 Subject: [PATCH 17/48] bug fix --- src/HTTP/JS/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/HTTP/JS/index.js b/src/HTTP/JS/index.js index 6a5c411..6214f6b 100644 --- a/src/HTTP/JS/index.js +++ b/src/HTTP/JS/index.js @@ -238,8 +238,9 @@ async function PosterContainerUpdate(Direction) { } else if (MastodonLoadedFeed[CurrentThing + counter].reblog != null && typeof MastodonLoadedFeed[CurrentThing + counter].reblog == "string") { // this function is if the changes are already made. i.getElementsByClassName("Username")[0].innerHTML = " ( R: " + MastodonLoadedFeed[CurrentThing + counter].reblog + " )"; + } else { + i.getElementsByClassName("Username")[0].innerHTML = MastodonLoadedFeed[CurrentThing + counter].account.acct; } - i.getElementsByClassName("Username")[0].innerHTML = MastodonLoadedFeed[CurrentThing + counter].account.acct; // Check for images. if (MastodonLoadedFeed[CurrentThing + counter].media_attachments.length != 0) { if (MastodonLoadedFeed[CurrentThing + counter].media_attachments[0].type == "image") { -- 2.45.3 From a88e4e625ff9ad524e7727a3f29cbd653775ee52 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 12:16:24 -0700 Subject: [PATCH 18/48] test this later idk --- src/HTTP/JS/expanded.js | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index cbb402e..117cec0 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -16,8 +16,7 @@ let Boostable = false; // Variables let website = document.location.href.split("website=")[1]; let post = JSON.parse(localStorage.getItem("post")); -let Parentpost; -let GrandParentpost; +let ThreadedPost = []; document.getElementsByClassName("Origin Regular")[0].innerHTML = website; GetPost(); @@ -123,11 +122,16 @@ async function GetPost() { } } // Now time to see if there are any parents + let NumberOfThreads = 0; if (post.in_reply_to_id != null) { - Parentpost = await MastodonReplylFunction("Parent", post.in_reply_to_id); + let TemporaryPost = await MastodonReplylFunction(NumberOfThreads, post.in_reply_to_id); + ThreadedPost.push(TemporaryPost); + NumberOfThreads += 1; // Now time to see if there are any grandparents - if (Parentpost != undefined && Parentpost.in_reply_to_id != null) { - GrandParentpost = await MastodonReplylFunction("GrandParent", Parentpost.in_reply_to_id); + while (TemporaryPost.in_reply_to_id != null) { + TemporaryPost = await MastodonReplylFunction(NumberOfThreads, TemporaryPost.in_reply_to_id); + ThreadedPost.push(TemporaryPost); + NumberOfThreads += 1; } } } else if (website == "Bluesky") { @@ -172,17 +176,17 @@ async function GetPost() { } // Because of repeat code, we can put it into it's own function. Hell, more of a thread can be added later. -async function MastodonReplylFunction(ClassName, post) { +async function MastodonReplylFunction(id, post) { let OtherPost = await MastodonAPI.GetStatus(post); - document.getElementsByClassName("Origin " + ClassName)[0].innerHTML = website; - document.getElementsByClassName("Handle " + ClassName)[0].innerHTML = OtherPost.account.acct; + let ShitHTML = "

" + website + "

" + OtherPost.account.acct + "


"; + document.getElementsByTagName("body")[0] = ShitHTML + document.getElementsByTagName("body")[0].innerHTML; if (OtherPost.spoiler_text != "") { - document.getElementsByClassName("PostText " + ClassName)[0].innerHTML = "WARNING: " + OtherPost.spoiler_text; + document.getElementsByClassName("PostText").getElementById(id).innerHTML = "WARNING: " + OtherPost.spoiler_text; } else { - document.getElementsByClassName("PostText " + ClassName)[0].innerHTML = OtherPost.content; + document.getElementsByClassName("PostText").getElementById(id).innerHTML = OtherPost.content; if (OtherPost.media_attachments.length != 0) { for (let i of OtherPost.media_attachments) { - ApplyMedia(i, document.getElementsByClassName("Images " + ClassName)[0]); + ApplyMedia(i, document.getElementsByClassName("Images").getElementById(id)); } } } -- 2.45.3 From 9acc3c062ce80d84858e724447307b7d08136d9d Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 12:35:38 -0700 Subject: [PATCH 19/48] mm. Maybe? --- src/HTTP/HTML/expanded.html | 24 ++++------------------ src/HTTP/JS/expanded.js | 40 +++++++++++++++++-------------------- 2 files changed, 22 insertions(+), 42 deletions(-) diff --git a/src/HTTP/HTML/expanded.html b/src/HTTP/HTML/expanded.html index df124eb..565ef3c 100644 --- a/src/HTTP/HTML/expanded.html +++ b/src/HTTP/HTML/expanded.html @@ -12,29 +12,13 @@ - -
-

-

-
-

-
-
- -
-

-

-
-

-
-
-

-

+

+

-

-
+

+

Favorite!

diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index 117cec0..c718ea4 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -72,19 +72,7 @@ for (let i of document.getElementsByClassName("Regular")) { } } -// Selecting other posts. -for (let i of document.getElementsByClassName("Parent")) { - i.onclick = (event) => { - SetThreadPost(Parentpost, i); - } -} - -for (let i of document.getElementsByClassName("GrandParent")) { - i.onclick = (event) => { - SetThreadPost(GrandParentpost, i); - } -} - +// Threads are the thing above the post you clicked. async function SetThreadPost(element, i) { if (website == "Mastodon") { localStorage.setItem("post", JSON.stringify(element)); @@ -103,12 +91,12 @@ async function SetThreadPost(element, i) { // Functions and things. async function GetPost() { if (website == "Mastodon") { - document.getElementsByClassName("Handle Regular")[0].innerHTML = post.account.acct; + document.getElementsByClassName("Handle")[0].innerHTML = post.account.acct; // Check for a reblog. if (post.reblog != null) { - document.getElementsByClassName("Handle Regular")[0].innerHTML += " ( R: " + post.reblog + " )"; + document.getElementsByClassName("Handle")[0].innerHTML += " ( R: " + post.reblog + " )"; } - document.getElementsByClassName("PostText Regular")[0].innerHTML = post.content; + document.getElementsByClassName("PostText")[0].innerHTML = post.content; // Set the texts. It's opposite because "setting" causes it to switch. post = await MastodonAPI.GetStatus(post.id); FavoriteFlipper = !(post.favourited); @@ -118,7 +106,7 @@ async function GetPost() { // Show the image if it exists. if (post.media_attachments.length != 0) { for (let i of post.media_attachments) { - ApplyMedia(i, document.getElementsByClassName("Images Regular")[0]); + ApplyMedia(i, document.getElementsByClassName("Images")[0]); } } // Now time to see if there are any parents @@ -134,21 +122,28 @@ async function GetPost() { NumberOfThreads += 1; } } + // Any replies? Give them the thing :3 + for (let i of document.getElementsByClassName("body").hasAttribute("id")) { + let TempID = i.getAttribute("id"); + i.onclick = (event) => { + SetThreadPost(ThreadedPost[TempID], i); + } + } } else if (website == "Bluesky") { // Check for a reblog. if (post.hasOwnProperty("reason") && post.reason.$type == "app.bsky.feed.defs#reasonRepost") { - document.getElementsByClassName("Handle Regular")[0].innerHTML = post.post.author.handle + " ( R: " + post.reason.by.handle + " )"; + document.getElementsByClassName("Handle")[0].innerHTML = post.post.author.handle + " ( R: " + post.reason.by.handle + " )"; } else { - document.getElementsByClassName("Handle Regular")[0].innerHTML = post.post.author.handle; + document.getElementsByClassName("Handle")[0].innerHTML = post.post.author.handle; } // Text. This will be modified later. var Text = await BlueskyAPI.ApplyFacets(post.post.record, post.post.record.text); // Place the text. Text = Text.replace(/\r?\n|\r/g, "
"); - document.getElementsByClassName("PostText Regular")[0].innerHTML = Text; + document.getElementsByClassName("PostText")[0].innerHTML = Text; // Show the image if it exists. if (post.post.record.hasOwnProperty("embed")) { - ApplyMedia(post.post.record.embed, document.getElementsByClassName("Images Regular")[0], post.post.author.did); + ApplyMedia(post.post.record.embed, document.getElementsByClassName("Images")[0], post.post.author.did); } // We don't need to update the post with new information. The repos are seperate. // Set the texts. It's opposite because "setting" causes it to switch. @@ -178,7 +173,7 @@ async function GetPost() { // Because of repeat code, we can put it into it's own function. Hell, more of a thread can be added later. async function MastodonReplylFunction(id, post) { let OtherPost = await MastodonAPI.GetStatus(post); - let ShitHTML = "

" + website + "

" + OtherPost.account.acct + "


"; + let ShitHTML = "

" + website + "

" + OtherPost.account.acct + "


"; document.getElementsByTagName("body")[0] = ShitHTML + document.getElementsByTagName("body")[0].innerHTML; if (OtherPost.spoiler_text != "") { document.getElementsByClassName("PostText").getElementById(id).innerHTML = "WARNING: " + OtherPost.spoiler_text; @@ -193,6 +188,7 @@ async function MastodonReplylFunction(id, post) { return OtherPost; } +// TODO async function BlueskyReplyFunction(ClassName, post, OtherAuthor) { let OtherPost = await BlueskyAPI.GetRecord(post.uri.split("/")[2], post.uri.split("/")[3], post.uri.split("/")[4]); document.getElementsByClassName("Origin " + ClassName)[0].innerHTML = website; -- 2.45.3 From 0e5cba818aee889b68a8e7786f359a1f63245035 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 17:43:37 -0700 Subject: [PATCH 20/48] fuck --- src/HTTP/JS/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/HTTP/JS/index.js b/src/HTTP/JS/index.js index 6214f6b..8b2347e 100644 --- a/src/HTTP/JS/index.js +++ b/src/HTTP/JS/index.js @@ -234,10 +234,10 @@ async function PosterContainerUpdate(Direction) { let ReblogFix = MastodonLoadedFeed[CurrentThing + counter].account.acct; MastodonLoadedFeed[CurrentThing + counter] = MastodonLoadedFeed[CurrentThing + counter].reblog; MastodonLoadedFeed[CurrentThing + counter].reblog = ReblogFix; - i.getElementsByClassName("Username")[0].innerHTML = " ( R: " + MastodonLoadedFeed[CurrentThing + counter].reblog + " )"; + i.getElementsByClassName("Username")[0].innerHTML = ReblogFix + " ( R: " + MastodonLoadedFeed[CurrentThing + counter].reblog + " )"; } else if (MastodonLoadedFeed[CurrentThing + counter].reblog != null && typeof MastodonLoadedFeed[CurrentThing + counter].reblog == "string") { // this function is if the changes are already made. - i.getElementsByClassName("Username")[0].innerHTML = " ( R: " + MastodonLoadedFeed[CurrentThing + counter].reblog + " )"; + i.getElementsByClassName("Username")[0].innerHTML = MastodonLoadedFeed[CurrentThing + counter].account.acct + " ( R: " + MastodonLoadedFeed[CurrentThing + counter].reblog + " )"; } else { i.getElementsByClassName("Username")[0].innerHTML = MastodonLoadedFeed[CurrentThing + counter].account.acct; } -- 2.45.3 From 311d9cb57f5eb678f0bb6b8b37fd0335e72f2969 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 17:45:16 -0700 Subject: [PATCH 21/48] a --- src/HTTP/JS/expanded.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index c718ea4..a2510bf 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -18,7 +18,7 @@ let website = document.location.href.split("website=")[1]; let post = JSON.parse(localStorage.getItem("post")); let ThreadedPost = []; -document.getElementsByClassName("Origin Regular")[0].innerHTML = website; +document.getElementsByClassName("Origin")[0].innerHTML = website; GetPost(); // Fixes a bug where the interpreter sucks ass. -- 2.45.3 From 9ad85e98a07908053d1872ac6d92160b28235407 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 17:48:42 -0700 Subject: [PATCH 22/48] b --- src/HTTP/JS/expanded.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index a2510bf..fbbd895 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -123,7 +123,10 @@ async function GetPost() { } } // Any replies? Give them the thing :3 - for (let i of document.getElementsByClassName("body").hasAttribute("id")) { + for (let i of document.getElementsByTagName("body").children)) { + if (i.hasAttribute("id")) { + break; + } let TempID = i.getAttribute("id"); i.onclick = (event) => { SetThreadPost(ThreadedPost[TempID], i); -- 2.45.3 From 6e36b946766655466372e576922cdf5c5748a8a0 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 17:49:43 -0700 Subject: [PATCH 23/48] c --- src/HTTP/JS/expanded.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index fbbd895..5f49034 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -123,7 +123,7 @@ async function GetPost() { } } // Any replies? Give them the thing :3 - for (let i of document.getElementsByTagName("body").children)) { + for (let i of document.getElementsByTagName("body").children) { if (i.hasAttribute("id")) { break; } -- 2.45.3 From 8953fe5ad278b2fa003cf7928889f64dd12fb64f Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 17:50:46 -0700 Subject: [PATCH 24/48] d --- src/HTTP/JS/expanded.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index 5f49034..4f0b3af 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -123,7 +123,7 @@ async function GetPost() { } } // Any replies? Give them the thing :3 - for (let i of document.getElementsByTagName("body").children) { + for (let i of document.getElementsByTagName("body")[0].children) { if (i.hasAttribute("id")) { break; } -- 2.45.3 From b07290ed148809d34a2073a6ea5b6fa672bf2759 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 17:52:17 -0700 Subject: [PATCH 25/48] e --- src/HTTP/JS/expanded.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index 4f0b3af..1e2a97b 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -177,7 +177,7 @@ async function GetPost() { async function MastodonReplylFunction(id, post) { let OtherPost = await MastodonAPI.GetStatus(post); let ShitHTML = "

" + website + "

" + OtherPost.account.acct + "


"; - document.getElementsByTagName("body")[0] = ShitHTML + document.getElementsByTagName("body")[0].innerHTML; + document.getElementsByTagName("body")[0].innerHTML = ShitHTML + document.getElementsByTagName("body")[0].innerHTML; if (OtherPost.spoiler_text != "") { document.getElementsByClassName("PostText").getElementById(id).innerHTML = "WARNING: " + OtherPost.spoiler_text; } else { -- 2.45.3 From e3479ef642301633b4c03ea91c1def1df184de37 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 18:08:57 -0700 Subject: [PATCH 26/48] f --- src/HTTP/JS/expanded.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index 1e2a97b..80b8f6d 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -174,17 +174,17 @@ async function GetPost() { } // Because of repeat code, we can put it into it's own function. Hell, more of a thread can be added later. -async function MastodonReplylFunction(id, post) { +async function MastodonReplylFunction(Name, post) { let OtherPost = await MastodonAPI.GetStatus(post); - let ShitHTML = "

" + website + "

" + OtherPost.account.acct + "


"; + let ShitHTML = "

" + website + "

" + OtherPost.account.acct + "


"; document.getElementsByTagName("body")[0].innerHTML = ShitHTML + document.getElementsByTagName("body")[0].innerHTML; if (OtherPost.spoiler_text != "") { - document.getElementsByClassName("PostText").getElementById(id).innerHTML = "WARNING: " + OtherPost.spoiler_text; + document.getElementsByClassName("PostText")[0].getElementsByName(Name)[0].innerHTML = "WARNING: " + OtherPost.spoiler_text; } else { - document.getElementsByClassName("PostText").getElementById(id).innerHTML = OtherPost.content; + document.getElementsByClassName("PostText").getElementsByName(Name)[0].innerHTML = OtherPost.content; if (OtherPost.media_attachments.length != 0) { for (let i of OtherPost.media_attachments) { - ApplyMedia(i, document.getElementsByClassName("Images").getElementById(id)); + ApplyMedia(i, document.getElementsByClassName("Images").getElementsByName(Name)[0]); } } } -- 2.45.3 From 650fa74f0e65c156bde28b6e63cd6a5ebb3ca71d Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 18:10:10 -0700 Subject: [PATCH 27/48] g --- src/HTTP/JS/expanded.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index 80b8f6d..d40b4a4 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -181,7 +181,7 @@ async function MastodonReplylFunction(Name, post) { if (OtherPost.spoiler_text != "") { document.getElementsByClassName("PostText")[0].getElementsByName(Name)[0].innerHTML = "WARNING: " + OtherPost.spoiler_text; } else { - document.getElementsByClassName("PostText").getElementsByName(Name)[0].innerHTML = OtherPost.content; + document.getElementsByClassName("PostText")[0].getElementsByName(Name)[0].innerHTML = OtherPost.content; if (OtherPost.media_attachments.length != 0) { for (let i of OtherPost.media_attachments) { ApplyMedia(i, document.getElementsByClassName("Images").getElementsByName(Name)[0]); -- 2.45.3 From 602a1a551bb7366ba2a6d2a162839303bea48bba Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 18:15:56 -0700 Subject: [PATCH 28/48] h --- src/HTTP/JS/expanded.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index d40b4a4..ecf0617 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -174,17 +174,17 @@ async function GetPost() { } // Because of repeat code, we can put it into it's own function. Hell, more of a thread can be added later. -async function MastodonReplylFunction(Name, post) { +async function MastodonReplylFunction(Id, post) { let OtherPost = await MastodonAPI.GetStatus(post); - let ShitHTML = "

" + website + "

" + OtherPost.account.acct + "


"; + let ShitHTML = "

" + website + "

" + OtherPost.account.acct + "


"; document.getElementsByTagName("body")[0].innerHTML = ShitHTML + document.getElementsByTagName("body")[0].innerHTML; if (OtherPost.spoiler_text != "") { - document.getElementsByClassName("PostText")[0].getElementsByName(Name)[0].innerHTML = "WARNING: " + OtherPost.spoiler_text; + document.getElementsByClassName("PostText " + Id)[0].innerHTML = "WARNING: " + OtherPost.spoiler_text; } else { - document.getElementsByClassName("PostText")[0].getElementsByName(Name)[0].innerHTML = OtherPost.content; + document.getElementsByClassName("PostText " + Id)[0].innerHTML = OtherPost.content; if (OtherPost.media_attachments.length != 0) { for (let i of OtherPost.media_attachments) { - ApplyMedia(i, document.getElementsByClassName("Images").getElementsByName(Name)[0]); + ApplyMedia(i, document.getElementsByClassName("Images " + Id)); } } } -- 2.45.3 From 755e4f8d9fc8d8001bf39230ccd5e6fadb73ae1f Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 18:24:25 -0700 Subject: [PATCH 29/48] i --- src/HTTP/JS/expanded.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index ecf0617..87d68ff 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -123,14 +123,14 @@ async function GetPost() { } } // Any replies? Give them the thing :3 - for (let i of document.getElementsByTagName("body")[0].children) { - if (i.hasAttribute("id")) { - break; - } - let TempID = i.getAttribute("id"); - i.onclick = (event) => { - SetThreadPost(ThreadedPost[TempID], i); + let TempID = 0; + while (TempID != (NumberOfThreads - 1)) { + for (let i of document.getElementsByClassName(NumberOfThreads.toString())) { + i.onclick = (event) => { + SetThreadPost(ThreadedPost[TempID], i); + } } + TempID += 1; } } else if (website == "Bluesky") { // Check for a reblog. -- 2.45.3 From 0595ac025be8dbabddac740d54d915c5b6501d31 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 18:34:56 -0700 Subject: [PATCH 30/48] ? --- src/HTTP/JS/expanded.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index 87d68ff..969761f 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -176,7 +176,7 @@ async function GetPost() { // Because of repeat code, we can put it into it's own function. Hell, more of a thread can be added later. async function MastodonReplylFunction(Id, post) { let OtherPost = await MastodonAPI.GetStatus(post); - let ShitHTML = "

" + website + "

" + OtherPost.account.acct + "


"; + let ShitHTML = "

" + OtherPost.account.acct + "

" + website + "


"; document.getElementsByTagName("body")[0].innerHTML = ShitHTML + document.getElementsByTagName("body")[0].innerHTML; if (OtherPost.spoiler_text != "") { document.getElementsByClassName("PostText " + Id)[0].innerHTML = "WARNING: " + OtherPost.spoiler_text; -- 2.45.3 From 22b250daa7807768d3b16b456e710023a6cedc9b Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 18:57:55 -0700 Subject: [PATCH 31/48] j --- src/HTTP/JS/expanded.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index 969761f..fc0d0fc 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -125,7 +125,7 @@ async function GetPost() { // Any replies? Give them the thing :3 let TempID = 0; while (TempID != (NumberOfThreads - 1)) { - for (let i of document.getElementsByClassName(NumberOfThreads.toString())) { + for (let i of document.getElementsByClassName(NumberOfThreads)) { i.onclick = (event) => { SetThreadPost(ThreadedPost[TempID], i); } @@ -177,7 +177,7 @@ async function GetPost() { async function MastodonReplylFunction(Id, post) { let OtherPost = await MastodonAPI.GetStatus(post); let ShitHTML = "

" + OtherPost.account.acct + "

" + website + "


"; - document.getElementsByTagName("body")[0].innerHTML = ShitHTML + document.getElementsByTagName("body")[0].innerHTML; + document.getElementsByTagName("body")[0].insertAdjacentHTML("afterbegin", ShitHTML); if (OtherPost.spoiler_text != "") { document.getElementsByClassName("PostText " + Id)[0].innerHTML = "WARNING: " + OtherPost.spoiler_text; } else { -- 2.45.3 From b7efe261431a0cdc5ef126526a4dead440a560be Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 19:03:21 -0700 Subject: [PATCH 32/48] k --- src/HTTP/JS/expanded.js | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index fc0d0fc..6df7125 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -111,26 +111,18 @@ async function GetPost() { } // Now time to see if there are any parents let NumberOfThreads = 0; - if (post.in_reply_to_id != null) { - let TemporaryPost = await MastodonReplylFunction(NumberOfThreads, post.in_reply_to_id); + let TemporaryPost = post; + while (TemporaryPost.in_reply_to_id != null) { + TemporaryPost = await MastodonReplylFunction(NumberOfThreads, TemporaryPost.in_reply_to_id); ThreadedPost.push(TemporaryPost); - NumberOfThreads += 1; - // Now time to see if there are any grandparents - while (TemporaryPost.in_reply_to_id != null) { - TemporaryPost = await MastodonReplylFunction(NumberOfThreads, TemporaryPost.in_reply_to_id); - ThreadedPost.push(TemporaryPost); - NumberOfThreads += 1; - } - } - // Any replies? Give them the thing :3 - let TempID = 0; - while (TempID != (NumberOfThreads - 1)) { + // Any replies? Give them the thing :3 for (let i of document.getElementsByClassName(NumberOfThreads)) { + let TempID = NumberOfThreads; i.onclick = (event) => { SetThreadPost(ThreadedPost[TempID], i); } } - TempID += 1; + NumberOfThreads += 1; } } else if (website == "Bluesky") { // Check for a reblog. -- 2.45.3 From 12ecdce4217ab7686c0f57789801f8c6a20c9644 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 19:11:18 -0700 Subject: [PATCH 33/48] let's do bsky now --- src/HTTP/JS/expanded.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index 6df7125..f5826b4 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -154,10 +154,10 @@ async function GetPost() { SetBoost(); // Now time to see if there are any parents. if (post.hasOwnProperty("reply")) { - Parentpost = await BlueskyReplyFunction("Parent", post.reply.parent, post.reply.parent.author); + Parentpost = await BlueskyReplyFunction("0", post.reply.parent, post.reply.parent.author); // Now time to see if there are any grandparents. if (Parentpost.value.hasOwnProperty("reply")) { - GrandParentpost = await BlueskyReplyFunction("GrandParent", Parentpost.value.reply.parent, post.reply.grandparentAuthor); + GrandParentpost = await BlueskyReplyFunction("1", Parentpost.value.reply.parent, post.reply.grandparentAuthor); } } } else { @@ -183,23 +183,23 @@ async function MastodonReplylFunction(Id, post) { return OtherPost; } -// TODO -async function BlueskyReplyFunction(ClassName, post, OtherAuthor) { +async function BlueskyReplyFunction(Id, post, OtherAuthor) { let OtherPost = await BlueskyAPI.GetRecord(post.uri.split("/")[2], post.uri.split("/")[3], post.uri.split("/")[4]); - document.getElementsByClassName("Origin " + ClassName)[0].innerHTML = website; - document.getElementsByClassName("Handle " + ClassName)[0].innerHTML = OtherAuthor.handle; + console.log(OtherPost); + let ShitHTML = "

" + OtherAuthor.handle + "

" + website + "


"; + document.getElementsByTagName("body")[0].insertAdjacentHTML("afterbegin", ShitHTML); Text = BlueskyAPI.ApplyFacets(OtherPost.value, OtherPost.value.text); Text = Text.replace(/\r?\n|\r/g, "
"); // Sensitive topic :3 if (OtherPost.value.hasOwnProperty("labels") && OtherPost.value.labels.length != 0) { document.getElementsByClassName("PostText " + ClassName)[0].innerHTML = "LABELS APPLIED: "; for (let lab of OtherPost.value.labels.values) { - document.getElementsByClassName("PostText " + ClassName)[0].innerHTML += lab.val + " "; + document.getElementsByClassName("PostText " + Id)[0].innerHTML += lab.val + " "; } } else { - document.getElementsByClassName("PostText " + ClassName)[0].innerHTML = Text; + document.getElementsByClassName("PostText " + Id)[0].innerHTML = Text; if (OtherPost.value.hasOwnProperty("embed")) { - ApplyMedia(OtherPost.value.embed, document.getElementsByClassName("Images " + ClassName)[0], OtherAuthor.did); + ApplyMedia(OtherPost.value.embed, document.getElementsByClassName("Images " + Id)[0], OtherAuthor.did); } } return OtherPost; -- 2.45.3 From 1ce3dea4c356177c076543ed59eaa0f4d2d0e887 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 19:12:32 -0700 Subject: [PATCH 34/48] a --- src/HTTP/JS/expanded.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index f5826b4..af0104a 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -154,10 +154,10 @@ async function GetPost() { SetBoost(); // Now time to see if there are any parents. if (post.hasOwnProperty("reply")) { - Parentpost = await BlueskyReplyFunction("0", post.reply.parent, post.reply.parent.author); + let TemporaryPost = await BlueskyReplyFunction("0", post.reply.parent, post.reply.parent.author); // Now time to see if there are any grandparents. - if (Parentpost.value.hasOwnProperty("reply")) { - GrandParentpost = await BlueskyReplyFunction("1", Parentpost.value.reply.parent, post.reply.grandparentAuthor); + if (TemporaryPost.value.hasOwnProperty("reply")) { + TemporaryPost = await BlueskyReplyFunction("1", TemporaryPost.value.reply.parent, post.reply.grandparentAuthor); } } } else { -- 2.45.3 From 4a07c41639b4420ed9e8c21414d9dd4f1926c8e3 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 19:16:17 -0700 Subject: [PATCH 35/48] b --- src/HTTP/JS/expanded.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index af0104a..8213bf1 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -184,7 +184,7 @@ async function MastodonReplylFunction(Id, post) { } async function BlueskyReplyFunction(Id, post, OtherAuthor) { - let OtherPost = await BlueskyAPI.GetRecord(post.uri.split("/")[2], post.uri.split("/")[3], post.uri.split("/")[4]); + let OtherPost = await BlueskyAPI.GetPosts([post.uri]); console.log(OtherPost); let ShitHTML = "

" + OtherAuthor.handle + "

" + website + "


"; document.getElementsByTagName("body")[0].insertAdjacentHTML("afterbegin", ShitHTML); -- 2.45.3 From e7273174aef9c2af47b931ea85feaa9b11fef521 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 19:24:24 -0700 Subject: [PATCH 36/48] reply? --- src/HTTP/JS/expanded.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index 8213bf1..c4c5705 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -109,7 +109,7 @@ async function GetPost() { ApplyMedia(i, document.getElementsByClassName("Images")[0]); } } - // Now time to see if there are any parents + // Now time to see if there are any parents. let NumberOfThreads = 0; let TemporaryPost = post; while (TemporaryPost.in_reply_to_id != null) { @@ -153,12 +153,19 @@ async function GetPost() { SetFavorite(); SetBoost(); // Now time to see if there are any parents. - if (post.hasOwnProperty("reply")) { - let TemporaryPost = await BlueskyReplyFunction("0", post.reply.parent, post.reply.parent.author); - // Now time to see if there are any grandparents. - if (TemporaryPost.value.hasOwnProperty("reply")) { - TemporaryPost = await BlueskyReplyFunction("1", TemporaryPost.value.reply.parent, post.reply.grandparentAuthor); + let NumberOfThreads = 0; + let TemporaryPost = post; + while (TemporaryPost.reply.parent != null) { + TemporaryPost = await BlueskyReplyFunction("0", TemporaryPost.reply.parent, TemporaryPost.reply.parent.author).posts[0]; + ThreadedPost.push(TemporaryPost); + // Any replies? Give them the thing :3 + for (let i of document.getElementsByClassName(NumberOfThreads)) { + let TempID = NumberOfThreads; + i.onclick = (event) => { + SetThreadPost(ThreadedPost[TempID], i); + } } + NumberOfThreads += 1; } } else { document.getElementsByClassName("PostText")[0].innerHTML = "Nothing to load."; -- 2.45.3 From c3fba0c0d83763707a63835d9493746e6e29c201 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 19:32:52 -0700 Subject: [PATCH 37/48] eugh --- src/HTTP/JS/expanded.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index c4c5705..f60b3c4 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -156,7 +156,7 @@ async function GetPost() { let NumberOfThreads = 0; let TemporaryPost = post; while (TemporaryPost.reply.parent != null) { - TemporaryPost = await BlueskyReplyFunction("0", TemporaryPost.reply.parent, TemporaryPost.reply.parent.author).posts[0]; + TemporaryPost = await BlueskyReplyFunction("0", TemporaryPost.reply.parent, TemporaryPost.reply.parent.author); ThreadedPost.push(TemporaryPost); // Any replies? Give them the thing :3 for (let i of document.getElementsByClassName(NumberOfThreads)) { @@ -190,23 +190,24 @@ async function MastodonReplylFunction(Id, post) { return OtherPost; } -async function BlueskyReplyFunction(Id, post, OtherAuthor) { +async function BlueskyReplyFunction(Id, post) { let OtherPost = await BlueskyAPI.GetPosts([post.uri]); + OtherPost = OtherPost.posts[0]; console.log(OtherPost); - let ShitHTML = "

" + OtherAuthor.handle + "

" + website + "


"; + let ShitHTML = "

" + Id.author.handle + "

" + website + "


"; document.getElementsByTagName("body")[0].insertAdjacentHTML("afterbegin", ShitHTML); - Text = BlueskyAPI.ApplyFacets(OtherPost.value, OtherPost.value.text); + Text = BlueskyAPI.ApplyFacets(OtherPost.record, OtherPost.record.text); Text = Text.replace(/\r?\n|\r/g, "
"); // Sensitive topic :3 - if (OtherPost.value.hasOwnProperty("labels") && OtherPost.value.labels.length != 0) { - document.getElementsByClassName("PostText " + ClassName)[0].innerHTML = "LABELS APPLIED: "; + if (OtherPost.record.hasOwnProperty("labels") && OtherPost.record.labels.length != 0) { + document.getElementsByClassName("PostText " + Id)[0].innerHTML = "LABELS APPLIED: "; for (let lab of OtherPost.value.labels.values) { document.getElementsByClassName("PostText " + Id)[0].innerHTML += lab.val + " "; } } else { document.getElementsByClassName("PostText " + Id)[0].innerHTML = Text; - if (OtherPost.value.hasOwnProperty("embed")) { - ApplyMedia(OtherPost.value.embed, document.getElementsByClassName("Images " + Id)[0], OtherAuthor.did); + if (OtherPost.record.hasOwnProperty("embed")) { + ApplyMedia(OtherPost.record.embed, document.getElementsByClassName("Images " + Id)[0], Id.author.did); } } return OtherPost; -- 2.45.3 From cd2ce6b3b3451730c9e40cad6c309fb58ccdbe4a Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 19:34:51 -0700 Subject: [PATCH 38/48] :( --- src/HTTP/JS/expanded.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index f60b3c4..a43cf85 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -156,7 +156,7 @@ async function GetPost() { let NumberOfThreads = 0; let TemporaryPost = post; while (TemporaryPost.reply.parent != null) { - TemporaryPost = await BlueskyReplyFunction("0", TemporaryPost.reply.parent, TemporaryPost.reply.parent.author); + TemporaryPost = await BlueskyReplyFunction("0", TemporaryPost.reply.parent); ThreadedPost.push(TemporaryPost); // Any replies? Give them the thing :3 for (let i of document.getElementsByClassName(NumberOfThreads)) { @@ -193,8 +193,7 @@ async function MastodonReplylFunction(Id, post) { async function BlueskyReplyFunction(Id, post) { let OtherPost = await BlueskyAPI.GetPosts([post.uri]); OtherPost = OtherPost.posts[0]; - console.log(OtherPost); - let ShitHTML = "

" + Id.author.handle + "

" + website + "


"; + let ShitHTML = "

" + post.author.handle + "

" + website + "


"; document.getElementsByTagName("body")[0].insertAdjacentHTML("afterbegin", ShitHTML); Text = BlueskyAPI.ApplyFacets(OtherPost.record, OtherPost.record.text); Text = Text.replace(/\r?\n|\r/g, "
"); @@ -207,7 +206,7 @@ async function BlueskyReplyFunction(Id, post) { } else { document.getElementsByClassName("PostText " + Id)[0].innerHTML = Text; if (OtherPost.record.hasOwnProperty("embed")) { - ApplyMedia(OtherPost.record.embed, document.getElementsByClassName("Images " + Id)[0], Id.author.did); + ApplyMedia(OtherPost.record.embed, document.getElementsByClassName("Images " + Id)[0], post.author.did); } } return OtherPost; -- 2.45.3 From e6dee7083b20c520b96f806d92651cd2015785f1 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 19:36:46 -0700 Subject: [PATCH 39/48] :(( --- src/HTTP/JS/expanded.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index a43cf85..68d96ac 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -155,7 +155,7 @@ async function GetPost() { // Now time to see if there are any parents. let NumberOfThreads = 0; let TemporaryPost = post; - while (TemporaryPost.reply.parent != null) { + while (TemporaryPost.hasOwnProperty("reply")) { TemporaryPost = await BlueskyReplyFunction("0", TemporaryPost.reply.parent); ThreadedPost.push(TemporaryPost); // Any replies? Give them the thing :3 -- 2.45.3 From e2b5c53ac51142d3198ef71150b21e0b9626c1ed Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 19:47:07 -0700 Subject: [PATCH 40/48] ow --- src/HTTP/JS/expanded.js | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index 68d96ac..efe0544 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -74,13 +74,7 @@ for (let i of document.getElementsByClassName("Regular")) { // Threads are the thing above the post you clicked. async function SetThreadPost(element, i) { - if (website == "Mastodon") { - localStorage.setItem("post", JSON.stringify(element)); - } else if (website == "Bluesky") { - let Temp = await BlueskyAPI.GetPosts(element.uri); - element.post = Temp.posts[0]; - localStorage.setItem("post", JSON.stringify(element)); - } + localStorage.setItem("post", JSON.stringify(element)); if (i.classList.contains("Handle")) { window.location.href = "/account?website=" + website; } else { @@ -156,7 +150,8 @@ async function GetPost() { let NumberOfThreads = 0; let TemporaryPost = post; while (TemporaryPost.hasOwnProperty("reply")) { - TemporaryPost = await BlueskyReplyFunction("0", TemporaryPost.reply.parent); + console.log(TemporaryPost); + TemporaryPost = await BlueskyReplyFunction(NumberOfThreads, TemporaryPost.reply.parent); ThreadedPost.push(TemporaryPost); // Any replies? Give them the thing :3 for (let i of document.getElementsByClassName(NumberOfThreads)) { -- 2.45.3 From 2ce7b6d725aebe2eee6f2b3e9b67d49869f8c310 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 19:59:55 -0700 Subject: [PATCH 41/48] this should work --- src/HTTP/JS/expanded.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index efe0544..12fb682 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -74,6 +74,13 @@ for (let i of document.getElementsByClassName("Regular")) { // Threads are the thing above the post you clicked. async function SetThreadPost(element, i) { + if (website == "Mastodon") { + localStorage.setItem("post", JSON.stringify(element)); + } else if (website == "Bluesky") { + let Temp = await BlueskyAPI.GetPosts(element.uri); + element.post = Temp.posts[0]; + localStorage.setItem("post", JSON.stringify(element)); + } localStorage.setItem("post", JSON.stringify(element)); if (i.classList.contains("Handle")) { window.location.href = "/account?website=" + website; @@ -150,7 +157,6 @@ async function GetPost() { let NumberOfThreads = 0; let TemporaryPost = post; while (TemporaryPost.hasOwnProperty("reply")) { - console.log(TemporaryPost); TemporaryPost = await BlueskyReplyFunction(NumberOfThreads, TemporaryPost.reply.parent); ThreadedPost.push(TemporaryPost); // Any replies? Give them the thing :3 @@ -204,6 +210,10 @@ async function BlueskyReplyFunction(Id, post) { ApplyMedia(OtherPost.record.embed, document.getElementsByClassName("Images " + Id)[0], post.author.did); } } + // Get the reply and make it make sense. + if (OtherPost.record.hasOwnProperty("reply")) { + OtherPost.reply = OtherPost.record.reply; + } return OtherPost; } -- 2.45.3 From 0cf3e90a7a1dc6dd6af6338f251888355a1ecabb Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 20:21:24 -0700 Subject: [PATCH 42/48] Did I mention Bsky sucks? --- src/HTTP/JS/expanded.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index 12fb682..5325dfb 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -194,7 +194,7 @@ async function MastodonReplylFunction(Id, post) { async function BlueskyReplyFunction(Id, post) { let OtherPost = await BlueskyAPI.GetPosts([post.uri]); OtherPost = OtherPost.posts[0]; - let ShitHTML = "

" + post.author.handle + "

" + website + "


"; + let ShitHTML = "

" + OtherPost.author.handle + "

" + website + "


"; document.getElementsByTagName("body")[0].insertAdjacentHTML("afterbegin", ShitHTML); Text = BlueskyAPI.ApplyFacets(OtherPost.record, OtherPost.record.text); Text = Text.replace(/\r?\n|\r/g, "
"); @@ -207,7 +207,7 @@ async function BlueskyReplyFunction(Id, post) { } else { document.getElementsByClassName("PostText " + Id)[0].innerHTML = Text; if (OtherPost.record.hasOwnProperty("embed")) { - ApplyMedia(OtherPost.record.embed, document.getElementsByClassName("Images " + Id)[0], post.author.did); + ApplyMedia(OtherPost.record.embed, document.getElementsByClassName("Images " + Id)[0], OtherPost.author.did); } } // Get the reply and make it make sense. -- 2.45.3 From 482ada0bcd1a61ee9a5a5e20876b38bc22049114 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 20:36:31 -0700 Subject: [PATCH 43/48] watch, I did somethning wrong, right? --- src/HTTP/JS/MastodonAPI.js | 8 +++++ src/HTTP/JS/expanded.js | 72 ++++++++++++++++++++++++++++++++++---- 2 files changed, 73 insertions(+), 7 deletions(-) diff --git a/src/HTTP/JS/MastodonAPI.js b/src/HTTP/JS/MastodonAPI.js index 0680fc4..b950692 100644 --- a/src/HTTP/JS/MastodonAPI.js +++ b/src/HTTP/JS/MastodonAPI.js @@ -93,6 +93,14 @@ export async function GetStatus(ID) { .then((response) => response.json()); } +export async function GetContexts(ID) { + if (Token == null || TokenType == null) { + return ""; + } + return await fetch(localStorage.getItem(Variables.MastodonWebsite) + "/api/v1/statuses/" + ID + "/context", {method: "GET", headers: {"Authorization": TokenType + " " + Token}}) + .then((response) => response.json()); +} + // Get your own account by verifying your credentials. export async function GetOwnAccount() { if (Token == null || TokenType == null) { diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index 5325dfb..801fa97 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -114,9 +114,9 @@ async function GetPost() { let NumberOfThreads = 0; let TemporaryPost = post; while (TemporaryPost.in_reply_to_id != null) { - TemporaryPost = await MastodonReplylFunction(NumberOfThreads, TemporaryPost.in_reply_to_id); + TemporaryPost = await MastodonThreadFunction(NumberOfThreads, TemporaryPost.in_reply_to_id); ThreadedPost.push(TemporaryPost); - // Any replies? Give them the thing :3 + // Any posts? Give them the thing :3 for (let i of document.getElementsByClassName(NumberOfThreads)) { let TempID = NumberOfThreads; i.onclick = (event) => { @@ -125,6 +125,20 @@ async function GetPost() { } NumberOfThreads += 1; } + // Replies, anyone? + let Context = await GetContexts(post.id); + for (let i of Context.descendants) { + TemporaryPost = await MastodonReplyFunction(NumberOfThreads, i); + ThreadedPost.push(TemporaryPost); + // Any posts? Give them the thing :3 + for (let j of document.getElementsByClassName(NumberOfThreads)) { + let TempID = NumberOfThreads; + j.onclick = (event) => { + SetThreadPost(ThreadedPost[TempID], j); + } + } + NumberOfThreads += 1; + } } else if (website == "Bluesky") { // Check for a reblog. if (post.hasOwnProperty("reason") && post.reason.$type == "app.bsky.feed.defs#reasonRepost") { @@ -157,9 +171,9 @@ async function GetPost() { let NumberOfThreads = 0; let TemporaryPost = post; while (TemporaryPost.hasOwnProperty("reply")) { - TemporaryPost = await BlueskyReplyFunction(NumberOfThreads, TemporaryPost.reply.parent); + TemporaryPost = await BlueskyThreadFunction(NumberOfThreads, TemporaryPost.reply.parent); ThreadedPost.push(TemporaryPost); - // Any replies? Give them the thing :3 + // Any posts? Give them the thing :3 for (let i of document.getElementsByClassName(NumberOfThreads)) { let TempID = NumberOfThreads; i.onclick = (event) => { @@ -173,8 +187,8 @@ async function GetPost() { } } -// Because of repeat code, we can put it into it's own function. Hell, more of a thread can be added later. -async function MastodonReplylFunction(Id, post) { +// Because of repeat code, we can put it into it's own function. It grabs posts "above" it. +async function MastodonThreadFunction(Id, post) { let OtherPost = await MastodonAPI.GetStatus(post); let ShitHTML = "

" + OtherPost.account.acct + "

" + website + "


"; document.getElementsByTagName("body")[0].insertAdjacentHTML("afterbegin", ShitHTML); @@ -191,7 +205,25 @@ async function MastodonReplylFunction(Id, post) { return OtherPost; } -async function BlueskyReplyFunction(Id, post) { +async function MastodonReplyFunction(Id, post) { + let OtherPost = await MastodonAPI.GetStatus(post); + let ShitHTML = "

" + OtherPost.account.acct + "

" + website + "


"; + document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend", ShitHTML); + if (OtherPost.spoiler_text != "") { + document.getElementsByClassName("PostText " + Id)[0].innerHTML = "WARNING: " + OtherPost.spoiler_text; + } else { + document.getElementsByClassName("PostText " + Id)[0].innerHTML = OtherPost.content; + if (OtherPost.media_attachments.length != 0) { + for (let i of OtherPost.media_attachments) { + ApplyMedia(i, document.getElementsByClassName("Images " + Id)); + } + } + } + return OtherPost; +} + +// Because of repeat code, we can put it into it's own function. It grabs posts "above" it. +async function BlueskyThreadFunction(Id, post) { let OtherPost = await BlueskyAPI.GetPosts([post.uri]); OtherPost = OtherPost.posts[0]; let ShitHTML = "

" + OtherPost.author.handle + "

" + website + "


"; @@ -217,6 +249,32 @@ async function BlueskyReplyFunction(Id, post) { return OtherPost; } +async function BlueskyReplyFunction(Id, post) { + let OtherPost = await BlueskyAPI.GetPosts([post.uri]); + OtherPost = OtherPost.posts[0]; + let ShitHTML = "

" + OtherPost.author.handle + "

" + website + "


"; + document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend", ShitHTML); + Text = BlueskyAPI.ApplyFacets(OtherPost.record, OtherPost.record.text); + Text = Text.replace(/\r?\n|\r/g, "
"); + // Sensitive topic :3 + if (OtherPost.record.hasOwnProperty("labels") && OtherPost.record.labels.length != 0) { + document.getElementsByClassName("PostText " + Id)[0].innerHTML = "LABELS APPLIED: "; + for (let lab of OtherPost.value.labels.values) { + document.getElementsByClassName("PostText " + Id)[0].innerHTML += lab.val + " "; + } + } else { + document.getElementsByClassName("PostText " + Id)[0].innerHTML = Text; + if (OtherPost.record.hasOwnProperty("embed")) { + ApplyMedia(OtherPost.record.embed, document.getElementsByClassName("Images " + Id)[0], OtherPost.author.did); + } + } + // Get the reply and make it make sense. + if (OtherPost.record.hasOwnProperty("reply")) { + OtherPost.reply = OtherPost.record.reply; + } + return OtherPost; +} + // Applyers. Essentially applies a thing to an operation. // Finds any associated media and applies it to the post. async function ApplyMedia(Media, Element, Author = undefined) { -- 2.45.3 From caae9453317c028f432e422b6ec85a7eb235186d Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 20:38:36 -0700 Subject: [PATCH 44/48] yup --- src/HTTP/JS/expanded.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index 801fa97..9f726ac 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -126,7 +126,7 @@ async function GetPost() { NumberOfThreads += 1; } // Replies, anyone? - let Context = await GetContexts(post.id); + let Context = await MastodonAPI.GetContexts(post.id); for (let i of Context.descendants) { TemporaryPost = await MastodonReplyFunction(NumberOfThreads, i); ThreadedPost.push(TemporaryPost); -- 2.45.3 From 96767049060096adb32b3669c66741130cc75dc5 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 20:43:59 -0700 Subject: [PATCH 45/48] object :/ --- src/HTTP/JS/expanded.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index 9f726ac..781b80c 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -206,15 +206,14 @@ async function MastodonThreadFunction(Id, post) { } async function MastodonReplyFunction(Id, post) { - let OtherPost = await MastodonAPI.GetStatus(post); - let ShitHTML = "

" + OtherPost.account.acct + "

" + website + "


"; + let ShitHTML = "

" + post.account.acct + "

" + website + "


"; document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend", ShitHTML); - if (OtherPost.spoiler_text != "") { - document.getElementsByClassName("PostText " + Id)[0].innerHTML = "WARNING: " + OtherPost.spoiler_text; + if (post.spoiler_text != "") { + document.getElementsByClassName("PostText " + Id)[0].innerHTML = "WARNING: " + post.spoiler_text; } else { - document.getElementsByClassName("PostText " + Id)[0].innerHTML = OtherPost.content; - if (OtherPost.media_attachments.length != 0) { - for (let i of OtherPost.media_attachments) { + document.getElementsByClassName("PostText " + Id)[0].innerHTML = post.content; + if (post.media_attachments.length != 0) { + for (let i of post.media_attachments) { ApplyMedia(i, document.getElementsByClassName("Images " + Id)); } } -- 2.45.3 From 013839b8a175069eba0c61e5be3c6fafd769fcdb Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 20:46:16 -0700 Subject: [PATCH 46/48] small fixes --- src/HTTP/CSS/expanded.css | 2 +- src/HTTP/JS/expanded.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/HTTP/CSS/expanded.css b/src/HTTP/CSS/expanded.css index a644b6b..0d07a2a 100644 --- a/src/HTTP/CSS/expanded.css +++ b/src/HTTP/CSS/expanded.css @@ -60,5 +60,5 @@ footer { display: flex; justify-content: center; - height: 5vh; + height: 130px; } diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index 781b80c..4159e0f 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -218,7 +218,7 @@ async function MastodonReplyFunction(Id, post) { } } } - return OtherPost; + return post; } // Because of repeat code, we can put it into it's own function. It grabs posts "above" it. -- 2.45.3 From 3f27873fcfb1da3b2a70ae3e6ec4859a4939a5bd Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 20:54:31 -0700 Subject: [PATCH 47/48] Need to see console --- src/HTTP/JS/BlueskyAPI.js | 17 +++++++++++++++++ src/HTTP/JS/expanded.js | 15 +++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/HTTP/JS/BlueskyAPI.js b/src/HTTP/JS/BlueskyAPI.js index a9c4e60..dae55a9 100644 --- a/src/HTTP/JS/BlueskyAPI.js +++ b/src/HTTP/JS/BlueskyAPI.js @@ -100,6 +100,23 @@ export async function GetPosts(URIs) { return body; } +export async function GetPostThread(URI) { + if (Token == null) { + return ""; + } + let FetchThing = localStorage.getItem(Variables.BlueskyPDS) + "/xrpc/app.bsky.feed.getPostThread?uri=" + URI; + let DPoP = await ClientDPoPPDS("GET", FetchThing); + let request = fetch(FetchThing, { method: "GET", headers: {"Authorization": "DPoP " + Token, "DPoP": DPoP}}); + let body = await request.then((response) => response.json()); + let status = await request.then((response) => response.status); + let header = await request.then((response) => response.headers.get("dpop-nonce")); + if (status == 401) { + await HandleError(body, header); + body = await GetPostThread(URI); + } + return body; +} + // Get a blob (like an image or video). Authentication need not apply. export async function GetBlob(DID, CID) { let request = fetch("https://bsky.social/xrpc/com.atproto.sync.getBlob?did=" + DID + "&cid=" + CID, {method: "GET"}); diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index 4159e0f..d560879 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -182,6 +182,21 @@ async function GetPost() { } NumberOfThreads += 1; } + // Replies, anyone? + let Context = await BlueskyAPI.GetPostThread(post.record.uri); + console.log(Context); + for (let i of Context.descendants) { + TemporaryPost = await BlueskyReplyFunction(NumberOfThreads, i); + ThreadedPost.push(TemporaryPost); + // Any posts? Give them the thing :3 + for (let j of document.getElementsByClassName(NumberOfThreads)) { + let TempID = NumberOfThreads; + j.onclick = (event) => { + SetThreadPost(ThreadedPost[TempID], j); + } + } + NumberOfThreads += 1; + } } else { document.getElementsByClassName("PostText")[0].innerHTML = "Nothing to load."; } -- 2.45.3 From 5455a745738bf4b08385dc6a4871881031e2e5b5 Mon Sep 17 00:00:00 2001 From: CatAClock Date: Wed, 16 Jul 2025 21:01:44 -0700 Subject: [PATCH 48/48] that should do it --- src/HTTP/JS/expanded.js | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/src/HTTP/JS/expanded.js b/src/HTTP/JS/expanded.js index d560879..82ca172 100644 --- a/src/HTTP/JS/expanded.js +++ b/src/HTTP/JS/expanded.js @@ -183,9 +183,9 @@ async function GetPost() { NumberOfThreads += 1; } // Replies, anyone? - let Context = await BlueskyAPI.GetPostThread(post.record.uri); + let Context = await BlueskyAPI.GetPostThread(post.post.uri); console.log(Context); - for (let i of Context.descendants) { + for (let i of Context.thread.replies) { TemporaryPost = await BlueskyReplyFunction(NumberOfThreads, i); ThreadedPost.push(TemporaryPost); // Any posts? Give them the thing :3 @@ -264,29 +264,23 @@ async function BlueskyThreadFunction(Id, post) { } async function BlueskyReplyFunction(Id, post) { - let OtherPost = await BlueskyAPI.GetPosts([post.uri]); - OtherPost = OtherPost.posts[0]; - let ShitHTML = "

" + OtherPost.author.handle + "

" + website + "


"; + let ShitHTML = "

" + post.post.author.handle + "

" + website + "


"; document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend", ShitHTML); - Text = BlueskyAPI.ApplyFacets(OtherPost.record, OtherPost.record.text); + Text = BlueskyAPI.ApplyFacets(post.post.record, post.post.record.text); Text = Text.replace(/\r?\n|\r/g, "
"); // Sensitive topic :3 - if (OtherPost.record.hasOwnProperty("labels") && OtherPost.record.labels.length != 0) { + if (post.post.record.hasOwnProperty("labels") && post.post.record.labels.length != 0) { document.getElementsByClassName("PostText " + Id)[0].innerHTML = "LABELS APPLIED: "; - for (let lab of OtherPost.value.labels.values) { + for (let lab of post.post.value.labels.values) { document.getElementsByClassName("PostText " + Id)[0].innerHTML += lab.val + " "; } } else { document.getElementsByClassName("PostText " + Id)[0].innerHTML = Text; - if (OtherPost.record.hasOwnProperty("embed")) { - ApplyMedia(OtherPost.record.embed, document.getElementsByClassName("Images " + Id)[0], OtherPost.author.did); + if (post.post.record.hasOwnProperty("embed")) { + ApplyMedia(post.post.record.embed, document.getElementsByClassName("Images " + Id)[0], post.post.author.did); } } - // Get the reply and make it make sense. - if (OtherPost.record.hasOwnProperty("reply")) { - OtherPost.reply = OtherPost.record.reply; - } - return OtherPost; + return post; } // Applyers. Essentially applies a thing to an operation. -- 2.45.3