From 0a782e0096f3b6ec17c8a23204175eebb997e1aa Mon Sep 17 00:00:00 2001 From: bakonpancakz Date: Sun, 24 May 2026 21:58:23 -0700 Subject: [PATCH] Initial Release --- .gitignore | 1 + .vscode/extensions.json | 6 + .vscode/settings.json | 26 + README.txt | 24 + suzzy-v0-standalone/.gitignore | 1 + suzzy-v0-standalone/README.old.md | 62 + suzzy-v0-standalone/README.txt | 19 + suzzy-v0-standalone/_todo/__oauth2.pug | 56 + .../_todo/_scripts/account-applications.js | 291 +++ .../_todo/_scripts/account-connections.js | 94 + .../_todo/_scripts/account-devices.js | 80 + .../_todo/_scripts/account-profile.js | 263 ++ .../_todo/_scripts/account-security.js | 281 +++ .../_todo/_scripts/login-index.js | 67 + .../_todo/_scripts/login-oauth2.js | 78 + .../_todo/_styles/ui-account.css | 389 +++ .../_todo/public/Users-Profile.pug | 73 + .../assets/audio/picross_1.mp3 | Bin 0 -> 9787 bytes .../assets/audio/picross_2.mp3 | Bin 0 -> 9787 bytes .../assets/blog/author-bakonpancakz.png | Bin 0 -> 9055 bytes .../assets/blog/category-any.png | Bin 0 -> 978 bytes .../assets/blog/category-bts.png | Bin 0 -> 887 bytes .../assets/blog/category-pm.png | Bin 0 -> 3980 bytes .../blog/hello-world/FNAK_Options_InGame.mp3 | Bin 0 -> 2022535 bytes .../hello-world/FNAK_Options_Original.mp3 | Bin 0 -> 2022548 bytes .../assets/blog/hello-world/FNAK_Stage_1.mp3 | Bin 0 -> 2530413 bytes .../assets/blog/hello-world/FNAK_Stage_2.mp3 | Bin 0 -> 1687149 bytes .../assets/blog/hello-world/FNAK_Stage_3.mp3 | Bin 0 -> 1687149 bytes .../assets/blog/hello-world/FNAK_Stage_4.mp3 | Bin 0 -> 1968237 bytes .../hello-world/ProjectMonke_Settings.mp3 | Bin 0 -> 1176181 bytes .../blog/hello-world/ProjectZ-Cover.jpeg | Bin 0 -> 54887 bytes .../assets/blog/hello-world/ProjectZ.mp4 | Bin 0 -> 2248926 bytes .../assets/blog/hello-world/ProjectZ.webm | Bin 0 -> 908814 bytes .../assets/blog/hello-world/banner.gif | Bin 0 -> 18714 bytes .../assets/blog/hello-world/craf-1.jpeg | Bin 0 -> 78053 bytes .../assets/blog/hello-world/craf-2.jpeg | Bin 0 -> 121873 bytes .../assets/blog/hello-world/fnak-1.jpeg | Bin 0 -> 134887 bytes .../assets/blog/hello-world/fnak-2.jpeg | Bin 0 -> 209569 bytes .../assets/blog/hello-world/fnak-3.jpeg | Bin 0 -> 135929 bytes .../blog/hello-world/peak-performance.jpeg | Bin 0 -> 205201 bytes .../blog/hello-world/settings-Cover.jpeg | Bin 0 -> 36060 bytes .../assets/blog/hello-world/settings.mp4 | Bin 0 -> 1066722 bytes .../assets/blog/hello-world/settings.webm | Bin 0 -> 1040636 bytes .../blog/repo-of-knowledge/BECCA2D_TEASER.mp4 | Bin 0 -> 333854 bytes .../BECCA2D_TEASER_COVER.png | Bin 0 -> 13921 bytes .../repo-of-knowledge/LIBRARY_SHOWCASE.png | Bin 0 -> 161934 bytes .../repo-of-knowledge/OAUTH2_SHOWCASE.png | Bin 0 -> 53928 bytes .../blog/repo-of-knowledge/SITE_SHOWCASE.jpg | Bin 0 -> 100207 bytes .../assets/blog/repo-of-knowledge/banner.png | Bin 0 -> 36781 bytes .../blog/repo-of-knowledge/conclusion.png | Bin 0 -> 319299 bytes .../assets/email/background.png | Bin 0 -> 2826 bytes suzzy-v0-standalone/assets/email/bimi.svg | 24 + suzzy-v0-standalone/assets/email/logo.gif | Bin 0 -> 590 bytes .../assets/fonts/font-poppins.css | 59 + .../fonts/pxiByp8kv8JHgFVrLEj6Z11lFc-K.woff2 | Bin 0 -> 39324 bytes .../fonts/pxiByp8kv8JHgFVrLEj6Z1JlFc-K.woff2 | Bin 0 -> 5512 bytes .../fonts/pxiByp8kv8JHgFVrLEj6Z1xlFQ.woff2 | Bin 0 -> 8000 bytes .../fonts/pxiEyp8kv8JHgFVrJJbecmNE.woff2 | Bin 0 -> 39564 bytes .../assets/fonts/pxiEyp8kv8JHgFVrJJfecg.woff2 | Bin 0 -> 7884 bytes .../fonts/pxiEyp8kv8JHgFVrJJnecmNE.woff2 | Bin 0 -> 5544 bytes .../assets/icons/badge-crown.svg | 1 + .../assets/icons/badge-picross.svg | 1 + .../assets/icons/badge-star.svg | 1 + .../assets/icons/diagram-connection.svg | 1 + .../assets/icons/diagram-loading.svg | 28 + .../assets/icons/icon-app-none.svg | 1 + suzzy-v0-standalone/assets/icons/icon-app.svg | 1 + .../assets/icons/icon-computer.svg | 1 + .../assets/icons/icon-cross.svg | 1 + .../assets/icons/icon-delete.svg | 1 + .../assets/icons/icon-desktop.svg | 1 + .../assets/icons/icon-download.svg | 1 + .../assets/icons/icon-exit.svg | 1 + .../assets/icons/icon-filter.svg | 1 + .../assets/icons/icon-lock.svg | 1 + .../assets/icons/icon-mobile.svg | 1 + .../assets/icons/icon-pause.svg | 1 + .../assets/icons/icon-play.svg | 1 + .../assets/icons/icon-plug-socket.svg | 1 + .../assets/icons/icon-plug.svg | 1 + .../assets/icons/icon-star.svg | 1 + .../assets/icons/icon-user.svg | 1 + .../assets/icons/icon-volume.svg | 1 + .../assets/images/background-blog.png | Bin 0 -> 2815 bytes .../assets/images/background-cat.png | Bin 0 -> 3021 bytes .../assets/images/background-home.png | Bin 0 -> 1541 bytes .../assets/images/brands/logo-discord.png | Bin 0 -> 485 bytes .../assets/images/brands/logo-roblox.png | Bin 0 -> 413 bytes .../assets/images/brands/logo-x.png | Bin 0 -> 583 bytes .../assets/images/default-anon.png | Bin 0 -> 576 bytes .../assets/images/default-icon.png | Bin 0 -> 1283 bytes .../assets/images/default-user0.png | Bin 0 -> 539 bytes .../assets/images/default-user1.png | Bin 0 -> 499 bytes .../assets/images/default-user2.png | Bin 0 -> 351 bytes .../assets/images/default-user3.png | Bin 0 -> 521 bytes .../assets/images/default-user4.png | Bin 0 -> 480 bytes .../assets/images/default-user5.png | Bin 0 -> 581 bytes suzzy-v0-standalone/assets/images/favicon.png | Bin 0 -> 1508 bytes .../assets/images/login-globe.png | Bin 0 -> 6831 bytes .../assets/images/public-footer.gif | Bin 0 -> 2115 bytes .../assets/images/public-logo-og.png | Bin 0 -> 7529 bytes .../assets/images/public-logo.png | Bin 0 -> 4786 bytes .../assets/images/public-nopage.png | Bin 0 -> 2967 bytes .../assets/images/public-noposts.png | Bin 0 -> 1421 bytes .../assets/library/background-navigation.png | Bin 0 -> 5592 bytes .../assets/library/branding/becca-logo.svg | 14 + .../library/branding/craf-gameicon-1.png | Bin 0 -> 3779852 bytes .../library/branding/craf-gameicon-2.png | Bin 0 -> 1714472 bytes .../assets/library/branding/craf-promo-1.png | Bin 0 -> 1828449 bytes .../assets/library/branding/craf-promo-2.png | Bin 0 -> 1581941 bytes .../branding/monke-gameicon-initials.png | Bin 0 -> 168321 bytes .../library/branding/monke-gameicon.png | Bin 0 -> 255014 bytes .../library/branding/monke-logo-initials.png | Bin 0 -> 83655 bytes .../library/branding/monke-logo-text.png | Bin 0 -> 414396 bytes .../assets/library/branding/monke-promo-1.png | Bin 0 -> 469491 bytes .../assets/library/branding/suzzy-icon.png | Bin 0 -> 15844 bytes .../assets/library/branding/suzzy-logo.png | Bin 0 -> 98888 bytes .../assets/library/favicon.png | Bin 0 -> 3303 bytes .../library/introduction/banner-welcome.png | Bin 0 -> 10627 bytes .../assets/library/logo-navigation.png | Bin 0 -> 12006 bytes .../assets/library/logo-og.png | Bin 0 -> 11680 bytes .../assets/library/search/search-empty.png | Bin 0 -> 1125 bytes .../assets/library/search/search-error.png | Bin 0 -> 1125 bytes .../assets/library/search/search-initial.png | Bin 0 -> 1125 bytes .../library/tutorials/applications-step-1.png | Bin 0 -> 147144 bytes .../library/tutorials/applications-step-2.png | Bin 0 -> 169360 bytes .../assets/projects/craf/background.jpeg | Bin 0 -> 13643 bytes .../assets/projects/craf/image-1.jpeg | Bin 0 -> 137477 bytes .../assets/projects/craf/image-2.jpeg | Bin 0 -> 125572 bytes .../assets/projects/monke/background.jpeg | Bin 0 -> 45820 bytes .../assets/projects/monke/image-1.jpeg | Bin 0 -> 175243 bytes .../assets/scripts/browser-blog.ts | 47 + .../assets/scripts/browser-library.ts | 201 ++ .../assets/scripts/challenge-picross.ts | 120 + .../assets/scripts/login-index.ts | 36 + .../assets/scripts/login-passwordreset.ts | 36 + .../assets/scripts/login-passwordupdate.ts | 47 + .../assets/scripts/login-signup.ts | 47 + .../assets/scripts/login-verifyemail.ts | 10 + .../assets/scripts/login-verifylogin.ts | 10 + .../assets/scripts/public-homepage.ts | 8 + .../assets/scripts/public-projects.ts | 41 + .../assets/scripts/shared-article.ts | 123 + .../assets/scripts/shared-public.ts | 98 + .../assets/scripts/shared-utils.ts | 440 ++++ .../assets/styles/browser-blog.css | 385 +++ .../assets/styles/browser-library.css | 431 ++++ .../assets/styles/public-homepage.css | 43 + .../assets/styles/public-projects.css | 220 ++ .../assets/styles/template-article.css | 314 +++ .../assets/styles/template-global.css | 250 ++ .../assets/styles/template-modals.css | 139 ++ .../assets/styles/template-profile.css | 103 + .../assets/styles/template-public.css | 206 ++ .../assets/styles/template-special.css | 134 + suzzy-v0-standalone/package-lock.json | 2187 +++++++++++++++++ suzzy-v0-standalone/package.json | 30 + suzzy-v0-standalone/source/class/articles.ts | 414 ++++ suzzy-v0-standalone/source/constants.ts | 107 + .../source/functions/logger.ts | 17 + .../source/functions/parseArticle.ts | 132 + .../source/functions/processFile.ts | 145 ++ .../source/functions/processView.ts | 60 + .../source/functions/pugHelpers.ts | 66 + .../source/functions/serveFunctions.ts | 51 + suzzy-v0-standalone/source/service.ts | 103 + .../source/types/articles.d.ts | 147 ++ suzzy-v0-standalone/tsconfig.json | 17 + suzzy-v0-standalone/views/404.pug | 16 + .../views/_TemplateArticle.pug | 79 + .../views/_TemplateProfile.pug | 67 + .../views/_TemplateProfilePage.pug | 15 + suzzy-v0-standalone/views/_TemplatePublic.pug | 66 + .../views/_TemplateSpecial.pug | 17 + .../blog/articles/04.17.24.Hello World.xml | 182 ++ .../articles/05.03.24.Repo of Knowledge.xml | 103 + suzzy-v0-standalone/views/blog/browser.pug | 104 + suzzy-v0-standalone/views/blog/manifest.json | 26 + suzzy-v0-standalone/views/blog/post.pug | 55 + .../library/articles/api/Applications.xml | 57 + .../views/library/articles/api/Changelog.xml | 23 + .../views/library/articles/api/OAuth2.xml | 155 ++ .../views/library/articles/api/Reference.xml | 108 + .../views/library/articles/api/Tutorials.xml | 28 + .../views/library/articles/api/Users.xml | 212 ++ .../views/library/articles/home/Branding.xml | 64 + .../views/library/articles/home/Welcome.xml | 27 + .../library/articles/legal/Privacy Policy.xml | 24 + .../articles/legal/Terms of Service.xml | 24 + .../library/articles/status/Endpoints.xml | 135 + .../library/articles/status/Reference.xml | 310 +++ suzzy-v0-standalone/views/library/browser.pug | 1 + .../views/library/manifest.json | 47 + suzzy-v0-standalone/views/library/post.pug | 1 + .../views/library/template.pug | 110 + .../views/profile/applications.pug | 102 + .../views/profile/connections.pug | 37 + suzzy-v0-standalone/views/profile/devices.pug | 30 + suzzy-v0-standalone/views/profile/index.pug | 96 + .../views/profile/security.pug | 57 + .../views/public/challenge-picross.pug | 187 ++ suzzy-v0-standalone/views/public/index.pug | 28 + suzzy-v0-standalone/views/public/login.pug | 6 + .../views/public/password-reset.pug | 6 + .../views/public/password-update.pug | 6 + suzzy-v0-standalone/views/public/projects.pug | 105 + suzzy-v0-standalone/views/public/signup.pug | 6 + .../views/public/verify-email.pug | 6 + .../views/public/verify-login.pug | 6 + 209 files changed, 11657 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 README.txt create mode 100644 suzzy-v0-standalone/.gitignore create mode 100644 suzzy-v0-standalone/README.old.md create mode 100644 suzzy-v0-standalone/README.txt create mode 100644 suzzy-v0-standalone/_todo/__oauth2.pug create mode 100644 suzzy-v0-standalone/_todo/_scripts/account-applications.js create mode 100644 suzzy-v0-standalone/_todo/_scripts/account-connections.js create mode 100644 suzzy-v0-standalone/_todo/_scripts/account-devices.js create mode 100644 suzzy-v0-standalone/_todo/_scripts/account-profile.js create mode 100644 suzzy-v0-standalone/_todo/_scripts/account-security.js create mode 100644 suzzy-v0-standalone/_todo/_scripts/login-index.js create mode 100644 suzzy-v0-standalone/_todo/_scripts/login-oauth2.js create mode 100644 suzzy-v0-standalone/_todo/_styles/ui-account.css create mode 100644 suzzy-v0-standalone/_todo/public/Users-Profile.pug create mode 100644 suzzy-v0-standalone/assets/audio/picross_1.mp3 create mode 100644 suzzy-v0-standalone/assets/audio/picross_2.mp3 create mode 100644 suzzy-v0-standalone/assets/blog/author-bakonpancakz.png create mode 100644 suzzy-v0-standalone/assets/blog/category-any.png create mode 100644 suzzy-v0-standalone/assets/blog/category-bts.png create mode 100644 suzzy-v0-standalone/assets/blog/category-pm.png create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/FNAK_Options_InGame.mp3 create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/FNAK_Options_Original.mp3 create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/FNAK_Stage_1.mp3 create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/FNAK_Stage_2.mp3 create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/FNAK_Stage_3.mp3 create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/FNAK_Stage_4.mp3 create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/ProjectMonke_Settings.mp3 create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/ProjectZ-Cover.jpeg create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/ProjectZ.mp4 create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/ProjectZ.webm create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/banner.gif create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/craf-1.jpeg create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/craf-2.jpeg create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/fnak-1.jpeg create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/fnak-2.jpeg create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/fnak-3.jpeg create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/peak-performance.jpeg create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/settings-Cover.jpeg create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/settings.mp4 create mode 100644 suzzy-v0-standalone/assets/blog/hello-world/settings.webm create mode 100644 suzzy-v0-standalone/assets/blog/repo-of-knowledge/BECCA2D_TEASER.mp4 create mode 100644 suzzy-v0-standalone/assets/blog/repo-of-knowledge/BECCA2D_TEASER_COVER.png create mode 100644 suzzy-v0-standalone/assets/blog/repo-of-knowledge/LIBRARY_SHOWCASE.png create mode 100644 suzzy-v0-standalone/assets/blog/repo-of-knowledge/OAUTH2_SHOWCASE.png create mode 100644 suzzy-v0-standalone/assets/blog/repo-of-knowledge/SITE_SHOWCASE.jpg create mode 100644 suzzy-v0-standalone/assets/blog/repo-of-knowledge/banner.png create mode 100644 suzzy-v0-standalone/assets/blog/repo-of-knowledge/conclusion.png create mode 100644 suzzy-v0-standalone/assets/email/background.png create mode 100644 suzzy-v0-standalone/assets/email/bimi.svg create mode 100644 suzzy-v0-standalone/assets/email/logo.gif create mode 100644 suzzy-v0-standalone/assets/fonts/font-poppins.css create mode 100644 suzzy-v0-standalone/assets/fonts/pxiByp8kv8JHgFVrLEj6Z11lFc-K.woff2 create mode 100644 suzzy-v0-standalone/assets/fonts/pxiByp8kv8JHgFVrLEj6Z1JlFc-K.woff2 create mode 100644 suzzy-v0-standalone/assets/fonts/pxiByp8kv8JHgFVrLEj6Z1xlFQ.woff2 create mode 100644 suzzy-v0-standalone/assets/fonts/pxiEyp8kv8JHgFVrJJbecmNE.woff2 create mode 100644 suzzy-v0-standalone/assets/fonts/pxiEyp8kv8JHgFVrJJfecg.woff2 create mode 100644 suzzy-v0-standalone/assets/fonts/pxiEyp8kv8JHgFVrJJnecmNE.woff2 create mode 100644 suzzy-v0-standalone/assets/icons/badge-crown.svg create mode 100644 suzzy-v0-standalone/assets/icons/badge-picross.svg create mode 100644 suzzy-v0-standalone/assets/icons/badge-star.svg create mode 100644 suzzy-v0-standalone/assets/icons/diagram-connection.svg create mode 100644 suzzy-v0-standalone/assets/icons/diagram-loading.svg create mode 100644 suzzy-v0-standalone/assets/icons/icon-app-none.svg create mode 100644 suzzy-v0-standalone/assets/icons/icon-app.svg create mode 100644 suzzy-v0-standalone/assets/icons/icon-computer.svg create mode 100644 suzzy-v0-standalone/assets/icons/icon-cross.svg create mode 100644 suzzy-v0-standalone/assets/icons/icon-delete.svg create mode 100644 suzzy-v0-standalone/assets/icons/icon-desktop.svg create mode 100644 suzzy-v0-standalone/assets/icons/icon-download.svg create mode 100644 suzzy-v0-standalone/assets/icons/icon-exit.svg create mode 100644 suzzy-v0-standalone/assets/icons/icon-filter.svg create mode 100644 suzzy-v0-standalone/assets/icons/icon-lock.svg create mode 100644 suzzy-v0-standalone/assets/icons/icon-mobile.svg create mode 100644 suzzy-v0-standalone/assets/icons/icon-pause.svg create mode 100644 suzzy-v0-standalone/assets/icons/icon-play.svg create mode 100644 suzzy-v0-standalone/assets/icons/icon-plug-socket.svg create mode 100644 suzzy-v0-standalone/assets/icons/icon-plug.svg create mode 100644 suzzy-v0-standalone/assets/icons/icon-star.svg create mode 100644 suzzy-v0-standalone/assets/icons/icon-user.svg create mode 100644 suzzy-v0-standalone/assets/icons/icon-volume.svg create mode 100644 suzzy-v0-standalone/assets/images/background-blog.png create mode 100644 suzzy-v0-standalone/assets/images/background-cat.png create mode 100644 suzzy-v0-standalone/assets/images/background-home.png create mode 100644 suzzy-v0-standalone/assets/images/brands/logo-discord.png create mode 100644 suzzy-v0-standalone/assets/images/brands/logo-roblox.png create mode 100644 suzzy-v0-standalone/assets/images/brands/logo-x.png create mode 100644 suzzy-v0-standalone/assets/images/default-anon.png create mode 100644 suzzy-v0-standalone/assets/images/default-icon.png create mode 100644 suzzy-v0-standalone/assets/images/default-user0.png create mode 100644 suzzy-v0-standalone/assets/images/default-user1.png create mode 100644 suzzy-v0-standalone/assets/images/default-user2.png create mode 100644 suzzy-v0-standalone/assets/images/default-user3.png create mode 100644 suzzy-v0-standalone/assets/images/default-user4.png create mode 100644 suzzy-v0-standalone/assets/images/default-user5.png create mode 100644 suzzy-v0-standalone/assets/images/favicon.png create mode 100644 suzzy-v0-standalone/assets/images/login-globe.png create mode 100644 suzzy-v0-standalone/assets/images/public-footer.gif create mode 100644 suzzy-v0-standalone/assets/images/public-logo-og.png create mode 100644 suzzy-v0-standalone/assets/images/public-logo.png create mode 100644 suzzy-v0-standalone/assets/images/public-nopage.png create mode 100644 suzzy-v0-standalone/assets/images/public-noposts.png create mode 100644 suzzy-v0-standalone/assets/library/background-navigation.png create mode 100644 suzzy-v0-standalone/assets/library/branding/becca-logo.svg create mode 100644 suzzy-v0-standalone/assets/library/branding/craf-gameicon-1.png create mode 100644 suzzy-v0-standalone/assets/library/branding/craf-gameicon-2.png create mode 100644 suzzy-v0-standalone/assets/library/branding/craf-promo-1.png create mode 100644 suzzy-v0-standalone/assets/library/branding/craf-promo-2.png create mode 100644 suzzy-v0-standalone/assets/library/branding/monke-gameicon-initials.png create mode 100644 suzzy-v0-standalone/assets/library/branding/monke-gameicon.png create mode 100644 suzzy-v0-standalone/assets/library/branding/monke-logo-initials.png create mode 100644 suzzy-v0-standalone/assets/library/branding/monke-logo-text.png create mode 100644 suzzy-v0-standalone/assets/library/branding/monke-promo-1.png create mode 100644 suzzy-v0-standalone/assets/library/branding/suzzy-icon.png create mode 100644 suzzy-v0-standalone/assets/library/branding/suzzy-logo.png create mode 100644 suzzy-v0-standalone/assets/library/favicon.png create mode 100644 suzzy-v0-standalone/assets/library/introduction/banner-welcome.png create mode 100644 suzzy-v0-standalone/assets/library/logo-navigation.png create mode 100644 suzzy-v0-standalone/assets/library/logo-og.png create mode 100644 suzzy-v0-standalone/assets/library/search/search-empty.png create mode 100644 suzzy-v0-standalone/assets/library/search/search-error.png create mode 100644 suzzy-v0-standalone/assets/library/search/search-initial.png create mode 100644 suzzy-v0-standalone/assets/library/tutorials/applications-step-1.png create mode 100644 suzzy-v0-standalone/assets/library/tutorials/applications-step-2.png create mode 100644 suzzy-v0-standalone/assets/projects/craf/background.jpeg create mode 100644 suzzy-v0-standalone/assets/projects/craf/image-1.jpeg create mode 100644 suzzy-v0-standalone/assets/projects/craf/image-2.jpeg create mode 100644 suzzy-v0-standalone/assets/projects/monke/background.jpeg create mode 100644 suzzy-v0-standalone/assets/projects/monke/image-1.jpeg create mode 100644 suzzy-v0-standalone/assets/scripts/browser-blog.ts create mode 100644 suzzy-v0-standalone/assets/scripts/browser-library.ts create mode 100644 suzzy-v0-standalone/assets/scripts/challenge-picross.ts create mode 100644 suzzy-v0-standalone/assets/scripts/login-index.ts create mode 100644 suzzy-v0-standalone/assets/scripts/login-passwordreset.ts create mode 100644 suzzy-v0-standalone/assets/scripts/login-passwordupdate.ts create mode 100644 suzzy-v0-standalone/assets/scripts/login-signup.ts create mode 100644 suzzy-v0-standalone/assets/scripts/login-verifyemail.ts create mode 100644 suzzy-v0-standalone/assets/scripts/login-verifylogin.ts create mode 100644 suzzy-v0-standalone/assets/scripts/public-homepage.ts create mode 100644 suzzy-v0-standalone/assets/scripts/public-projects.ts create mode 100644 suzzy-v0-standalone/assets/scripts/shared-article.ts create mode 100644 suzzy-v0-standalone/assets/scripts/shared-public.ts create mode 100644 suzzy-v0-standalone/assets/scripts/shared-utils.ts create mode 100644 suzzy-v0-standalone/assets/styles/browser-blog.css create mode 100644 suzzy-v0-standalone/assets/styles/browser-library.css create mode 100644 suzzy-v0-standalone/assets/styles/public-homepage.css create mode 100644 suzzy-v0-standalone/assets/styles/public-projects.css create mode 100644 suzzy-v0-standalone/assets/styles/template-article.css create mode 100644 suzzy-v0-standalone/assets/styles/template-global.css create mode 100644 suzzy-v0-standalone/assets/styles/template-modals.css create mode 100644 suzzy-v0-standalone/assets/styles/template-profile.css create mode 100644 suzzy-v0-standalone/assets/styles/template-public.css create mode 100644 suzzy-v0-standalone/assets/styles/template-special.css create mode 100644 suzzy-v0-standalone/package-lock.json create mode 100644 suzzy-v0-standalone/package.json create mode 100644 suzzy-v0-standalone/source/class/articles.ts create mode 100644 suzzy-v0-standalone/source/constants.ts create mode 100644 suzzy-v0-standalone/source/functions/logger.ts create mode 100644 suzzy-v0-standalone/source/functions/parseArticle.ts create mode 100644 suzzy-v0-standalone/source/functions/processFile.ts create mode 100644 suzzy-v0-standalone/source/functions/processView.ts create mode 100644 suzzy-v0-standalone/source/functions/pugHelpers.ts create mode 100644 suzzy-v0-standalone/source/functions/serveFunctions.ts create mode 100644 suzzy-v0-standalone/source/service.ts create mode 100644 suzzy-v0-standalone/source/types/articles.d.ts create mode 100644 suzzy-v0-standalone/tsconfig.json create mode 100644 suzzy-v0-standalone/views/404.pug create mode 100644 suzzy-v0-standalone/views/_TemplateArticle.pug create mode 100644 suzzy-v0-standalone/views/_TemplateProfile.pug create mode 100644 suzzy-v0-standalone/views/_TemplateProfilePage.pug create mode 100644 suzzy-v0-standalone/views/_TemplatePublic.pug create mode 100644 suzzy-v0-standalone/views/_TemplateSpecial.pug create mode 100644 suzzy-v0-standalone/views/blog/articles/04.17.24.Hello World.xml create mode 100644 suzzy-v0-standalone/views/blog/articles/05.03.24.Repo of Knowledge.xml create mode 100644 suzzy-v0-standalone/views/blog/browser.pug create mode 100644 suzzy-v0-standalone/views/blog/manifest.json create mode 100644 suzzy-v0-standalone/views/blog/post.pug create mode 100644 suzzy-v0-standalone/views/library/articles/api/Applications.xml create mode 100644 suzzy-v0-standalone/views/library/articles/api/Changelog.xml create mode 100644 suzzy-v0-standalone/views/library/articles/api/OAuth2.xml create mode 100644 suzzy-v0-standalone/views/library/articles/api/Reference.xml create mode 100644 suzzy-v0-standalone/views/library/articles/api/Tutorials.xml create mode 100644 suzzy-v0-standalone/views/library/articles/api/Users.xml create mode 100644 suzzy-v0-standalone/views/library/articles/home/Branding.xml create mode 100644 suzzy-v0-standalone/views/library/articles/home/Welcome.xml create mode 100644 suzzy-v0-standalone/views/library/articles/legal/Privacy Policy.xml create mode 100644 suzzy-v0-standalone/views/library/articles/legal/Terms of Service.xml create mode 100644 suzzy-v0-standalone/views/library/articles/status/Endpoints.xml create mode 100644 suzzy-v0-standalone/views/library/articles/status/Reference.xml create mode 100644 suzzy-v0-standalone/views/library/browser.pug create mode 100644 suzzy-v0-standalone/views/library/manifest.json create mode 100644 suzzy-v0-standalone/views/library/post.pug create mode 100644 suzzy-v0-standalone/views/library/template.pug create mode 100644 suzzy-v0-standalone/views/profile/applications.pug create mode 100644 suzzy-v0-standalone/views/profile/connections.pug create mode 100644 suzzy-v0-standalone/views/profile/devices.pug create mode 100644 suzzy-v0-standalone/views/profile/index.pug create mode 100644 suzzy-v0-standalone/views/profile/security.pug create mode 100644 suzzy-v0-standalone/views/public/challenge-picross.pug create mode 100644 suzzy-v0-standalone/views/public/index.pug create mode 100644 suzzy-v0-standalone/views/public/login.pug create mode 100644 suzzy-v0-standalone/views/public/password-reset.pug create mode 100644 suzzy-v0-standalone/views/public/password-update.pug create mode 100644 suzzy-v0-standalone/views/public/projects.pug create mode 100644 suzzy-v0-standalone/views/public/signup.pug create mode 100644 suzzy-v0-standalone/views/public/verify-email.pug create mode 100644 suzzy-v0-standalone/views/public/verify-login.pug diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e5e365 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.development \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..becc7c8 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,6 @@ +{ + "recommendations": [ + "esbenp.prettier-vscode", + "golang.go" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..22144ff --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,26 @@ +{ + "editor.tabSize": 4, + "editor.insertSpaces": true, + "editor.formatOnSave": true, + "editor.rulers": [ + 120 + ], + "files.trimTrailingWhitespace": true, + "files.insertFinalNewline": true, + "files.associations": {}, + "[css]": { + "editor.defaultFormatter": "vscode.css-language-features" + }, + "[javascript]": { + "editor.defaultFormatter": "vscode.typescript-language-features" + }, + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[javascriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + } +} diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..bdcf269 --- /dev/null +++ b/README.txt @@ -0,0 +1,24 @@ +------------------------------------------------------------------------------- +ABOUT +------------------------------------------------------------------------------- + +Official website for the suzzy project, an amateur game dev trio. + +@bakonpancakz 'bakon' + * https://x.com/bakonpancakz + +Andrew 'DakotaLmfao' Lopez + * https://x.com/DanteLmfao + +@suldotpwp 'sul' + * https://x.com/suldotpwp + +------------------------------------------------------------------------------- +HISTORY +------------------------------------------------------------------------------- + +* suzzy-v0-standalone: + Abandonware, see README. + +* suzzy-v1-revival: + Welcome back, based off pancakz-v1-caution. diff --git a/suzzy-v0-standalone/.gitignore b/suzzy-v0-standalone/.gitignore new file mode 100644 index 0000000..53c37a1 --- /dev/null +++ b/suzzy-v0-standalone/.gitignore @@ -0,0 +1 @@ +dist \ No newline at end of file diff --git a/suzzy-v0-standalone/README.old.md b/suzzy-v0-standalone/README.old.md new file mode 100644 index 0000000..ece9eba --- /dev/null +++ b/suzzy-v0-standalone/README.old.md @@ -0,0 +1,62 @@ +# 🌎 @suzzy/site +Homepage for blogs, documentation, accounts, and projects. + + +## 📄 Articles +This application has support for a custom article rendering system using XML +and JSON syntax. Create a folder in the **views** directory and organize your +folder as show below: + +```py +• +|__ /articles +| |__ ... # Your articles here +|__ manifest.json # Your Manifest with Authors, Categories, and Paths +|__ browser.pug # View for Article Directory +|__ post.pug # View for Article Rendering +``` + +### Article Syntax +Articles follow HTML/XML like Syntax, a root `
` tag must be created +with all following content tags placed inside. + +The following attributes **MUST** be present on the article tag: +| Name | Description | +| :--------: | :-------------------------------------------------- | +| id | Unique Article ID for CategoryId | +| authorId | Relevant Author ID | +| categoryId | Relevant Category ID | +| title | Article Title | +| created | Article Date (Should be parsable with `new Date()`) | +| snippet | Article Snippet | +| noindex | If value is `true` this article will not be indexed | + +Afterwards you can place all your content tags inside below are all currently +supported tags: + +### Tag: text +A text element with support for formatting using the following subtags: +- `: Hint` Makes text grey and small +- `: Code` Highlights text and adds a dark background +- `: Link` Similar to Anchor, supports **target** and **href** attributes +- `: Bold` Renders text as bold or extra thicc +- `: Italic` Render Text as Italicized +- `: Strike` Renders text with a line in the middle of characters (̶E̶x̶a̶m̶p̶l̶e) + +### Tag: header +Extra large highlighted text that will appear in the sidebar or chapter select. +Will be rendered with a normalized ID attribute for anchors. + +### Tag: subheader +Large highlighted text. +Will be rendered with a normalized ID attribute for anchors. + +### Tag: quote +Prefixes text content with `>` and renders it as grey with small text. + +### Tag: code +Renders text as a big code block with syntax highlighting using the `syntax` +attribute. Supports horizontal overflow and adds support for has JavaScript +for a **Copy to Cliboard** action. + +### Tag: image diff --git a/suzzy-v0-standalone/README.txt b/suzzy-v0-standalone/README.txt new file mode 100644 index 0000000..218cec4 --- /dev/null +++ b/suzzy-v0-standalone/README.txt @@ -0,0 +1,19 @@ + +Originally an indie studio was going to be made between me and another friend +under the moniker "suzzy games". We planned to make multiplayer games, mostly +ones that ran in the web browser so I researched and designed infastructure to +allow that. However this idea was scrapped and I opted to use my personal +brand 'pancakz' instead. + +This website is forever stuck in limbo due to an unfinished refactor. + +A lot of it's code was canabalized. Deleted and reafactored into 'template-auth' +which was itself was also canabalized and now feeds into every other project +that requires an authentication framework. + +If you wish to see what this website looks like for yourself run the following +commands: + +* npm install +* npm run preview +* explorer.exe http://localhost:8080 diff --git a/suzzy-v0-standalone/_todo/__oauth2.pug b/suzzy-v0-standalone/_todo/__oauth2.pug new file mode 100644 index 0000000..5019d20 --- /dev/null +++ b/suzzy-v0-standalone/_todo/__oauth2.pug @@ -0,0 +1,56 @@ +extends _TemplateSpecial.pug +block pageHeader + link(rel='stylesheet' href='file://styles/ui-account.css') + link(rel='stylesheet' href='file://styles/unique-oauth2.css') + meta(property='og:title' content='suzzy - Authorize App') + meta(property='og:description' content='Connect an application to your suzzy games account.') + meta(name='description' content='Connect an application to your suzzy games account.') + title suzzy - Authorize App +block pageContent + div(class='modal-wrapper modal-static') + + //- Error Modal + div(id='oauth2-fail' class='oauth2-centered oauth2-container modal-container' hidden) + div(class='modal-content') + img(class='oauth2-icon' aria-hidden='true' src='/assets/images/icons/icon-cross.svg' alt='Icon for Cross') + p(class='text-header') An Error has Occurred + p(class='text-tip' id='fail-reason') Unknown Error + + //- Loading Modal + div(id='oauth2-load' class='oauth2-centered oauth2-container modal-container') + div(class='oauth2-centered modal-content') + img(aria-hidden='true' src='/assets/images/icons/diagram-loading.svg' alt='Icon for Spinner' height=64) + p Loading Application + + //- Content Modal + div(id='oauth2-flow' class='oauth2-container modal-container' hidden) + div(class='oauth2-content modal-content') + + //- Header + div(class='divider-spacer') + div(class='oauth2-header') + div(class='oauth2-icons') + img(class='application-icon' id='image-user' onload='this.style.opacity=1') + img(aria-hidden='true' class='oauth2-diagram' src='/assets/images/icons/diagram-connection.svg' alt='Diagram for Connection') + img(class='application-icon' id='image-app' onload='this.style.opacity=1') + p(id='content-aname' class='text-header') + button(id='content-login' class='small' onclick='SignOut(false, true)') + div(class='divider-spacer') + div(class='divider-line') + + //- Information + p(class='text-tip') This application will be allowed to: + div(id='content-scopes' class='scopes-wrapper text-box') + div(class='divider-line') + p(id='content-created' class='text-tip text-muted') + | • Active since + p(id='content-redirect' class='text-tip text-muted') + | • You'll be redirected to: #[br] + + //- Actions + div(class='modal-actions') + p(class='modal-tooltip text-error' id='action-error') + button(class='default' id='action-cancel') Cancel + button(class='default' id='action-authorize') Authorize +block pageEscaped + script(src='/assets/scripts/login-oauth2.js') \ No newline at end of file diff --git a/suzzy-v0-standalone/_todo/_scripts/account-applications.js b/suzzy-v0-standalone/_todo/_scripts/account-applications.js new file mode 100644 index 0000000..408e143 --- /dev/null +++ b/suzzy-v0-standalone/_todo/_scripts/account-applications.js @@ -0,0 +1,291 @@ +(() => { + // Support Functions + const trimDataURL = (s, x = undefined) => s.slice(s.indexOf(',') + 1, x) + const redirectsToString = s => s.sort().join() + function PrepareTemplate(selector) { + const elem = $(selector) + elem.removeAttribute('hidden') + elem.removeAttribute('id') + elem.remove() + return elem + } + + // No Applications Warning + let appCount = 0 + function DisplayNoApps(newCount) { + _ActionCreate.removeAttribute('hidden') + appCount = newCount + appCount === 0 + ? _AlertEmpty.removeAttribute('hidden') + : _AlertEmpty.setAttribute('hidden', true) + } + + // Displays Modal with Secret Key + function DisplaySecret(secretKey) { + CreateModal({ + behaviour: { + title: 'Your Secret Key', + tooltip: 'Do not share this key with anyone!', + submitText: 'Close', + cancelText: '', + }, + _secret: { + type: 'text', + title: '', + value: secretKey, + readonly: true, + } + }) + } + + // Use Application Template + const + _AlertEmpty = $('#alert-empty'), + _AlertLoad = $('#alert-load'), + _ActionCreate = $('#action-create'), + _Collection = $('#application-collection'), + _LinkTemplate = PrepareTemplate('.input-redirect'), + _ItemTemplate = PrepareTemplate('#application-template') + + function DisplayApplication(a) { + let removingIcon = false + let unsavedChanges = false + const + item = _ItemTemplate.cloneNode(true), + elemStatus = $$(item, '#status-message'), + elemOptions = $$(item, '.application-options'), + elemRedirects = $$(item, '#container-redirects'), + previewIcon = $$(item, '#app-icon'), + previewName = $$(item, '#app-name'), + previewDesc = $$(item, '#app-desc'), + inputName = $$(item, '#input-name'), + inputDesc = $$(item, '#input-desc'), + inputIcon = $$(item, '#input-icon'), + inputIconFile = $$(item, '#input-icon-file'), + inputIconRemove = $$(item, '#input-icon-remove'), + inputRedirectNew = $$(item, '#input-redirect-new'), + inputSave = $$(item, '#input-save'), + inputDiscard = $$(item, '#input-discard'), + inputResetSecret = $$(item, '#input-reset'), + inputDelete = $$(item, '#input-delete'), + inputEdit = $$(item, '#input-edit') + + function CreateRedirect(givenURL) { + const elem = _LinkTemplate.cloneNode(true) + const inputUrl = elem.firstChild + inputUrl.value = givenURL + inputUrl.addEventListener('change', UpdateForm) + elem.lastChild.addEventListener('click', () => { + elem.remove() + UpdateForm() + }) + elemRedirects.appendChild(elem) + } + function ResetForm() { + removingIcon = false + previewName.textContent = a.name?.trim() || 'Untitled' + previewDesc.textContent = a.description?.trim() || 'No Description Provided.' + previewIcon.src = ImageURL('icons', a.id, a.icon, false, 128) + previewIcon.alt = `Icon for ${a.name}` + inputIconFile.value = null + inputDesc.value = a.description + inputName.value = a.name + elemRedirects.innerHTML = '' + a.redirects.forEach(CreateRedirect) + UpdateForm() + } + function UpdateForm() { + // New Redirect + elemRedirects.childElementCount >= 10 + ? inputRedirectNew.setAttribute('hidden', true) + : inputRedirectNew.removeAttribute('hidden') + + // Remove Icon + !removingIcon && (a.icon !== null || inputIconFile.files.length > 0) + ? inputIconRemove.removeAttribute('disabled') + : inputIconRemove.setAttribute('disabled', true) + + // Save/Discard Changes + unsavedChanges = + Object.keys(CollectBody()).length && + Array.from(elemRedirects.childNodes).every(e => e.firstChild.checkValidity()) + if (unsavedChanges) { + inputDiscard.removeAttribute('disabled') + inputSave.removeAttribute('disabled') + } else { + inputDiscard.setAttribute('disabled', true) + inputSave.setAttribute('disabled', true) + } + } + function CollectBody() { + const body = {} + if ((inputName.value.trim() || a.name) !== a.name) + body['name'] = inputName.value + if (inputDesc.value.trim() !== (a.description || '')) + body['description'] = inputDesc.value + if (removingIcon && body.icon) + body['icon'] = '' + if (inputIconFile.files.length) + body['icon'] = trimDataURL(previewIcon.src) + const collectedRedirects = Array + .from(elemRedirects.childNodes) + .filter(e => e.firstChild.checkValidity()) + .map(e => e.firstChild.value) + if (redirectsToString(collectedRedirects) !== redirectsToString(a.redirects)) { + body.redirects = collectedRedirects + } + return body + } + + // Set/Remove Application Icon + inputIconRemove.addEventListener('click', () => { + previewIcon.src = ImageURL('icon', a.id, null) + inputIconFile.value = null + removingIcon = true + UpdateForm() + }) + inputIconFile.addEventListener('change', ev => { + const file = ev.target.files[0] + if (!file) return + const reader = new FileReader() + reader.onload = e => { + previewIcon.src = e.target.result + removingIcon = false + UpdateForm() + } + reader.readAsDataURL(file) + }) + + // Field Updating + inputName.addEventListener('input', () => previewName.textContent = inputName.value.trim() || a.name) + inputDesc.addEventListener('input', () => previewDesc.textContent = inputDesc.value.trim() || a.description) + for (const needsListener of [inputName, inputDesc]) { + needsListener.addEventListener('change', UpdateForm) + } + // Button Listeners + inputRedirectNew.addEventListener('click', + () => CreateRedirect('') + ) + inputDiscard.addEventListener('click', + () => ResetForm() + ) + inputIcon.addEventListener('click', + () => inputIconFile.click() + ) + inputEdit.addEventListener('click', () => { + elemOptions.classList.toggle('options-hidden') + ResetForm() + }) + inputSave.addEventListener('click', () => { + if (!unsavedChanges) return + const unlock = LockInteraction() + elemStatus.textContent = 'Saving Changes...' + SendRequest('PATCH', `/api/v1/users/@me/applications/${a.id}`, CollectBody(), 1) + .then(([_, patchedBody]) => { + elemStatus.textContent = 'Changes Saved!' + elemStatus.classList.remove('text-error') + a = patchedBody + unlock() + ResetForm() + }) + .catch(e => { + elemStatus.textContent = e + elemStatus.classList.add('text-error') + unlock() + }) + // we dont use finally block here because race condition :p + }) + inputResetSecret.addEventListener('click', () => CreateModal({ + behaviour: { + title: 'Reset Secret Key?', + tooltip: `${a.name} will stop functioning until you update the secret key in your code.`, + submitText: 'Reset', + onSubmit: () => new Promise(ok => { + SendRequest('DELETE', `/api/v1/users/@me/applications/${a.id}/reset`, undefined, 2) + .then(([_, body]) => { + DisplaySecret(body.secret_key) + ok() + }) + .catch(ok) + }) + } + })) + inputDelete.addEventListener('click', () => CreateModal({ + behaviour: { + title: 'Delete Application?', + tooltip: `${a.name} will be deleted and all connections will be severed. This action cannot be undone.`, + submitText: 'Delete', + onSubmit: () => new Promise(ok => { + SendRequest('DELETE', `/api/v1/users/@me/applications/${a.id}`, undefined, 2) + .then(() => { + item.remove() + DisplayNoApps(appCount - 1) + ok() + }) + .catch(ok) + }) + } + })) + + // Append to top + // Official Application? + if ((a.flags & 1 << 3) !== 0) { + $$(item, '#verified-message').removeAttribute('hidden') + } + $$(item, '#input-clientid').textContent += a.id + ResetForm() + _Collection.appendChild(item) + } + + // Fetch Connections + + SendRequest('GET', '/api/v1/users/@me/applications', null, 1) + .then(([_, body]) => { + // Display Applications + body + .sort((a, b) => new Date(b.created) - new Date(a.created)) + .forEach(DisplayApplication) + DisplayNoApps(body.length) + + // Bind Create Application + _ActionCreate.addEventListener('click', function ActionCreate() { + CreateModal({ + behaviour: { + title: 'Create Application', + tooltip: 'Name it something cool like Phase Connect.', + onSubmit: ({ name }) => new Promise(ok => { + SendRequest('POST', '/api/v1/users/@me/applications', { name }, 1) + .then(([_, body]) => { + DisplaySecret(body.secret_key) + DisplayNoApps(appCount + 1) + DisplayApplication(body) + ok() + }) + .catch(ok) + }) + }, + _divider: { type: 'divider-line' }, + name: { + type: 'text', + required: true, + title: 'Name', + validator: function ValidateName(v) { + if (v.length > 24) return 'Application name cannot be longer than 32 characters' + if (v.length < 1) return 'Application name cannot be shorter than 1 character' + return true + } + }, + }) + }) + }) + .catch(e => { + // Display Error Message + $('#alert-error').removeAttribute('hidden') + $('#error-message').textContent = e + console.log(e) + }) + .finally(() => { + // Hide Loading Symbol + _AlertLoad.setAttribute('hidden', true) + }) +})() \ No newline at end of file diff --git a/suzzy-v0-standalone/_todo/_scripts/account-connections.js b/suzzy-v0-standalone/_todo/_scripts/account-connections.js new file mode 100644 index 0000000..8572eb1 --- /dev/null +++ b/suzzy-v0-standalone/_todo/_scripts/account-connections.js @@ -0,0 +1,94 @@ +(async () => { + const _AlertEmpty = $('#alert-empty') + const _AlertLoad = $('#alert-load') + const _Collection = $('#application-collection') + + // Prepare Templates + function prepareTemplate(name) { + const elem = $(name) + elem.removeAttribute('hidden') + elem.removeAttribute('id') + elem.remove() + return elem + } + const _ItemTemplate = prepareTemplate('#application-template') + const _ScopeTemplate = prepareTemplate('#scope-template') + + // Fetch Connections + SendRequest('GET', '/api/v1/users/@me/connections', null, 1) + .then(([_, body]) => { + if (body.length === 0) { + _AlertEmpty.removeAttribute('hidden') + return + } + body + .sort((a, b) => new Date(b.created) - new Date(a.created)) + .forEach(connection => { + + // Metadata + const { name, flags, description, id, icon } = connection.application + const Template = _ItemTemplate.cloneNode(true) + $$(Template, '.text-header').textContent = name + $$(Template, '.text-tip').textContent = description || 'No Description Provided.' + + // Images + const Image = $$(Template, '.application-icon') + Image.src = ImageURL('icons', id, icon, false, 128) + Image.alt = `Icon for ${name}` + + // Scopes + const ScopesParent = Template.querySelector('.scopes') + _Scopes.forEach(s => { + if ((connection.scopes & s[0]) !== 0) { + const Scope = _ScopeTemplate.cloneNode(true) + Scope.lastChild.textContent = s[1] + ScopesParent.appendChild(Scope) + } + }) + + // Official Application? + if ((flags & 1 << 3) !== 0) { + $$(Template, '#verified-message').removeAttribute('hidden') + } + + // Buttons + const Button = $$(Template, 'button') + Button.title = `Disconnect Application ${name}` + Button.addEventListener('click', async () => { + await CreateModal({ + behaviour: { + title: 'Disconnect Application?', + tooltip: 'The application ' + name + ' will be disconnected from your account.' + } + }) + SendRequest('DELETE', `/api/v1/users/@me/connections/${connection.id}`, null, 2) + .then(() => { + // Remove Item from List + body.length-- + Template.remove() + if (body.length === 0) { + _AlertEmpty.removeAttribute('hidden') + _AlertLoad.setAttribute('hidden', true) + return + } + }) + .catch(e => { + $$(Template, '#error-message').textContent = e + }) + }) + + // Append + _Collection.appendChild(Template) + }) + }) + .catch(e => { + // Display Error Message + $('#alert-error').removeAttribute('hidden') + $('#error-message').textContent = e + console.log(e) + }) + .finally(() => { + // Hide Loading Symbol + _AlertLoad.setAttribute('hidden', true) + }) +})() \ No newline at end of file diff --git a/suzzy-v0-standalone/_todo/_scripts/account-devices.js b/suzzy-v0-standalone/_todo/_scripts/account-devices.js new file mode 100644 index 0000000..63fdb7e --- /dev/null +++ b/suzzy-v0-standalone/_todo/_scripts/account-devices.js @@ -0,0 +1,80 @@ +(async () => { + const _Collection = $('#application-collection') + const _Template = $('#device-template') + _Template.removeAttribute('hidden') + _Template.removeAttribute('id') + _Template.remove() + + // Fetch Sessions + SendRequest('GET', '/api/v1/users/@me/security/sessions', null, 1) + .then(([_, body]) => { + + // There's at minimum one session so we + // don't need a the 'No Connections' type message here. + + body.sessions + .sort((a, b) => new Date(b.last_used) - new Date(a.last_used)) + .forEach(session => { + // Metadata + const Template = _Template.cloneNode(true) + const Me = (session.fingerprint === body.fingerprint) + if (Me) $$(Template, '#me').removeAttribute('hidden') + $$(Template, '#browser').textContent = session.browser + $$(Template, '#location').textContent = session.location + $$(Template, '#lastseen').textContent = (() => { + const secondsAgo = (new Date() - new Date(session.last_used)) / 1000 | 0 + if (secondsAgo < 60) { + return 'just now' + } else { + const timeUnits = [ + ['minute', 60], + ['hour', 3600], + ['day', 86400], + ['week', 604800], + ['month', 2592000], + ]; + for (const [unit, divisor] of timeUnits) { + if (secondsAgo < (divisor * 60)) { + const count = Math.floor(secondsAgo / divisor) + return `${count} ${unit}${count > 1 ? 's' : ''} ago` + } + } + } + })() + + // Buttons + const Button = $$(Template, '.device-action') + Button.title = `Revoke Access for '${session.browser}' from '${session.location}'` + $$(Template, '.device-action').onclick = async () => { + await CreateModal({ + behaviour: { + title: 'Revoke Session?', + tooltip: 'You\'ll have to manually log back in on this device.' + } + }) + SendRequest('DELETE', `/api/v1/users/@me/security/sessions/${session.id}`, null, 2) + .then(() => { + // Redirect User to Login page if revoked self. + Template.remove() + if (Me) window.location.href = '/login' + }) + .catch(e => { + $$(Template, '#error-message').textContent = e + }) + } + + // Append + _Collection.appendChild(Template) + }) + }) + .catch(e => { + // Display Error Message + $('#alert-error').removeAttribute('hidden') + $('#error-message').textContent = e + console.log(e) + }) + .finally(() => { + // Hide Loading Symbol + $('#alert-load').setAttribute('hidden', true) + }) +})() \ No newline at end of file diff --git a/suzzy-v0-standalone/_todo/_scripts/account-profile.js b/suzzy-v0-standalone/_todo/_scripts/account-profile.js new file mode 100644 index 0000000..b929521 --- /dev/null +++ b/suzzy-v0-standalone/_todo/_scripts/account-profile.js @@ -0,0 +1,263 @@ +(() => { + const + _Profile = $('.profile-wrapper'), + _Preview = $('.profile-container'), + _Status = $('#profile-status'), + // Option Elements + iDisplayname = $('#input-displayname'), + iSubtitle = $('#input-subtitle'), + iBio = $('#input-bio'), + iAvatarFile = $('#input-avatar-file'), + iBannerFile = $('#input-banner-file'), + iBannerColor = $('#input-banner'), + iBorderColor = $('#input-border'), + iBackgroundColor = $('#input-background'), + iSubmit = $('#button-submit'), + iCancel = $('#button-cancel'), + // Preview Elements + pBanner = $('#profile-banner'), + pAvatar = $('#profile-avatar'), + pBadges = $('#profile-badges'), + pDisplayname = $('#profile-displayname'), + pUsername = $('#profile-username'), + pSubtitle = $('#profile-subtitle'), + pDivider = $('#profile-divider'), + pBio = $('#profile-bio'), + // Buttons + bAvatar = $('#button-avatar-remove'), + bBanner = $('#button-banner-remove') + + // Elements that the user interacts with in real time + const _InputElements = [ + iDisplayname, + iSubtitle, + iBio, + iBannerColor, + iBorderColor, + iBackgroundColor, + // These elements have async calls + // they'll update the preview when complete + // pBanner, + // pAvatar, + ] + const _RecognizedBadges = [ + [1 << 0, 'crown', 'The Boss'], + [1 << 1, 'star', 'V.I.P'], + [1 << 2, 'picross', 'Picross Master'], + ] + + SendRequest('GET', '/api/v1/users/@me', null, 1) + .then(([_, body]) => { + let removingBanner = false + let removingAvatar = false + let unsavedChanges = false + const hexToDec = e => parseInt(e.value.slice(1), 16) + const trimDataURL = (s, x = undefined) => s.slice(s.indexOf(',') + 1, x) + const decToHex = (e, x) => '#' + (e?.toString(16).padStart('6', 0) || x) + + function FormReset() { + const colorBanner = decToHex(body.accent_banner, '1d1e2e') + const colorBorder = decToHex(body.accent_border, '282a3f') + const colorBackground = decToHex(body.accent_background, '333550') + + // Reset Options + iDisplayname.value = body.displayname + iSubtitle.value = body.subtitle + iBio.value = body.biography + iBannerColor.value = colorBanner + iBorderColor.value = colorBorder + iBackgroundColor.value = colorBackground + iAvatarFile.value = null + iBannerFile.value = null + + // Reset Preview + pDisplayname.textContent = body.displayname + pUsername.textContent = '@' + body.username + pSubtitle.textContent = body.subtitle + pBio.textContent = body.biography + body.biography + ? pDivider.removeAttribute('hidden') + : pDivider.setAttribute('hidden', true) + pAvatar.src = ImageURL('avatars', body.id, body.avatar, true, 128) + pBanner.style.backgroundImage = body.banner + ? `url('${ImageURL('banners', body.id, body.banner, true, 512)}')` + : '' + _Profile.style.setProperty('--accent-banner', colorBanner) + _Profile.style.setProperty('--accent-border', colorBorder) + _Profile.style.setProperty('--accent-background', colorBackground) + iBackgroundColor.oninput() + + // Disable Buttons + removingAvatar = false + removingBanner = false + FormUpdated() + } + function FormUpdated() { + unsavedChanges = (Object.entries(CollectBody()).length > 0) + if (unsavedChanges) { + iCancel.removeAttribute('disabled') + iSubmit.removeAttribute('disabled') + } else { + iCancel.setAttribute('disabled', true) + iSubmit.setAttribute('disabled', true) + } + !removingBanner && (body.banner !== null || iBannerFile.files.length > 0) + ? bBanner.removeAttribute('disabled') + : bBanner.setAttribute('disabled', true) + + !removingAvatar && (body.avatar !== null || iAvatarFile.files.length > 0) + ? bAvatar.removeAttribute('disabled') + : bAvatar.setAttribute('disabled', true) + } + function CollectBody() { + const data = {} + // Collect Textboxes + if ((iDisplayname.value.trim() || body.displayname) !== body.displayname) + data['displayname'] = iDisplayname.value + if (iBio.value.trim() !== (body.biography || '')) + data['biography'] = iBio.value + if (iSubtitle.value.trim() !== (body.subtitle || '')) + data['subtitle'] = iSubtitle.value + + // Collect Colors + const decBannerColor = hexToDec(iBannerColor) + if (decBannerColor !== (body.accent_banner || 1908270)) + data['accent_banner'] = decBannerColor + const decBorderColor = hexToDec(iBorderColor) + if (decBorderColor !== (body.accent_border || 2632255)) + data['accent_border'] = decBorderColor + const decBackgroundColor = hexToDec(iBackgroundColor) + if (decBackgroundColor !== (body.accent_background || 3355984)) + data['accent_background'] = decBackgroundColor + + // Collect Images + if (removingAvatar && body.avatar) data['avatar'] = '' + if (removingBanner && body.banner) data['banner'] = '' + if (iAvatarFile.files.length) + data['avatar'] = trimDataURL(pAvatar.src) + if (iBannerFile.files.length) + data['banner'] = trimDataURL(pBanner.style.backgroundImage, -2) + + console.log(data) + return data + } + + // Templating + _InputElements.forEach(e => e.addEventListener('change', FormUpdated)) + _RecognizedBadges.forEach(b => { + if ((body.public_flags & b[0]) !== 0) { + const img = document.createElement('img') + img.src = `/assets/images/icons/badge-${b[1]}.svg` + img.title = b[2] + img.alt = b[2] + pBadges.appendChild(img) + } + }) + + // Section: About Me + iDisplayname.oninput = () => pDisplayname.textContent = (iDisplayname.value || body.displayname).trim() + iSubtitle.oninput = () => pSubtitle.textContent = iSubtitle.value.trim() + iBio.oninput = () => { + const content = (iBio.value || '') + pBio.textContent = content.trim() + content.length > 0 + ? pDivider.removeAttribute('hidden') + : pDivider.setAttribute('hidden', true) + } + + // Section: Images + $('#button-avatar').onclick = () => iAvatarFile.click() + $('#button-banner').onclick = () => iBannerFile.click() + bAvatar.onclick = () => { + pAvatar.src = ImageURL('avatars', body.id, null) + iAvatarFile.value = null + removingAvatar = true + FormUpdated() + } + bBanner.onclick = () => { + pBanner.style.backgroundImage = null + iBannerFile.value = null + removingBanner = true + FormUpdated() + } + + iAvatarFile.onchange = (ev) => { + const file = ev.target.files[0] + if (!file) return + const reader = new FileReader() + reader.onload = e => { + pAvatar.src = e.target.result + removingAvatar = false + FormUpdated() + } + reader.readAsDataURL(file) + } + iBannerFile.onchange = (ev) => { + const file = ev.target.files[0] + if (!file) return + const reader = new FileReader() + reader.onload = e => { + pBanner.style.backgroundImage = `url(${e.target.result})` + removingBanner = false + FormUpdated() + } + reader.readAsDataURL(file) + } + + // Section: Accents + iBannerColor.oninput = () => _Profile.style.setProperty('--accent-banner', iBannerColor.value) + iBorderColor.oninput = () => _Profile.style.setProperty('--accent-border', iBorderColor.value) + iBackgroundColor.oninput = () => { + let hexColor = iBackgroundColor.value + _Profile.style.setProperty('--accent-background', hexColor) + + // Check Luminance of Background Color + hexColor = hexColor.replace('#', '') + var r = parseInt(hexColor.substr(0, 2), 16) + var g = parseInt(hexColor.substr(2, 2), 16) + var b = parseInt(hexColor.substr(4, 2), 16) + if (((0.299 * r) + (0.587 * g) + (0.114 * b)) / 255 > 0.85) { + _Preview.classList.add('profile-dark') + } else { + _Preview.classList.remove('profile-dark') + } + } + + // Section: Actions + iCancel.onclick = () => FormReset() + iSubmit.onclick = () => { + if (!unsavedChanges) return + const unlock = LockInteraction() + _Status.textContent = 'Saving Changes...' + SendRequest('PATCH', '/api/v1/users/@me', CollectBody(), 1) + .then(([_, patchedBody]) => { + _Status.textContent = 'Profile Saved!' + _Status.classList.remove('text-error') + localStorage.removeItem('cache_home_me') // Used by page-home.js + body = patchedBody + unlock() + FormReset() + }) + .catch(e => { + _Status.textContent = e + _Status.classList.add('text-error') + unlock() + }) + // we dont use finally block here because race condition :p + } + + // Display Profile + _Profile.removeAttribute('hidden') + FormReset() + }) + .catch(e => { + // Display Error Message + $('#alert-error').removeAttribute('hidden') + $('#error-message').textContent = e + console.log(e) + }) + .finally(() => { + // Hide Loading Symbol + $('#alert-load').setAttribute('hidden', true) + }) +})() \ No newline at end of file diff --git a/suzzy-v0-standalone/_todo/_scripts/account-security.js b/suzzy-v0-standalone/_todo/_scripts/account-security.js new file mode 100644 index 0000000..aafe61d --- /dev/null +++ b/suzzy-v0-standalone/_todo/_scripts/account-security.js @@ -0,0 +1,281 @@ +(() => { + const + elemPreviewEmail = $('#preview-email'), + actionEmailReveal = $('#email-reveal'), + actionEmailEdit = $('#email-edit'), + actionEmailResend = $('#email-resend'), + actionPassChange = $('#password-change'), + actionMFASetup = $('#mfa-setup-start'), + actionMFASetupRemove = $('#mfa-setup-remove'), + actionMFARecoveryView = $('#mfa-recovery-view'), + actionMFARecoveryRegen = $('#mfa-recovery-regen'), + actionDangerDeleteAccount = $('#danger-deleteaccount'), + errorMFA = $('#error-mfa'), + errorEmail = $('#error-email'), + errorDanger = $('#error-danger') + + SendRequest('GET', '/api/v1/users/@me', null, 1) + .then(([_, body]) => { + // Email + let emailHidden = false + let emailTemplate = elemPreviewEmail.textContent + actionEmailReveal.onclick = () => { + let newPreview + if (emailHidden) { + newPreview = body.email + actionEmailReveal.textContent = 'Hide Email Address' + } else { + const usernameLength = body.email.indexOf('@') + const censoredSegment = ''.padStart(usernameLength > 12 ? 12 : usernameLength, '*') + const hostSegment = body.email.slice(usernameLength) + newPreview = censoredSegment + hostSegment + actionEmailReveal.textContent = 'Reveal Email Address' + } + elemPreviewEmail.textContent = (emailTemplate + newPreview) + emailHidden = !emailHidden + } + actionEmailReveal.onclick() + + if (!body.verified) { + actionEmailResend.removeAttribute('hidden') + actionEmailResend.onclick = () => { + const unlock = LockInteraction() + SendRequest('POST', '/api/v1/users/@me/security/email', null, 1) + .then(() => CreateModal({ + behaviour: { + cancelText: '', + submitText: 'Close', + title: 'Verification Email Sent', + tooltip: 'An email to verify this email address has been sent. Please check your spam or inbox.', + } + })) + .catch(e => errorEmail.textContent = e) + .finally(unlock) + } + } + + actionEmailEdit.onclick = () => { + CreateModal({ + behaviour: { + title: 'Update Email', + tooltip: 'Changing your email address will mark it as unverified.', + onSubmit: ({ email }) => new Promise(ok => { + SendRequest('PATCH', '/api/v1/users/@me/security/email', { email }, 2) + .then(() => window.location.reload()) + .catch(ok) + }) + }, + '_divider': { type: 'divider-line' }, + 'email': { + type: 'text', + required: true, + title: 'Email Address', + validator: TestEmailSuite, + } + }) + } + + // Password + actionPassChange.onclick = () => { + CreateModal({ + behaviour: { + title: 'Change Password', + tooltip: 'Enter your current password and new password.', + onSubmit: ({ old_password, new_password }) => new Promise(ok => { + SendRequest( + 'PATCH', '/api/v1/users/@me/security/password', + { old_password, new_password }, 1 + ) + .then(() => ok()) + .catch(ok) + }) + }, + '_link': { + type: 'link', + title: 'Forgot Password?', + href: '/password-reset', + }, + '_divider': { type: 'divider-line' }, + 'old_password': { + type: 'password', + required: true, + title: 'Old Password', + }, + 'new_password': { + type: 'password', + required: true, + title: 'New Password', + validator: (v, { new_password_again }) => { + if (v !== new_password_again) return 'Passwords do not Match' + return TestPasswordSuite(v) + }, + }, + 'new_password_again': { + type: 'password', + required: true, + title: 'New Password Again', + validator: (v, { new_password }) => { + if (v !== new_password) return 'Passwords do not Match' + return TestPasswordSuite(v) + }, + }, + }) + } + + // Multi-Factor + function RecoveryModal(codes) { + return CreateModal({ + behaviour: { + title: 'Recovery Codes', + tooltip: + 'Keep these recovery codes safe! ' + + 'You\'ll lose access to your account if both recovery codes and your authenticator app are lost.', + submitText: 'Download', + cancelText: 'Close', + onSubmit: () => { + // Generate Text + const filename = `Recovery Codes for ${body.username}.txt` + const filedata = + `Recovery Codes for ${body.username} (${body.email})\n` + + `Generated on ${new Date().toLocaleString()}\n` + + `------------\n` + + codes.map(c => `> ${c}\n`).join(''); + // Fake Download Element + const a = document.createElement('a') + a.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(filedata)) + a.setAttribute('download', filename) + a.style.display = 'none' + document.body.appendChild(a) + a.click() + document.body.removeChild(a) + return ' ' + } + }, + '_codes': { + type: 'recovery-codes', + codes: codes + } + }) + } + if (body.mfa_enabled) { + actionMFASetupRemove.removeAttribute('hidden') + actionMFASetupRemove.onclick = async () => { + await CreateModal({ + behaviour: { + title: 'Remove Authenticator App?', + tooltip: 'This will disable MFA on your account.', + } + }) + const unlock = LockInteraction() + SendRequest('DELETE', '/api/v1/users/@me/security/mfa/setup', null, 2) + .then(() => window.location.reload()) + .catch(e => errorMFA.textContent = e) + .finally(unlock) + } + actionMFARecoveryView.removeAttribute('hidden') + actionMFARecoveryView.onclick = () => { + const unlock = LockInteraction() + SendRequest('GET', '/api/v1/users/@me/security/mfa/codes', null, 2) + .then(([_, codes]) => RecoveryModal(codes)) + .catch(e => errorMFA.textContent = e) + .finally(unlock) + } + actionMFARecoveryRegen.removeAttribute('hidden') + actionMFARecoveryRegen.onclick = async () => { + await CreateModal({ + behaviour: { + title: 'Reset Recovery Codes?', + tooltip: 'This will void the previously generated codes.', + } + }) + const unlock = LockInteraction() + SendRequest('DELETE', '/api/v1/users/@me/security/mfa/codes', null, 2) + .then(([_, codes]) => RecoveryModal(codes)) + .catch(e => errorMFA.textContent = e) + .finally(unlock) + } + } else { + actionMFASetup.removeAttribute('hidden') + actionMFASetup.onclick = () => { + const unlock = LockInteraction() + SendRequest('GET', '/api/v1/users/@me/security/mfa/setup', null, 1) + .then(([_, mfa]) => { + CreateModal({ + behaviour: { + title: 'Setup Authenticator App', + tooltip: 'Scan the QR code using your Authenticator App and enter the generated passcode.', + onSubmit: ({ passcode }) => new Promise(ok => { + const unlock = LockInteraction() + SendRequest('POST', '/api/v1/users/@me/security/mfa/setup', { passcode }, 1) + .then((/* 204 No Content */) => { + RecoveryModal(mfa.recovery_codes) + .finally(() => window.location.reload()) + ok() + }) + .catch(ok) + .finally(unlock) + }) + }, + '_spacer1': { type: 'divider-line' }, + '_qrcode': { + type: 'qr-code', + src: mfa.image, + }, + '_spacer2': { type: 'divider-line' }, + '_secret': { + type: 'text', + title: 'Can\'t Scan the QR Code? Use this secret key:', + value: mfa.secret, + readonly: true, + }, + passcode: { + required: true, + type: 'password', + title: 'Passcode', + autocomplete: 'one-time-code', + placeholder: '123456', + validator: v => { + if (!/[0-9]{6}/.test(v)) return 'Invalid Passcode' + return true + } + }, + }) + }) + .catch(e => errorMFA.textContent = e) + .finally(unlock) + } + } + + // Danger Zone + actionDangerDeleteAccount.onclick = async () => { + // Prompt Modal + await CreateModal({ + behaviour: { + title: 'Delete Account?', + tooltip: + 'This will start a countdown where afterwards your account and all of its data will be deleted. ' + + 'More details will be sent to your email address.', + } + }) + const unlock = LockInteraction() + SendRequest('DELETE', '/api/v1/users/@me', null, 2) + .then(() => SignOut()) + .catch(e => errorDanger.textContent = e) + .finally(unlock) + } + + // Display Menu + $('#security-wrapper').removeAttribute('hidden') + }) + .catch(e => { + // Display Error Message + $('#alert-error').removeAttribute('hidden') + $('#error-message').textContent = e + console.log(e) + }) + .finally(() => { + // Hide Loading Symbol + $('#alert-load').setAttribute('hidden', true) + }) + +})() \ No newline at end of file diff --git a/suzzy-v0-standalone/_todo/_scripts/login-index.js b/suzzy-v0-standalone/_todo/_scripts/login-index.js new file mode 100644 index 0000000..b690207 --- /dev/null +++ b/suzzy-v0-standalone/_todo/_scripts/login-index.js @@ -0,0 +1,67 @@ +let x = { + static: true, + submitText: 'Log In', + cancelText: '', + onSubmit: ({ email, password }) => new Promise(submitResult => { + const unlock = LockInteraction() + SendRequest('POST', '/api/v1/auth/login', { email, password }, 0, false) + .then(([resp, body]) => { + if (!resp.ok) { + // Display Custom Modal + switch (body.code) { + case 2000: // ERROR_MFA_EMAIL_SENT + return CreateModal({ + behaviour: { + cancelText: '', + title: 'Verify Login from a New Device', + tooltip: 'Check your email for a verification link to authorize access from this device.' + }, + }) + .catch(() => { /** Silence Modal Closing */ }) + case 2001: // ERROR_MFA_PASSCODE_REQUIRED + return CreateModal({ + 'behaviour': { + title: 'Passcode Required', + tooltip: 'Please enter your Authenticator Passcode or Recovery Code to log in.', + onSubmit: ({ passcode }) => new Promise(mfaResult => { + SendRequest('POST', '/api/v1/auth/login', { email, password, passcode }, 0) + .then(([_, body]) => { + // Store Credentials + localStorage.setItem('auth_token', body.token) + localStorage.setItem('auth_expires', Date.now() + (body.expires_in * 1000)) + FollowRedirect('/account/profile') + }) + .catch(mfaResult) + }) + }, + '_spacer': { + type: 'divider-line' + }, + 'passcode': { + required: true, + type: 'password', + title: 'Passcode', + autocomplete: 'one-time-code', + placeholder: '123456', + validator: v => { + if (!/([0-9]{6}|[A-z0-9]{8})/.test(v)) + return 'Invalid Passcode' + return true + } + } + }) + .catch(() => { /** Silence Modal Closing */ }) + default: + return submitResult(body.error || body) + } + } else { + // Store Credentials + localStorage.setItem('auth_token', body.token) + localStorage.setItem('auth_expires', Date.now() + (body.expires_in * 1000)) + FollowRedirect('/account/profile') + } + }) + .catch(submitResult) + .finally(unlock) + }), +} \ No newline at end of file diff --git a/suzzy-v0-standalone/_todo/_scripts/login-oauth2.js b/suzzy-v0-standalone/_todo/_scripts/login-oauth2.js new file mode 100644 index 0000000..a0fea61 --- /dev/null +++ b/suzzy-v0-standalone/_todo/_scripts/login-oauth2.js @@ -0,0 +1,78 @@ +(() => { + // Fetch Application and Profile + const href = window.location.href + const query = href.slice(href.indexOf('?') + 1) + SendRequest('GET', '/api/v1/oauth2/authorize', query, 1) + .then(([_, body]) => { + const + me = body.user, + app = body.application, + ScopesParent = $('#content-scopes'), + imageUser = $('#image-user'), + imageApp = $('#image-app') + + // Set Avatars + imageUser.src = ImageURL('avatars', me.id, me.avatar, false, 128) + imageApp.src = ImageURL('icons', app.id, app.icon, false, 128) + imageUser.alt = `Avatar for '${me.username}'` + imageApp.alt = `Icon for Application '${app.name}'` + + // Fill Template + $('#content-login').textContent = `Logged in as ${me.username}, not you?` + $('#content-aname').textContent = `Connect ${app.name}?` + $('#content-redirect').textContent += body.redirect + $('#content-created').textContent += (() => { + const t = new Date(app.created) + const m = ['January', 'Feburary', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'][t.getMonth()] + const d = t.getDate() + const y = t.getFullYear() + return `${m} ${d}${d === 1 ? 'st' : d === 2 ? 'nd' : d === 3 ? 'rd' : 'th'}, ${y}` + })() + _Scopes.forEach(s => { + if ((body.scopes & s[0]) !== 0) { + const div = document.createElement('div') + div.classList.add('scope') + const dot = document.createElement('div') + dot.classList.add('dot-green') + const txt = document.createElement('p') + txt.textContent = s[1] + div.append(dot, txt) + ScopesParent.appendChild(div) + } + }) + + // Cancel Request, go to application with error... + $('#action-cancel').onclick = (ev) => { + if (!ev.isTrusted) return + const url = new URL(body.redirect) + url.searchParams.set('error', 'access_denied') + url.searchParams.set('error_description', 'User Declined') + window.location.assign(url.toString()) + } + + // Complete Request, go to application with code... + const actionError = $('#action-error') + $('#action-authorize').onclick = (ev) => { + if (!ev.isTrusted) return + const unlock = LockInteraction(true) + actionError.textContent = '' + SendRequest('POST', '/api/v1/oauth2/authorize', query, 1) + .then(([_, body]) => window.location.assign(body.location)) + .catch(e => { + actionError.textContent = e.error || e + console.log(e) + }) + .finally(() => unlock()) + } + + $('#oauth2-flow').removeAttribute('hidden') + }) + .catch(e => { + $('#oauth2-fail').removeAttribute('hidden') + $('#fail-reason').textContent = e.error || e + console.log(e) + }) + .finally(() => { + $('#oauth2-load').setAttribute('hidden', true) + }) +})() \ No newline at end of file diff --git a/suzzy-v0-standalone/_todo/_styles/ui-account.css b/suzzy-v0-standalone/_todo/_styles/ui-account.css new file mode 100644 index 0000000..d68523a --- /dev/null +++ b/suzzy-v0-standalone/_todo/_styles/ui-account.css @@ -0,0 +1,389 @@ +/* Collections */ +div.collection-wrapper { + display: flex; + flex-wrap: wrap; + gap: 8px; +} + +div.collection-item { + width: 100%; + height: fit-content; + border-radius: 8px; + overflow: hidden; + background-color: var(--background-layer-4); + border: 2px solid var(--background-layer-1); + box-sizing: border-box; + padding: 16px; + gap: 8px; +} + +div.text-box { + background-color: var(--background-layer-5); + box-sizing: border-box; + border-radius: 8px; + padding: 8px; +} + +div.collection-message { + width: 100%; + padding: 32px; + text-align: center; + box-sizing: border-box; +} + +div.collection-message img, +div.collection-message i { + fill: var(--background-layer-0); + height: 48px; + width: 48px; +} + + +/* Page: Devices */ +div.item-device { + display: flex; + align-items: center; +} + +div.device-icon { + min-height: 72px; + min-width: 72px; + padding: 8px; + border-radius: 100%; + box-sizing: border-box; + background-color: var(--background-layer-4); + border: 2px solid var(--background-layer-1); + display: flex; + align-items: center; + justify-content: center; +} + +div.device-icon img { + fill: var(--background-layer-0); + height: 40px; + width: 40px; +} + +div.device-info { + flex-basis: 100%; +} + +div.info-alongside { + display: flex; + flex-wrap: wrap; + align-items: center; + overflow: hidden; + gap: 8px; +} + +button.device-action { + fill: var(--background-layer-1); + height: 24px; + width: 24px; + background-color: transparent; + cursor: pointer; + border: none; + transition: var(--transition-time) ease-in-out fill; +} + +button.device-action:hover, +button.device-action:focus-visible { + fill: var(--text-error-1); +} + +/* Page: Connections */ +div.application-header { + display: flex; + align-items: self-start; + justify-content: space-between; + gap: 8px; +} + +img.application-icon { + border-radius: 100%; + box-sizing: border-box; + border: 4px solid var(--background-layer-1); + background-color: var(--background-layer-4); + min-height: 64px; + max-height: 64px; + min-width: 64px; + max-width: 64px; + opacity: 0; + background-size: contain; + transition: var(--transition-time) ease-in-out opacity; +} + +div.application-info { + flex-basis: 100%; + overflow: hidden; +} + +div.application-extended { + display: grid; + gap: 8px; + transition: var(--transition-time) ease-in-out all; + height: -8px; +} + +div.scopes-wrapper { + display: grid; +} + +div.scope { + display: flex; + gap: 4px; + align-items: center; +} + +div.dot-green { + width: 8px; + height: 8px; + border-radius: 100%; + background-color: #42f495; +} + +/* Page: Profile */ +div.profile-wrapper { + display: flex; +} + +div.profile-options, +div.profile-container { + flex-basis: 50%; + box-sizing: border-box; + padding: 4px; +} + +div.profile-options { + display: grid; + gap: 8px; +} + +div.widget-container { + display: flex; + flex-wrap: wrap; + justify-content: space-evenly; + align-items: flex-start +} + +div.widget-color { + display: grid; + place-items: center; +} + +input[type='color']::-webkit-color-swatch-wrapper { + padding: 0; +} + +input.color-preview { + cursor: pointer; + border-radius: 8px; + background-color: white; + height: 48px; + width: 96px; + border: 2px solid var(--background-layer-2); + transition: var(--transition-time) ease-in-out all; +} + +div.profile-container { + min-width: 350px; + height: fit-content; + background-color: var(--accent-background); + border: 4px solid var(--accent-border); + box-sizing: border-box; + border-radius: 8px; + overflow: hidden; + margin: 16px; + padding: 0; +} + +#profile-banner { + width: 100%; + height: 128px; + border-bottom: 4px solid var(--accent-border); + background-color: var(--accent-banner); + background-position: center; + background-size: cover; +} + +div.profile-header { + display: flex; + justify-content: space-between; + box-sizing: border-box; + padding: 8px 8px 0 8px; +} + +#profile-avatar { + width: 96px; + height: 96px; + margin-top: -60px; + border-radius: 100%; + border: 4px solid var(--accent-border); + background-color: var(--accent-banner); + object-fit: cover; +} + +#profile-badges { + height: fit-content; + width: fit-content; + display: flex; + flex-wrap: wrap; + background-color: rgb(0, 0, 0, 0.4); + border-radius: 8px; + padding: 8px; + gap: 4px; +} + +#profile-badges:empty { + display: none; +} + +#profile-badges img { + height: 20px; + width: 20px; +} + +div.profile-about { + background-color: rgba(0, 0, 0, 0.4); + margin: 8px; + padding: 8px; + border-radius: 8px; + box-sizing: border-box; +} + +div.profile-about p, +div.profile-about pre { + transition: var(--transition-time) ease-in-out color; + max-height: 300px; + overflow: hidden; + text-wrap: balance; +} + +div.profile-dark p, +div.profile-dark pre { + color: var(--text-layer-2); +} + +#profile-displayname { + font-size: large; +} + +#profile-username { + font-size: small; + opacity: 0.80; +} + +#profile-divider { + background-color: var(--accent-border); + opacity: 0.5; +} + +/* Page: Applications */ +div.application-options { + display: grid; + gap: 8px; +} + +div.options-hidden { + height: 0; + overflow: hidden; +} + +div.input-redirect { + display: flex; + gap: 8px; +} + +div.input-redirect button { + min-width: fit-content; + height: 100%; +} + +div#container-redirects { + display: grid; + gap: 8px; +} + +/* Mobile Styling */ +@media (max-width: 1024px) { + div.main-content { + border-right: none; + } +} + +@media (max-width: 640px) { + + div.main-content { + border: none; + background-color: transparent; + } + + div.main-wrapper { + display: block; + } + + div.main-wrapper div.divider-line { + display: block !important; + } + + a.navigation-link { + font-size: large; + } + + div.main-aside { + width: 100%; + max-width: 100%; + } + + div.main-content { + width: 100%; + height: fit-content; + min-height: 100vh; + max-width: 100%; + } + + div.collection-item { + background-color: var(--background-layer-4); + border: 2px solid var(--background-layer-3); + } + + div.device-icon { + background-color: var(--background-layer-4); + border: 2px solid var(--background-layer-1); + } + + /* Page: Connections */ + div.application-header { + display: block; + } + + div.application-header button { + margin: 8px 0; + width: 100%; + } + + div.text-box { + background-color: var(--background-layer-3); + } + + /* Page: Devices */ + button.device-action { + height: 40px; + width: 40px; + } + + div.info-alongside { + text-wrap: balance; + } + + /* Page: Profile */ + div.profile-wrapper { + display: block; + } + + div.profile-container { + min-width: 0px; + margin: 32px 0 0 0; + } + +} \ No newline at end of file diff --git a/suzzy-v0-standalone/_todo/public/Users-Profile.pug b/suzzy-v0-standalone/_todo/public/Users-Profile.pug new file mode 100644 index 0000000..0470511 --- /dev/null +++ b/suzzy-v0-standalone/_todo/public/Users-Profile.pug @@ -0,0 +1,73 @@ +//- redo with connection to profiles database +extends _Template.pug +block pageStyles + link(rel='stylesheet' href=`/assets/styles/ui-public-profile.css?v=${cachev}`) +block pageScripts + script(src=`/assets/scripts/public-profile.js?v=${cachev}`) +block pageHeader + meta(property='og:image' content='https://suzzygames.com/assets/images/og-logo.png') + meta(property='og:title' content=`profile - ${username}`) + meta(property='og:description' content=`View ${username}'s profile on suzzy games`) + meta(name='description' content=`View ${username}'s profile on suzzy games`) + title profile - #{username} +block pageContent + noscript + style. + noscript { + display: grid; + box-sizing: border-box; + place-items: center; + align-content: center; + } + #alert-load { + display: none + } + div(class='collection-message') + img(aria-hidden='true' src='/assets/images/icons/icon-cross.svg' alt='Icon for Cross') + p This page requires JavaScript to be enabled. + + div(class='collection-message' id='alert-load') + img(src='/assets/images/icons/diagram-loading.svg' alt='Icon for Spinner') + p Loading Profile + div(class='collection-message' id='alert-error' hidden) + img(src='/assets/images/icons/icon-cross.svg' alt='Icon for Cross') + p(id='alert-error-message') An Error has Occurred + + div(class='main-wrapper') + //- Profile + div(class='main-aside' hidden) + div(class='profile-container') + div(id='profile-banner') + div(class='profile-header') + img(id='profile-avatar' alt='My Avatar') + div(id='profile-badges') + div(class='profile-about text-nopad') + div(class='info-alongside') + p(id='profile-displayname') + p(id='profile-username') + p(id='profile-subtitle' class='text-tip') + div(class='divider-line' id='profile-divider' hidden) + pre(id='profile-bio' class='text-tip') + //- Categories + div(class='divider-spacer') + p(class='text-header') Categories + button(class='category category-active') + img(alt='Icon for Blog Post' src='/assets/blog/category-any.png') + p(class='category-name') None + p(class='category-count text-muted') (x) + //- button(class='category' id='category-posts') + //- img(alt='Icon for Blog Post' src='/assets/blog/category-news.png') + //- p(class='category-name') Blog Posts + //- p(class='category-count text-muted') (1) + //- button(class='category' id='category-friends') + //- img(alt='Icon for Blog Post' src='/assets/blog/category-friends.png') + //- p(class='category-name') Friends + //- p(class='category-count text-muted') (0) + + div(class='divider-dashed' hidden) + + //- Content + div(class='main-content' role='main' hidden) + div(class='collection-message') + img(src='/assets/images/icons/icon-filter.svg' alt='Icon for Filter') + p(class='text-muted') Please select a category \ No newline at end of file diff --git a/suzzy-v0-standalone/assets/audio/picross_1.mp3 b/suzzy-v0-standalone/assets/audio/picross_1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..3c3e24317c74d48f5c20f0ba1c8d4287bc4528bf GIT binary patch literal 9787 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 literal 0 HcmV?d00001 diff --git a/suzzy-v0-standalone/assets/blog/author-bakonpancakz.png b/suzzy-v0-standalone/assets/blog/author-bakonpancakz.png new file mode 100644 index 0000000000000000000000000000000000000000..7e530dc264dba38364691f93fc1b3a29e33ebaed GIT binary patch literal 9055 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 R85sZo002ovPDHLkV1lGs(8K@$ literal 0 HcmV?d00001 diff --git a/suzzy-v0-standalone/assets/blog/category-any.png b/suzzy-v0-standalone/assets/blog/category-any.png new file mode 100644 index 0000000000000000000000000000000000000000..8bd128f1fcbb26e4546b7c0ee906fed0ac2e052b GIT binary patch literal 978 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85s1GL71^(seKs(19Q5ki(^Pd+}qi;lV=$S9Bby-C-drNT>7v4 zUIPuV<3YYXXHg3`4B}xu5{4Z9xUHisi z6~&zL@Ld4cAO8x*6IR{g4QtH))*X>g^w;TX`}0PSJ2K##sZ3v_gxi&6{Sz5>e0=$( zwbxB}n#%bKl`-jmUCm9A|107QWn4Xx8;E84l%pDvj)c|JZHDsEuYIMP&fPRBOTThg_OxI zwz@7m9?!a5Fnys_TeO63Q{=Yf(@*uc-G9I0snzpL#pRZFvcLVdPrWbE%z3R&s(TS* z{Dfs;;`Wl2bx$_$(_!7v7|1e5DJ^AptYqsGQ=l_fcWf^Hd|(y>L-U=tM-$aMy zh9ydr!JqBpx&r^5T3stnvbcuqj!s?6(crEa7cnU%?@Pp*t`(IpSFb(3I+W3%_{QC% zYr@wbFKbx8s>ADDmx|~b&Vcsae;u2&bX#_OyL2d`LF-(bO|z;MdoZt(4hd;jZcsp02S-7|Zlt{ybqu}xFgpl#XpXF%D2T&EN4WpeM- zwp!oQopou^gNcjc)v~!8B5&qg+Wf)!#IluDJ60=QV%q0_nF$!Fu7$Pft2iJ3WytY$ z4?My?E%@%eH+g2ii#9erRuk`@UsA@M)6HM8U(s5|=-=^ow=Vzy literal 0 HcmV?d00001 diff --git a/suzzy-v0-standalone/assets/blog/category-bts.png b/suzzy-v0-standalone/assets/blog/category-bts.png new file mode 100644 index 0000000000000000000000000000000000000000..6a8f3e1e3547ae59dfc9ab0ad1337e82d676289a GIT binary patch literal 887 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85s1GL71^(seKs(12d1Oi(^Pd+}qi=i)I^$xVFBZzDw@=!c2MV zzit2i%a`8TC6H6YDJ^?!+k_1Qlg{*PNt1C*;-1Tz!R$Fn-o8FI@<7iD-f0>Qw-P#; za4{SwsCa(;bTWbE%yaE+w`;ZI@83-N*tzfZyhaX>8(Cj>W-(5ymE~*}FqnJpRMY$R zqSSEz^DEhu68ya9EV7su|5rj{MZ=tFcRm*}F1|RU_jqvBW09kc)9xh4GR)ueMcttA z{rvOGU#T8GdL$$CK+(>XNjclAlQ-XN+IRb0$*&)FH}AQ}m%1cLn{8BMxERXMXKdBK zwQPg?M27Dt&i#KXwDClHSMG~1Yr91mB_>pSTqK-4ne!2UyXn227rQrH=HyiPbVG7m zs<%@<a$I6;(uQ4ZHZ$FIr{$l{;g?6fd@Wn{O9@QG+$3e zg8N0ZP5*w*wS~7n?VqL~r&y~h!5OiBd+#GdgS(F!b^hs1H(q@(FKSuIGoDD9%CgZw zbk|39=J``a>n)Z7cgo%7>7qiqDIM>lf(B z-QK~T{2;t54P>dxj3e_`KXTM(bWmly&aGro0t~dSo*V@MHdxxA(6xV%}X zyxOgg>fcgVS0uPH9B8pchi@#*NgKRg}`{TrjFCAvM||F6n6jwRvKF4yqAIrUD)2Vei^zG7~umsT9S$G3^0 pm49W$gU|y4xYK9?XADEKe0gfYJ8zH2*MXUZ!PC{xWt~$(69B8fjbs1- literal 0 HcmV?d00001 diff --git a/suzzy-v0-standalone/assets/blog/category-pm.png b/suzzy-v0-standalone/assets/blog/category-pm.png new file mode 100644 index 0000000000000000000000000000000000000000..e9ff70cc2b27d10faf87fc21f5cc7adb6a00dcea GIT binary patch literal 3980 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