diff --git a/next.config.mjs b/next.config.mjs
index 709ce24..5192113 100644
--- a/next.config.mjs
+++ b/next.config.mjs
@@ -14,6 +14,10 @@ const withPWA = nextPWA({
/** @type {import("next").NextConfig} */
const config = {
reactStrictMode: true,
+ experimental: {
+ forceSwcTransforms: true,
+ swcPlugins: [["next-superjson-plugin", {}]],
+ },
/**
* If you are using `appDir` then you must comment the below `i18n` config out.
diff --git a/package.json b/package.json
index c082a27..2d34e20 100644
--- a/package.json
+++ b/package.json
@@ -52,6 +52,7 @@
"next-auth": "^4.24.7",
"next-pwa": "^5.6.0",
"next-recaptcha-v3": "^1.4.1",
+ "next-superjson-plugin": "^0.6.3",
"react": "18.3.1",
"react-combine-reducers": "^1.1.1",
"react-dom": "18.3.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ec41289..44c3c79 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -80,6 +80,9 @@ importers:
next-recaptcha-v3:
specifier: ^1.4.1
version: 1.4.1(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ next-superjson-plugin:
+ specifier: ^0.6.3
+ version: 0.6.3(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(superjson@1.13.3)
react:
specifier: 18.3.1
version: 18.3.1
@@ -5023,6 +5026,9 @@ packages:
hmac-drbg@1.0.1:
resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==}
+ hoist-non-react-statics@3.3.2:
+ resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
+
homedir-polyfill@1.0.3:
resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==}
engines: {node: '>=0.10.0'}
@@ -6004,6 +6010,12 @@ packages:
peerDependencies:
next: '*'
+ next-superjson-plugin@0.6.3:
+ resolution: {integrity: sha512-gipGROzbbn1Koq84AZQodIvBdORp9dytIDv07SguwXdxnJb6v05KCmHVNU9L6AWqxjP14qNIWCNdKRDhnGRZrg==}
+ peerDependencies:
+ next: ^13.0 || ^14.0
+ superjson: ^1 || ^2
+
next@13.5.6:
resolution: {integrity: sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw==}
engines: {node: '>=16.14.0'}
@@ -14069,6 +14081,10 @@ snapshots:
minimalistic-assert: 1.0.1
minimalistic-crypto-utils: 1.0.1
+ hoist-non-react-statics@3.3.2:
+ dependencies:
+ react-is: 16.13.1
+
homedir-polyfill@1.0.3:
dependencies:
parse-passwd: 1.0.0
@@ -15051,6 +15067,12 @@ snapshots:
minimist: 1.2.8
next: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ next-superjson-plugin@0.6.3(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(superjson@1.13.3):
+ dependencies:
+ hoist-non-react-statics: 3.3.2
+ next: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ superjson: 1.13.3
+
next@13.5.6(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
'@next/env': 13.5.6
diff --git a/public/sitemap-0.xml b/public/sitemap-0.xml
index e4fef36..1f7ee84 100644
--- a/public/sitemap-0.xml
+++ b/public/sitemap-0.xml
@@ -1,116 +1,143 @@
-https://glssry.org2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/about2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/contribute2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/nuke2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/post/create2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/privacy2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/terms2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/literature/a-song-of-ice-and-fire2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/health/accident-and-emergency2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/networking/advanced-research-projects-agency-network2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/civics/affirmative-action2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/aviation/aircraft-maintenance-engineer2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/health/alcoholics-anonymous2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/internet/amazon-web-services2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/aviation/amelia-earhart2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/religion/anno-domini2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/finance/annual-percentage-rate2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/software/application-programming-interface2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/software/architectural-decision-record2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/technology/artificial-intelligence2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/slang/as-soon-as-possible2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/geology/association-of-european-geological-societies2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/communications/asymmetric-digital-subscriber-line2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/entertainment/attack-on-titan2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/health/autonomous-sensory-meridian-response2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/mathematics/axiom-of-choice2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/music/beats-per-minute2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/health/body-mass-index2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/geography/british-columbia2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/business/business-as-usual2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/astronomy/carl-sagan2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/programming/cascading-style-sheets2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/security/central-intelligence-agency2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/biology/charles-darwin2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/internet/click-through-rate2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/linguistics/collective-noun2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/security/common-vulnerabilities-and-exposures2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/computing/computer-accessibility2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/internet/content-delivery-network2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/software/content-management-system2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/business/curriculum-vitae2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/journalism/data-journalism2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/science/deoxyribonucleic-acid2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/teaching/department-for-education2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/music/digital-audio-workstation2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/oceanography/division-of-ocean-sciences2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/internet/domain-name-system2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/games/dungeons-and-dragons2024-01-13T10:14:10.375Zdaily0.7
-https://glssry.org/programming/ecmascript2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/physics/european-organization-for-nuclear-research2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/politics/first-past-the-post-voting2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/slang/for-your-information2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/games/fromsoftware2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/television/game-of-thrones2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/programming/gdscript2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/software/godot2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/internet/google-cloud-platform2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/space/great-red-spot2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/environment/greta-thunberg2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/economics/gross-domestic-product2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/health/heart-rate-variability2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/physics/high-altitude-observatory2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/programming/hypertext-markup-language2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/software/infrastructure-as-a-service2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/business/initial-public-offering2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/software/integrated-development-environment2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/law/internal-revenue-code2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/cinema/internet-movie-database2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/oceanography/jacques-cousteau2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/programming/javascript2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/philosophy/karl-marx2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/slang/laugh-out-loud2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/performance/lee-strasberg2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/gender/lesbian-gay-bisexual-and-transgender2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/games/live-action-role-playing2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/medicine/local-anesthetic2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/health/magnetic-resonance-imaging2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/chemistry/marie-curie2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/psychology/maslows-hierarchy-of-needs2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/games/massively-multiplayer-online-role-playing-game2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/construction/material-requirements-planning2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/business/minimum-viable-product2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/sports/most-valuable-player2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/internet/mozilla-developer-network2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/security/multi-factor-authentication2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/art/museum-of-modern-art-2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/music/musical-instrument-digital-interface2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/aeronautics/national-aeronautics-and-space-administration2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/games/naughty-dog2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/engineering/nikola-tesla2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/linguistics/noam-chomsky2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/military/north-atlantic-treaty-organization2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/software/operating-system2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/hardware/random-access-memory2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/technology/request-for-comments2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/programming/rust2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/science/science-technology-engineering-and-mathematics2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/health/selective-serotonin-reuptake-inhibitor2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/hardware/serial-at-attachment2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/mythology/shint2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/internet/simple-mail-transfer-protocol2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/internet/simple-storage-service2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/software/software-as-a-service2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/games/the-last-of-us2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/programming/typescript2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/animals/tyrannosaurus2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/business/unique-selling-proposition2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/cultural/united-nations-educational-scientific-and-cultural-organization2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/networking/unix-to-unix-copy2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/networking/users-network2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/computing/virtual-machine2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/internet/web-content-accessibility-guidelines2024-01-13T10:14:10.376Zdaily0.7
-https://glssry.org/programming/webassembly2024-01-13T10:14:10.376Zdaily0.7
+https://glssry.org2024-08-09T16:35:03.666Zdaily0.7
+https://glssry.org/about2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/contribute2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/nuke2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/post/create2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/privacy2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/terms2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/literature/a-song-of-ice-and-fire2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/health/accident-and-emergency2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/networking/advanced-research-projects-agency-network2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/civics/affirmative-action2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/aviation/aircraft-maintenance-engineer2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/health/alcoholics-anonymous2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/software/amazon-relational-database-service2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/internet/amazon-web-services2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/aviation/amelia-earhart2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/religion/anno-domini2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/finance/annual-percentage-rate2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/software/application-programming-interface2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/software/architectural-decision-record2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/technology/artificial-intelligence2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/slang/as-soon-as-possible2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/geology/association-of-european-geological-societies2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/communications/asymmetric-digital-subscriber-line2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/entertainment/attack-on-titan2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/health/autonomous-sensory-meridian-response2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/mathematics/axiom-of-choice2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/music/beats-per-minute2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/software/benevolent-dictator-for-life2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/health/body-mass-index2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/geography/british-columbia2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/business/business-as-usual2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/astronomy/carl-sagan2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/programming/cascading-style-sheets2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/security/central-intelligence-agency2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/biology/charles-darwin2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/internet/click-through-rate2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/linguistics/collective-noun2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/security/common-vulnerabilities-and-exposures2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/computing/computer-accessibility2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/internet/content-delivery-network2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/software/content-management-system2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/internet/cross-origin-resource-sharing2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/security/cross-site-request-forgery2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/security/cross-site-scripting2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/business/curriculum-vitae2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/journalism/data-journalism2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/science/deoxyribonucleic-acid2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/teaching/department-for-education2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/music/digital-audio-workstation2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/oceanography/division-of-ocean-sciences2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/internet/domain-name-system2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/games/dungeons-and-dragons2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/programming/ecmascript2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/linguistics/edward-sapir2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/physics/european-organization-for-nuclear-research2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/politics/first-past-the-post-voting2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/slang/for-your-information2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/software/free-and-open-source-software2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/games/fromsoftware2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/internet/fully-qualified-domain-name2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/television/game-of-thrones2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/programming/gdscript2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/software/godot2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/internet/google-cloud-platform2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/space/great-red-spot2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/environment/greta-thunberg2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/economics/gross-domestic-product2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/graphic-novels/hajime-isayama2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/health/heart-rate-variability2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/physics/high-altitude-observatory2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/programming/hypertext-markup-language2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/software/in-memory-database2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/software/infrastructure-as-a-service2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/business/initial-public-offering2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/software/integrated-development-environment2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/law/internal-revenue-code2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/languages/international-organisation-for-standardisation2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/cinema/internet-movie-database2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/oceanography/jacques-cousteau2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/programming/javascript2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/internet/javascript-registry2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/history/john-f-kennedy2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/crafts/john-ruskin2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/internet/json-web-token2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/philosophy/karl-marx2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/slang/laugh-out-loud2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/performance/lee-strasberg2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/gender/lesbian-gay-bisexual-and-transgender2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/mathematics/linear-interpolation2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/games/live-action-role-playing2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/medicine/local-anesthetic2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/health/magnetic-resonance-imaging2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/chemistry/marie-curie2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/psychology/maslows-hierarchy-of-needs2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/games/massively-multiplayer-online-role-playing-game2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/construction/material-requirements-planning2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/business/minimum-viable-product2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/sports/most-valuable-player2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/internet/mozilla-developer-network2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/security/multi-factor-authentication2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/art/museum-of-modern-art-2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/music/musical-instrument-digital-interface2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/aeronautics/national-aeronautics-and-space-administration2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/games/naughty-dog2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/engineering/nikola-tesla2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/linguistics/noam-chomsky2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/internet/node-package-manager2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/military/north-atlantic-treaty-organization2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/software/operating-system2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/internet/personally-identifiable-information2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/hardware/random-access-memory2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/technology/request-for-comments2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/programming/rust2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/science/science-technology-engineering-and-mathematics2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/health/selective-serotonin-reuptake-inhibitor2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/hardware/serial-at-attachment2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/mythology/shint2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/internet/simple-mail-transfer-protocol2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/internet/simple-storage-service2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/software/software-as-a-service2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/software/software-bill-of-materials2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/software/speedy-web-compiler2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/software/static-code-analysis2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/mathematics/tautology2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/games/the-last-of-us2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/internet/top-level-domain2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/security/transport-security-layer2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/programming/typescript2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/animals/tyrannosaurus2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/environment/ultra-low-emission-zone2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/software/unified-modeling-language2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/business/unique-selling-proposition2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/cultural/united-nations-educational-scientific-and-cultural-organization2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/networking/unix-to-unix-copy2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/internet/user-datagram-protocol2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/networking/users-network2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/computing/virtual-machine2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/internet/web-content-accessibility-guidelines2024-08-09T16:35:03.667Zdaily0.7
+https://glssry.org/programming/webassembly2024-08-09T16:35:03.667Zdaily0.7
\ No newline at end of file
diff --git a/public/sw.js b/public/sw.js
index a893765..9e02f0e 100644
--- a/public/sw.js
+++ b/public/sw.js
@@ -1 +1 @@
-if(!self.define){let e,a={};const s=(s,c)=>(s=new URL(s+".js",c).href,a[s]||new Promise((a=>{if("document"in self){const e=document.createElement("script");e.src=s,e.onload=a,document.head.appendChild(e)}else e=s,importScripts(s),a()})).then((()=>{let e=a[s];if(!e)throw new Error(`Module ${s} didn’t register its module`);return e})));self.define=(c,i)=>{const n=e||("document"in self?document.currentScript.src:"")||location.href;if(a[n])return;let t={};const r=e=>s(e,n),d={module:{uri:n},exports:t,require:r};a[n]=Promise.all(c.map((e=>d[e]||r(e)))).then((e=>(i(...e),t)))}}define(["./workbox-e9849328"],(function(e){"use strict";importScripts(),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/_next/static/chunks/292-3d35c7c914cdc31a.js",revision:"3d35c7c914cdc31a"},{url:"/_next/static/chunks/5baf55aa-07aa06ac510c0278.js",revision:"07aa06ac510c0278"},{url:"/_next/static/chunks/615-dd654a3aedca6d2b.js",revision:"dd654a3aedca6d2b"},{url:"/_next/static/chunks/797-a68f9a25cd0fe7ff.js",revision:"a68f9a25cd0fe7ff"},{url:"/_next/static/chunks/8d8af85f-ce11d65f0f315412.js",revision:"ce11d65f0f315412"},{url:"/_next/static/chunks/931-fb6566158921eb51.js",revision:"fb6566158921eb51"},{url:"/_next/static/chunks/987-ac682ea97d706489.js",revision:"ac682ea97d706489"},{url:"/_next/static/chunks/a194529e-a6809cf25106d4ec.js",revision:"a6809cf25106d4ec"},{url:"/_next/static/chunks/e198b2db-896fc98364c01616.js",revision:"896fc98364c01616"},{url:"/_next/static/chunks/framework-316188c4f5905b4d.js",revision:"316188c4f5905b4d"},{url:"/_next/static/chunks/main-e4b5380e51e3a7f2.js",revision:"e4b5380e51e3a7f2"},{url:"/_next/static/chunks/pages/%5B...post%5D-7335b0e73a1568ca.js",revision:"7335b0e73a1568ca"},{url:"/_next/static/chunks/pages/_app-d258f838b77b2b08.js",revision:"d258f838b77b2b08"},{url:"/_next/static/chunks/pages/_error-1d10190858dc72f7.js",revision:"1d10190858dc72f7"},{url:"/_next/static/chunks/pages/about-4ee7ab2389edef4d.js",revision:"4ee7ab2389edef4d"},{url:"/_next/static/chunks/pages/account/deauthorized-7b2091af856ae4cc.js",revision:"7b2091af856ae4cc"},{url:"/_next/static/chunks/pages/account/nuke-c3e4b48517b905d8.js",revision:"c3e4b48517b905d8"},{url:"/_next/static/chunks/pages/account/set-username-b104dd0e12377acf.js",revision:"b104dd0e12377acf"},{url:"/_next/static/chunks/pages/account/sign-in-ca9ea7e78829b40c.js",revision:"ca9ea7e78829b40c"},{url:"/_next/static/chunks/pages/account/sign-in/error-9adadca116a2ac59.js",revision:"9adadca116a2ac59"},{url:"/_next/static/chunks/pages/account/sign-in/magic-link-db8343e6444fec88.js",revision:"db8343e6444fec88"},{url:"/_next/static/chunks/pages/account/sign-in/success-49fbe137a805d4b0.js",revision:"49fbe137a805d4b0"},{url:"/_next/static/chunks/pages/account/signed-out-f21604b50de3344d.js",revision:"f21604b50de3344d"},{url:"/_next/static/chunks/pages/contribute-9746f1d599a6740f.js",revision:"9746f1d599a6740f"},{url:"/_next/static/chunks/pages/index-0443aa864c869a3b.js",revision:"0443aa864c869a3b"},{url:"/_next/static/chunks/pages/nuke-7acc1249e366a0db.js",revision:"7acc1249e366a0db"},{url:"/_next/static/chunks/pages/post/create-44fa5bf898bfd98a.js",revision:"44fa5bf898bfd98a"},{url:"/_next/static/chunks/pages/post/edit-f83078e160fae664.js",revision:"f83078e160fae664"},{url:"/_next/static/chunks/pages/post/list-161206545f56099e.js",revision:"161206545f56099e"},{url:"/_next/static/chunks/pages/post/pending-4cac9123375059e3.js",revision:"4cac9123375059e3"},{url:"/_next/static/chunks/pages/privacy-689e4e6f6e2239fa.js",revision:"689e4e6f6e2239fa"},{url:"/_next/static/chunks/pages/terms-5d33804507d2ec82.js",revision:"5d33804507d2ec82"},{url:"/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js",revision:"79330112775102f91e1010318bae2bd3"},{url:"/_next/static/chunks/webpack-8dd09aa3eca154e6.js",revision:"8dd09aa3eca154e6"},{url:"/_next/static/css/5fb0d86d697a80d1.css",revision:"5fb0d86d697a80d1"},{url:"/_next/static/media/10ca58f12dc31ec2.woff2",revision:"e0df918a07b640f09bb69751b040c517"},{url:"/_next/static/media/1fe05f8c46e9977c-s.p.woff2",revision:"c1fec4a19b3192d4701a6533aab96a61"},{url:"/_next/static/media/1ffa718e60efccd4-s.woff2",revision:"a8662b6d037362c4dc6470530d4bca51"},{url:"/_next/static/media/23f25237a0dd6e5e.woff2",revision:"95712b78a4a4cd25725d199575ce922c"},{url:"/_next/static/media/4211d34fd1c6f59f.woff2",revision:"10c49f8eebd781ea0feb134d5d895ae1"},{url:"/_next/static/media/46ada7a8096f3625-s.woff2",revision:"190b012a1ea4fa649277742d8aaa952f"},{url:"/_next/static/media/527ad038b46df541.woff2",revision:"9d5d33aac7b433227908a50658ebb82c"},{url:"/_next/static/media/590bfc1facaea403-s.woff2",revision:"2890339585a50c5843a89ea9788f0780"},{url:"/_next/static/media/61b81e7bde89ba40.p.woff2",revision:"e7c8b3a1196384678e2b2044f8baa115"},{url:"/_next/static/media/95e7cb10eda7a858-s.woff2",revision:"a17f6ed96209e29281424e6d7bab0ec8"},{url:"/_next/static/media/9f705a8904cabecc-s.p.woff2",revision:"d39b3002cb55ab0dba0c94a9132d4cc8"},{url:"/_next/static/media/b34eb5d9a2ebd9de-s.woff2",revision:"1c2eb10dc87812929e90e70cfdc75753"},{url:"/_next/static/media/fe0643d5f2ad0dcb-s.woff2",revision:"6de05c54b2b48e2b12745b95bcdd950d"},{url:"/_next/static/xevWPh0vcBbCK2PShjSE9/_buildManifest.js",revision:"8b1b17daeb2c05b54d22f8ff2044b2c5"},{url:"/_next/static/xevWPh0vcBbCK2PShjSE9/_ssgManifest.js",revision:"b6652df95db52feb4daf4eca35380933"},{url:"/favicon/android-chrome-192x192.png",revision:"c0d5beb829690c3d18c31cb45174dc67"},{url:"/favicon/android-chrome-256x256.png",revision:"7c9bc14f15d5731e3bb1427c8baba551"},{url:"/favicon/apple-touch-icon.png",revision:"c77ac1e2d104e3e3a68bc70232ab9bba"},{url:"/favicon/browserconfig.xml",revision:"7f2b2f8a4c6863cc7be0a1e4b7963bd9"},{url:"/favicon/favicon-16x16.png",revision:"0e0998bad54483253eb2c54cd52f2620"},{url:"/favicon/favicon-32x32.png",revision:"9fcfab51d2269f5954a245263983cfe4"},{url:"/favicon/favicon-large.png",revision:"789b577c10c52b78fa901f49cc3d5161"},{url:"/favicon/favicon.ico",revision:"e09f15b2d8c043c9819b778811852dc4"},{url:"/favicon/favicon.png",revision:"6e948c4229998491ceb982d67f5ff79a"},{url:"/favicon/mstile-150x150.png",revision:"39bbe4b44f7a26e9f308b178f1c69f6f"},{url:"/favicon/safari-pinned-tab.svg",revision:"e4226dd601fda16790841b9189dcabb5"},{url:"/favicon/site.webmanifest",revision:"ab665afc09201416fecde4c3aa2bba88"},{url:"/robots.txt",revision:"59b5022b914a82f95d18493c2a28d218"},{url:"/sitemap-0.xml",revision:"a3476e156bf09ad4fd23da6e1cc7d9c1"},{url:"/sitemap.xml",revision:"c24dc2f275b85f38caa3c21d559c012f"}],{ignoreURLParametersMatching:[]}),e.cleanupOutdatedCaches(),e.registerRoute("/",new e.NetworkFirst({cacheName:"start-url",plugins:[{cacheWillUpdate:async({request:e,response:a,event:s,state:c})=>a&&"opaqueredirect"===a.type?new Response(a.body,{status:200,statusText:"OK",headers:a.headers}):a}]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:gstatic)\.com\/.*/i,new e.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:31536e3})]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:googleapis)\.com\/.*/i,new e.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i,new e.StaleWhileRevalidate({cacheName:"static-font-assets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i,new e.StaleWhileRevalidate({cacheName:"static-image-assets",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/image\?url=.+$/i,new e.StaleWhileRevalidate({cacheName:"next-image",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp3|wav|ogg)$/i,new e.CacheFirst({cacheName:"static-audio-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp4)$/i,new e.CacheFirst({cacheName:"static-video-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:js)$/i,new e.StaleWhileRevalidate({cacheName:"static-js-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:css|less)$/i,new e.StaleWhileRevalidate({cacheName:"static-style-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/data\/.+\/.+\.json$/i,new e.StaleWhileRevalidate({cacheName:"next-data",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:json|xml|csv)$/i,new e.NetworkFirst({cacheName:"static-data-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute((({url:e})=>{if(!(self.origin===e.origin))return!1;const a=e.pathname;return!a.startsWith("/api/auth/")&&!!a.startsWith("/api/")}),new e.NetworkFirst({cacheName:"apis",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:16,maxAgeSeconds:86400})]}),"GET"),e.registerRoute((({url:e})=>{if(!(self.origin===e.origin))return!1;return!e.pathname.startsWith("/api/")}),new e.NetworkFirst({cacheName:"others",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute((({url:e})=>!(self.origin===e.origin)),new e.NetworkFirst({cacheName:"cross-origin",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:3600})]}),"GET")}));
+if(!self.define){let e,a={};const s=(s,c)=>(s=new URL(s+".js",c).href,a[s]||new Promise((a=>{if("document"in self){const e=document.createElement("script");e.src=s,e.onload=a,document.head.appendChild(e)}else e=s,importScripts(s),a()})).then((()=>{let e=a[s];if(!e)throw new Error(`Module ${s} didn’t register its module`);return e})));self.define=(c,i)=>{const n=e||("document"in self?document.currentScript.src:"")||location.href;if(a[n])return;let t={};const d=e=>s(e,n),f={module:{uri:n},exports:t,require:d};a[n]=Promise.all(c.map((e=>f[e]||d(e)))).then((e=>(i(...e),t)))}}define(["./workbox-e9849328"],(function(e){"use strict";importScripts(),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/_next/static/Vkn4hSNTBz4eZw-zia-N8/_buildManifest.js",revision:"37693f1f25c58332e14006f702dd9277"},{url:"/_next/static/Vkn4hSNTBz4eZw-zia-N8/_ssgManifest.js",revision:"b6652df95db52feb4daf4eca35380933"},{url:"/_next/static/chunks/292-9dcf07d777d78b08.js",revision:"9dcf07d777d78b08"},{url:"/_next/static/chunks/5baf55aa-07aa06ac510c0278.js",revision:"07aa06ac510c0278"},{url:"/_next/static/chunks/615-dd654a3aedca6d2b.js",revision:"dd654a3aedca6d2b"},{url:"/_next/static/chunks/797-a68f9a25cd0fe7ff.js",revision:"a68f9a25cd0fe7ff"},{url:"/_next/static/chunks/8d8af85f-ce11d65f0f315412.js",revision:"ce11d65f0f315412"},{url:"/_next/static/chunks/931-fb6566158921eb51.js",revision:"fb6566158921eb51"},{url:"/_next/static/chunks/987-7fa69d0de790762a.js",revision:"7fa69d0de790762a"},{url:"/_next/static/chunks/a194529e-a6809cf25106d4ec.js",revision:"a6809cf25106d4ec"},{url:"/_next/static/chunks/e198b2db-896fc98364c01616.js",revision:"896fc98364c01616"},{url:"/_next/static/chunks/framework-316188c4f5905b4d.js",revision:"316188c4f5905b4d"},{url:"/_next/static/chunks/main-e4b5380e51e3a7f2.js",revision:"e4b5380e51e3a7f2"},{url:"/_next/static/chunks/pages/%5B...post%5D-3be3518b5f0389b7.js",revision:"3be3518b5f0389b7"},{url:"/_next/static/chunks/pages/_app-f7fc6316c9091771.js",revision:"f7fc6316c9091771"},{url:"/_next/static/chunks/pages/_error-1d10190858dc72f7.js",revision:"1d10190858dc72f7"},{url:"/_next/static/chunks/pages/about-4ee7ab2389edef4d.js",revision:"4ee7ab2389edef4d"},{url:"/_next/static/chunks/pages/account/deauthorized-7b2091af856ae4cc.js",revision:"7b2091af856ae4cc"},{url:"/_next/static/chunks/pages/account/nuke-bfae14d9388cd13e.js",revision:"bfae14d9388cd13e"},{url:"/_next/static/chunks/pages/account/set-username-b0b8a085a3692cdb.js",revision:"b0b8a085a3692cdb"},{url:"/_next/static/chunks/pages/account/sign-in-daf1cc68b39d6c94.js",revision:"daf1cc68b39d6c94"},{url:"/_next/static/chunks/pages/account/sign-in/error-9adadca116a2ac59.js",revision:"9adadca116a2ac59"},{url:"/_next/static/chunks/pages/account/sign-in/magic-link-db8343e6444fec88.js",revision:"db8343e6444fec88"},{url:"/_next/static/chunks/pages/account/sign-in/success-9f7c594ef80e8bdb.js",revision:"9f7c594ef80e8bdb"},{url:"/_next/static/chunks/pages/account/signed-out-f21604b50de3344d.js",revision:"f21604b50de3344d"},{url:"/_next/static/chunks/pages/contribute-9746f1d599a6740f.js",revision:"9746f1d599a6740f"},{url:"/_next/static/chunks/pages/index-10dd4a2d8f9b7532.js",revision:"10dd4a2d8f9b7532"},{url:"/_next/static/chunks/pages/nuke-7acc1249e366a0db.js",revision:"7acc1249e366a0db"},{url:"/_next/static/chunks/pages/post/create-44fa5bf898bfd98a.js",revision:"44fa5bf898bfd98a"},{url:"/_next/static/chunks/pages/post/edit-f83078e160fae664.js",revision:"f83078e160fae664"},{url:"/_next/static/chunks/pages/post/list-b6b892f4ed186c46.js",revision:"b6b892f4ed186c46"},{url:"/_next/static/chunks/pages/post/pending-3eb5ebb359d91f35.js",revision:"3eb5ebb359d91f35"},{url:"/_next/static/chunks/pages/privacy-689e4e6f6e2239fa.js",revision:"689e4e6f6e2239fa"},{url:"/_next/static/chunks/pages/terms-5d33804507d2ec82.js",revision:"5d33804507d2ec82"},{url:"/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js",revision:"79330112775102f91e1010318bae2bd3"},{url:"/_next/static/chunks/webpack-8dd09aa3eca154e6.js",revision:"8dd09aa3eca154e6"},{url:"/_next/static/css/5fb0d86d697a80d1.css",revision:"5fb0d86d697a80d1"},{url:"/_next/static/media/10ca58f12dc31ec2.woff2",revision:"e0df918a07b640f09bb69751b040c517"},{url:"/_next/static/media/1fe05f8c46e9977c-s.p.woff2",revision:"c1fec4a19b3192d4701a6533aab96a61"},{url:"/_next/static/media/1ffa718e60efccd4-s.woff2",revision:"a8662b6d037362c4dc6470530d4bca51"},{url:"/_next/static/media/23f25237a0dd6e5e.woff2",revision:"95712b78a4a4cd25725d199575ce922c"},{url:"/_next/static/media/4211d34fd1c6f59f.woff2",revision:"10c49f8eebd781ea0feb134d5d895ae1"},{url:"/_next/static/media/46ada7a8096f3625-s.woff2",revision:"190b012a1ea4fa649277742d8aaa952f"},{url:"/_next/static/media/527ad038b46df541.woff2",revision:"9d5d33aac7b433227908a50658ebb82c"},{url:"/_next/static/media/590bfc1facaea403-s.woff2",revision:"2890339585a50c5843a89ea9788f0780"},{url:"/_next/static/media/61b81e7bde89ba40.p.woff2",revision:"e7c8b3a1196384678e2b2044f8baa115"},{url:"/_next/static/media/95e7cb10eda7a858-s.woff2",revision:"a17f6ed96209e29281424e6d7bab0ec8"},{url:"/_next/static/media/9f705a8904cabecc-s.p.woff2",revision:"d39b3002cb55ab0dba0c94a9132d4cc8"},{url:"/_next/static/media/b34eb5d9a2ebd9de-s.woff2",revision:"1c2eb10dc87812929e90e70cfdc75753"},{url:"/_next/static/media/fe0643d5f2ad0dcb-s.woff2",revision:"6de05c54b2b48e2b12745b95bcdd950d"},{url:"/favicon/android-chrome-192x192.png",revision:"c0d5beb829690c3d18c31cb45174dc67"},{url:"/favicon/android-chrome-256x256.png",revision:"7c9bc14f15d5731e3bb1427c8baba551"},{url:"/favicon/apple-touch-icon.png",revision:"c77ac1e2d104e3e3a68bc70232ab9bba"},{url:"/favicon/browserconfig.xml",revision:"7f2b2f8a4c6863cc7be0a1e4b7963bd9"},{url:"/favicon/favicon-16x16.png",revision:"0e0998bad54483253eb2c54cd52f2620"},{url:"/favicon/favicon-32x32.png",revision:"9fcfab51d2269f5954a245263983cfe4"},{url:"/favicon/favicon-large.png",revision:"789b577c10c52b78fa901f49cc3d5161"},{url:"/favicon/favicon.ico",revision:"e09f15b2d8c043c9819b778811852dc4"},{url:"/favicon/favicon.png",revision:"6e948c4229998491ceb982d67f5ff79a"},{url:"/favicon/mstile-150x150.png",revision:"39bbe4b44f7a26e9f308b178f1c69f6f"},{url:"/favicon/safari-pinned-tab.svg",revision:"e4226dd601fda16790841b9189dcabb5"},{url:"/favicon/site.webmanifest",revision:"ab665afc09201416fecde4c3aa2bba88"},{url:"/robots.txt",revision:"59b5022b914a82f95d18493c2a28d218"},{url:"/sitemap-0.xml",revision:"a3476e156bf09ad4fd23da6e1cc7d9c1"},{url:"/sitemap.xml",revision:"c24dc2f275b85f38caa3c21d559c012f"}],{ignoreURLParametersMatching:[]}),e.cleanupOutdatedCaches(),e.registerRoute("/",new e.NetworkFirst({cacheName:"start-url",plugins:[{cacheWillUpdate:async({request:e,response:a,event:s,state:c})=>a&&"opaqueredirect"===a.type?new Response(a.body,{status:200,statusText:"OK",headers:a.headers}):a}]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:gstatic)\.com\/.*/i,new e.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:31536e3})]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:googleapis)\.com\/.*/i,new e.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i,new e.StaleWhileRevalidate({cacheName:"static-font-assets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i,new e.StaleWhileRevalidate({cacheName:"static-image-assets",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/image\?url=.+$/i,new e.StaleWhileRevalidate({cacheName:"next-image",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp3|wav|ogg)$/i,new e.CacheFirst({cacheName:"static-audio-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp4)$/i,new e.CacheFirst({cacheName:"static-video-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:js)$/i,new e.StaleWhileRevalidate({cacheName:"static-js-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:css|less)$/i,new e.StaleWhileRevalidate({cacheName:"static-style-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/data\/.+\/.+\.json$/i,new e.StaleWhileRevalidate({cacheName:"next-data",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:json|xml|csv)$/i,new e.NetworkFirst({cacheName:"static-data-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute((({url:e})=>{if(!(self.origin===e.origin))return!1;const a=e.pathname;return!a.startsWith("/api/auth/")&&!!a.startsWith("/api/")}),new e.NetworkFirst({cacheName:"apis",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:16,maxAgeSeconds:86400})]}),"GET"),e.registerRoute((({url:e})=>{if(!(self.origin===e.origin))return!1;return!e.pathname.startsWith("/api/")}),new e.NetworkFirst({cacheName:"others",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute((({url:e})=>!(self.origin===e.origin)),new e.NetworkFirst({cacheName:"cross-origin",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:3600})]}),"GET")}));
diff --git a/src/hooks/post/read-latest-posts.hook.tsx b/src/hooks/post/read-latest-posts.hook.tsx
index 1a89af1..d530d0c 100644
--- a/src/hooks/post/read-latest-posts.hook.tsx
+++ b/src/hooks/post/read-latest-posts.hook.tsx
@@ -1,5 +1,7 @@
import { api } from "~/utils/api";
+export type TUSeReadLatestPosts = ReturnType;
+
export const useReadLatestPosts = () => {
const { data, isFetching, error, isError } =
api.post.readLatestPosts.useQuery(undefined, {
diff --git a/src/pages/index.tsx b/src/pages/index.tsx
index 841caec..d73eb0c 100644
--- a/src/pages/index.tsx
+++ b/src/pages/index.tsx
@@ -1,3 +1,6 @@
+import { PrismaClient } from "@prisma/client";
+import type { GetStaticPropsResult } from "next";
+
import { SectionSubtitle } from "~/components/atoms/section-subtitle/section-subtitle";
import { CategoryRowsLinks } from "~/components/molecules/category-rows-links/category-rows-links";
import { Intro } from "~/components/molecules/intro/intro";
@@ -6,16 +9,16 @@ import { PageMainIndent } from "~/components/molecules/page-main-indent/page-mai
import { PostRowsLinks } from "~/components/molecules/post-rows-links/post-rows-links";
import { PostShort } from "~/components/molecules/post-short/post-short";
import { SharedHead } from "~/components/molecules/shared-head/shared-head";
-import { useReadLatestPosts } from "~/hooks/post/read-latest-posts.hook";
-import { useReadRandomCategoryPostCount } from "~/hooks/post/read-random-category-post-count";
-import { useReadRandomPost } from "~/hooks/post/read-random-post.hook";
+import { tagKeys } from "~/schemas/post/post.schema";
import { appDescription, appDomain, appStrapline } from "~/settings/constants";
+import type { IHomePageProperties } from "~/types/page.types";
+import { getShuffledArray } from "~/utils/get-shuffled-array";
-export default function Home() {
- const { latestPostsData, latestPostsDataIsFetching } = useReadLatestPosts();
- const { randomPostData, randomPostDataIsFetching } = useReadRandomPost();
- const { randomCategoryPostCountData, randomCategoryPostCountIsFetching } =
- useReadRandomCategoryPostCount({});
+export default function Home({
+ latestPostsData,
+ randomPostData,
+ randomCategoryPostCountData,
+}: IHomePageProperties) {
return (
<>
@@ -55,3 +49,142 @@ export default function Home() {
>
);
}
+
+// This function gets called at build time
+export const getStaticProps = async (): Promise<
+ GetStaticPropsResult
+> => {
+ const prisma = new PrismaClient();
+ const allPublishedPostsData = await prisma.post.findMany({
+ where: {
+ versions: {
+ some: {
+ published: true,
+ },
+ },
+ },
+ orderBy: {
+ createdAt: "desc",
+ },
+ select: {
+ author: {
+ select: {
+ id: true,
+ username: true,
+ image: true,
+ },
+ },
+ id: true,
+ title: true,
+ versions: {
+ select: {
+ author: true,
+ id: true,
+ title: true,
+ fileUnder: true,
+ acronym: true,
+ abbreviation: true,
+ slug: true,
+ tags: true,
+ updatedAt: true,
+ },
+ orderBy: {
+ updatedAt: "desc",
+ },
+ take: 1,
+ },
+ },
+ });
+
+ const latestPostsData: IHomePageProperties["latestPostsData"] =
+ allPublishedPostsData.slice(0, 10);
+
+ const allPostsWithAuthor = await prisma.post.findMany({
+ include: {
+ author: {
+ select: {
+ id: true,
+ username: true,
+ image: true,
+ },
+ },
+ versions: {
+ include: {
+ author: {
+ select: {
+ id: true,
+ username: true,
+ image: true,
+ },
+ },
+ },
+ take: 1,
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ published: true,
+ },
+ },
+ },
+ });
+
+ const categoryPosts = await prisma.post.findMany({
+ orderBy: {
+ createdAt: "desc",
+ },
+ select: {
+ versions: {
+ select: {
+ fileUnder: true,
+ published: true,
+ },
+ orderBy: {
+ updatedAt: "desc",
+ },
+ take: 1,
+ },
+ },
+ });
+
+ const initialEmptyCategoriesMap = new Map(
+ tagKeys.map((tagKey) => [tagKey, 0])
+ );
+
+ // eslint-disable-next-line unicorn/no-array-reduce -- Reduce might be the best way to do this
+ const postsInCategories = categoryPosts.reduce((accumulator, post) => {
+ const lastVersion = post.versions.at(-1);
+
+ if (!lastVersion) {
+ return accumulator;
+ }
+
+ const { fileUnder } = lastVersion;
+
+ const currentCount = accumulator.get(fileUnder);
+
+ if (currentCount === undefined) {
+ return accumulator;
+ }
+
+ accumulator.set(fileUnder, currentCount + 1);
+
+ return accumulator;
+ }, initialEmptyCategoriesMap);
+
+ const randomCategoryPostCountData = getShuffledArray([
+ ...postsInCategories.entries(),
+ ]).slice(0, 10);
+
+ const randomPostData: IHomePageProperties["randomPostData"] =
+ getShuffledArray(allPostsWithAuthor).at(0);
+
+ return {
+ props: {
+ latestPostsData,
+ randomPostData,
+ randomCategoryPostCountData,
+ },
+ revalidate: 24 * 60 * 60, // 24 hours
+ };
+};
diff --git a/src/types/page.types.ts b/src/types/page.types.ts
new file mode 100644
index 0000000..437f184
--- /dev/null
+++ b/src/types/page.types.ts
@@ -0,0 +1,9 @@
+import type {
+ TTRPCReadCategoryPosts, TTRPCReadLatestPosts, TTRPCReadRandomCategoryPostCount, TTRPCReadRandomPost,
+} from "./prisma.types";
+
+export interface IHomePageProperties {
+ latestPostsData: TTRPCReadLatestPosts | TTRPCReadCategoryPosts;
+ randomPostData: TTRPCReadRandomPost;
+ randomCategoryPostCountData: NonNullable
+}