summaryrefslogtreecommitdiffstats
path: root/docusaurus
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--docusaurus/.dockerignore6
-rw-r--r--docusaurus/.gitignore6
-rw-r--r--docusaurus/babel.config.js7
-rw-r--r--docusaurus/docs/acknowledgment.mdx81
-rw-r--r--docusaurus/docs/community.mdx50
-rw-r--r--docusaurus/docs/dmca.mdx12
-rw-r--r--docusaurus/docs/index.mdx95
-rw-r--r--docusaurus/docs/mirror.mdx18
-rw-r--r--docusaurus/docs/source.mdx37
-rw-r--r--docusaurus/docusaurus.config.js41
-rw-r--r--docusaurus/package.json10
-rw-r--r--docusaurus/sidebars.config.js19
-rw-r--r--docusaurus/sidebars.js29
-rw-r--r--docusaurus/src/components/ButtonLink.tsx35
-rw-r--r--docusaurus/src/components/FormCTA.tsx27
-rw-r--r--docusaurus/src/components/FormQuickStart.tsx35
-rw-r--r--docusaurus/src/components/InputMathProblems.tsx26
-rw-r--r--docusaurus/src/components/ShowStepButton.tsx25
-rw-r--r--docusaurus/src/components/SubmitButton.tsx22
-rw-r--r--docusaurus/src/css/custom.css52
-rw-r--r--docusaurus/src/functions/submitMathInputForm.ts23
-rw-r--r--docusaurus/src/functions/submitMathInputForm.tsx23
-rw-r--r--docusaurus/src/functions/typescriptNever.ts10
-rw-r--r--docusaurus/src/theme/Footer/InputPreloader.tsx46
-rw-r--r--docusaurus/src/theme/Footer/index.tsx27
-rw-r--r--docusaurus/src/theme/NotFound/DDoSProtection.tsx13
-rw-r--r--docusaurus/src/theme/NotFound/Redirection.tsx (renamed from docusaurus/src/theme/NotFound/redirectInput.tsx)49
-rw-r--r--docusaurus/src/theme/NotFound/index.tsx37
-rw-r--r--docusaurus/static/.htaccess1
-rw-r--r--docusaurus/static/_next/static/chunks/pages/examples-26aec7eb12db3258.js (renamed from docusaurus/static/n/v1/api/samplefiles/fileinput/examples)0
-rw-r--r--docusaurus/static/_next/static/images/blueLaptopLarge_2mT4E7sC.png0
-rw-r--r--docusaurus/static/_next/static/images/blueLaptopSmall_2HE8DlL-.png0
-rw-r--r--docusaurus/static/_next/static/images/purpleLaptopLarge_3J6pajKV.png0
-rw-r--r--docusaurus/static/_next/static/images/purpleLaptopSmall_QQ5wFSVR.png0
-rw-r--r--docusaurus/static/_next/static/images/tealLaptopLarge_2Y_KGBw9.png0
-rw-r--r--docusaurus/static/_next/static/images/tealLaptopSmall_1Xxic2d8.png0
-rw-r--r--docusaurus/static/ajax/libs/wolfree/2023.8.31/css/Placeholder.css (renamed from docusaurus/static/ajax/libs/wolfree/23.7.8/css/Placeholder.css)7
-rw-r--r--docusaurus/static/ajax/libs/wolfree/2023.8.31/css/PodsParser.css (renamed from docusaurus/static/ajax/libs/wolfree/23.7.8/css/PodsParser.css)7
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/AJAX.js56
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/AppID.js57
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/Entrypoint.js26
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/Placeholder.js69
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/Pods.js56
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/PodsParser.js201
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/PostProcessor.js63
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/Preprocessor.js29
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/Processor.js54
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/SearchParams.js44
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/onload.js51
-rw-r--r--docusaurus/static/instances.json2
-rw-r--r--docusaurus/static/n/v1/api/autocomplete/index.html5
-rw-r--r--docusaurus/static/n/v1/api/randomizer14
-rw-r--r--docusaurus/static/n/v1/api/sourcer/dataSources12
-rw-r--r--docusaurus/static/n/v1/api/sourcer/index.html10
-rw-r--r--docusaurus/static/users/me/account388
-rw-r--r--docusaurus/tsconfig.json17
-rw-r--r--docusaurus/wolfree.config.js6
57 files changed, 845 insertions, 1191 deletions
diff --git a/docusaurus/.dockerignore b/docusaurus/.dockerignore
index 019391a..ecec047 100644
--- a/docusaurus/.dockerignore
+++ b/docusaurus/.dockerignore
@@ -1,7 +1,3 @@
-# SPDX-License-Identifier: AGPL-3.0-or-later
-# This file is part of Wolfree.
-# This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
# Dependencies
/node_modules
@@ -24,3 +20,5 @@ yarn-debug.log*
yarn-error.log*
package-lock.json
+
+# SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/docusaurus/.gitignore b/docusaurus/.gitignore
index 019391a..ecec047 100644
--- a/docusaurus/.gitignore
+++ b/docusaurus/.gitignore
@@ -1,7 +1,3 @@
-# SPDX-License-Identifier: AGPL-3.0-or-later
-# This file is part of Wolfree.
-# This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
# Dependencies
/node_modules
@@ -24,3 +20,5 @@ yarn-debug.log*
yarn-error.log*
package-lock.json
+
+# SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/docusaurus/babel.config.js b/docusaurus/babel.config.js
index e4fb2e2..6b4342b 100644
--- a/docusaurus/babel.config.js
+++ b/docusaurus/babel.config.js
@@ -1,9 +1,4 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
// @ts-check
diff --git a/docusaurus/docs/acknowledgment.mdx b/docusaurus/docs/acknowledgment.mdx
index e711148..3e10178 100644
--- a/docusaurus/docs/acknowledgment.mdx
+++ b/docusaurus/docs/acknowledgment.mdx
@@ -1,87 +1,94 @@
+---
+title: Acknowledgment
+hide_title: true
+---
+
+<!-- SPDX-License-Identifier: AGPL-3.0-or-later -->
+
# Acknowledgment
-We extend our heartfelt gratitude to the communities and projects that promote diversity, equity, and inclusion on the Internet. Their efforts have been instrumental in distributing our free and open-source software.
+Wolfree developers extend heartfelt gratitude to the communities and projects that promote diversity, equity, and inclusion on the Internet. Their efforts have been instrumental in distributing free and open-source software for Wolfree developers.
## The Fediverse
-Our community distributes source code on the Fediverse.
+Wolfree developers distribute source code on the Fediverse.
The Fediverse is a federation of numerous independently hosted servers that connect various social media platforms. It enables seamless interactions across compatible platforms, encompassing social media services for blogging, photo sharing, and video sharing.
Discover the Fediverse with these resources:
-- [**Fediverse Info**](https://fediverse.info/): A beginner-friendly introduction to the Fediverse.
-- [**FediDB**](https://fedidb.org/): Visualized network statistics of the Fediverse.
-- [**Mastodon Documentation**](https://docs.joinmastodon.org/): Comprehensive documentation for Mastodon, a self-hosted social networking service similar to Twitter.
-- [**JoinFediverse Wiki**](https://joinfediverse.wiki/): An informative encyclopedia for the Fediverse.
-- [**FediList**](http://demo.fedilist.com/): A simple website to explore instances on the Fediverse and facilitate discovery and connections.
-- [**The Federation**](https://the-federation.info/): Indexed instances and statistics for the Fediverse.
+- [Fediverse Info](https://fediverse.info/): A beginner-friendly introduction to the Fediverse.
+- [Mastodon Documentation](https://docs.joinmastodon.org/): Comprehensive documentation for Mastodon, a self-hosted social networking service similar to Twitter.
+- [JoinFediverse Wiki](https://joinfediverse.wiki/): An informative encyclopedia for the Fediverse.
+- [FediDB](https://fedidb.org/): Visualized network statistics of the Fediverse.
+- [FediList](http://demo.fedilist.com/): A simple website to explore instances on the Fediverse and facilitate discovery and connections.
+- [The Federation](https://the-federation.info/): Indexed instances and statistics for the Fediverse.
## ForgeFed
-Our community hosts source code on web services compatible with ForgeFed.
+Wolfree developers host source code on web services compatible with ForgeFed.
ForgeFed specifies an essential federation protocol for version control services, promoting collaboration and cooperation.
Explore ForgeFed and related projects:
-- [**ForgeFed**](https://forgefed.org/): The canonical website to learn more about the benefits and workings of ForgeFed.
-- [**Gitea**](https://about.gitea.com/): A self-hosted Git service powering numerous instances across the Fediverse.
-- [**Forgejo**](https://forgejo.org/): A soft fork of Gitea maintained by an inclusive community.
+- [ForgeFed](https://forgefed.org/): The canonical website to learn more about the benefits and workings of ForgeFed.
+- [Gitea](https://about.gitea.com/): A self-hosted Git service powering numerous instances across the Fediverse.
+- [Forgejo](https://forgejo.org/): A soft fork of Gitea maintained by an inclusive community.
## Copyleft
-Our community releases source code under a copyleft license.
+Wolfree developers release source code under a copyleft license.
Copyleft is a legal technique that safeguards the freedom to copy and modify derivative works.
Discover the significance of copyleft through these resources:
-- [**Blue Oak Council**](https://blueoakcouncil.org/primer): A comprehensive guide to open software licensing, making it accessible and understandable.
-- [**What is Copyleft**](https://www.gnu.org/licenses/copyleft.html.en): An explanation of copyleft, reinforcing the importance of free software.
-- [**Why Copyleft**](https://www.gnu.org/philosophy/why-copyleft.html.en): A showcase of the benefits of copyleft licenses to inspire more creators to embrace copyleft licensing.
-- [**Why I Use the GPL and Not Cuck Licenses**](https://lukesmith.xyz/articles/why-i-use-the-gpl-and-not-cuck-licenses/): An elaboration on the advantages of copyleft.
+- [Blue Oak Council](https://blueoakcouncil.org/primer): A comprehensive guide to open software licensing, making it accessible and understandable.
+- [What is Copyleft](https://www.gnu.org/licenses/copyleft.html.en): An explanation of copyleft, reinforcing the importance of free software.
+- [Why Copyleft](https://www.gnu.org/philosophy/why-copyleft.html.en): A showcase of the benefits of copyleft licenses to inspire more creators to embrace copyleft licensing.
+- [Why I Use the GPL and Not Cuck Licenses](https://lukesmith.xyz/articles/why-i-use-the-gpl-and-not-cuck-licenses/): An elaboration on the advantages of copyleft.
## Anna's Archive
Anna's Archive is a non-profit online shadow library metasearch engine that provides access to a curated collection of book resources managed by anonymous archivists. Anna's Archive keeps backups of popular shadow libraries like Sci-Hub, Library Genesis, and Z-Library.
-- [**Anna's Archive - Wikipedia**](https://en.wikipedia.org/wiki/Anna's_Archive): A wiki page about Anna's Archive on the free encyclopedia.
+- [Anna's Archive - Wikipedia](https://en.wikipedia.org/wiki/Anna's_Archive): A wiki page about Anna's Archive on the free encyclopedia.
## The Internet Archive
-Our community archives source code on the Internet Archive.
+Wolfree developers archive source code on the Internet Archive.
The Internet Archive is a non-profit library that lends digital copies of books. Despite facing challenges related to copyright issues, they continue to fight for the rights of libraries to own and lend ebooks.
Learn more about their ongoing efforts through these articles:
-- [**Hachette v. Internet Archive**](https://www.eff.org/cases/hachette-v-Internet-archive)
-- [**Fair Use Creep Is A Feature, Not a Bug**](https://www.eff.org/deeplinks/2023/01/fair-use-creep-feature-not-bug)
-- [**The Fight Continues**](https://blog.archive.org/2023/03/25/the-fight-continues/)
+- [Hachette v. Internet Archive](https://www.eff.org/cases/hachette-v-internet-archive)
+- [Fair Use Creep Is A Feature, Not a Bug](https://www.eff.org/deeplinks/2023/01/fair-use-creep-feature-not-bug)
+- [Internet Archive Seeks Summary Judgment in Federal Lawsuit Filed By Publishing Companies](https://blog.archive.org/2022/07/08/internet-archive-seeks-summary-judgment-in-federal-lawsuit-filed-by-publishing-companies/)
+- [What the Hachette v. Internet Archive Decision Means for Our Library](https://blog.archive.org/2023/08/17/what-the-hachette-v-internet-archive-decision-means-for-our-library/)
-## Censorship Circumvention
+## Censorship circumvention
Safely circumventing censorship is crucial in fostering diversity, equity, and inclusion on the Internet.
Enhance your knowledge of safety measures for censorship circumvention with these resources:
-- [**Privacy Guides**](https://privacyguides.org/): A user-friendly guide promoting data security and privacy.
-- [**Mullvad Browser**](https://mullvad.net/en/browser): A privacy-focused web browser developed in collaboration between Mullvad VPN and the Tor Project.
-- [**Tor Browser**](https://torproject.org/): A web browser capable of accessing the Tor network.
-- [**Tails**](https://tails.net/): A Linux distribution aimed at preserving privacy and anonymity.
-- [**Qubes OS**](https://qubes-os.org/): A Linux distribution that provides security through isolation.
-- [**The Hitchhiker's Guide to Online Anonymity**](https://anonymousplanet.org/): An in-depth guide detailing online anonymity methods.
+- [Privacy Guides](https://privacyguides.org/): A user-friendly guide promoting data security and privacy.
+- [Mullvad Browser](https://mullvad.net/en/browser): A privacy-focused web browser developed in collaboration between Mullvad VPN and the Tor Project.
+- [Tor Browser](https://torproject.org/): A web browser capable of accessing the Tor network.
+- [Tails](https://tails.net/): A Linux distribution aimed at preserving privacy and anonymity.
+- [Qubes OS](https://qubes-os.org/): A Linux distribution that provides security through isolation.
+- [The Hitchhiker's Guide to Online Anonymity](https://anonymousplanet.org/): An in-depth guide detailing online anonymity methods.
-## Net Neutrality
+## Net neutrality
-Upholding net neutrality is pivotal in nurturing diversity, equity, and inclusion on the Internet. It ensures that broadband Internet access services do not impair or degrade lawful Internet traffic based on content, application, or service, subject to reasonable network management.
+Upholding net neutrality is pivotal in nurturing diversity, equity, and inclusion on the Internet. Net neutrality ensures that broadband Internet access services do not impair or degrade lawful Internet traffic based on content, application, or service, subject to reasonable network management.
Learn more about net neutrality and its importance through these articles:
-- [**We Need to Talk About Infrastructure**](https://www.eff.org/deeplinks/2022/12/we-need-talk-about-infrastructure): The importance of content-neutral essential Internet infrastructure and the challenges in defining what falls under this category.
-- [**The Internet Is Not Facebook: Why Infrastructure Providers Should Stay Out of Content Policing**](https://www.eff.org/deeplinks/2022/10/Internet-not-facebook-why-infrastructure-providers-should-stay-out-content): The content policing of infrastructure providers due to complex challenges and potential harm to marginalized communities.
-- [**International Coalition of Rights Groups Call on Internet Infrastructure Providers to Avoid Content Policing**](https://www.eff.org/press/releases/international-coalition-rights-groups-call-Internet-infrastructure-providers-avoid): Urging Internet infrastructure providers to avoid content policing, citing harm to users and human rights risks.
-- [**Where the Sidewalk Ends: The Death of the Internet**](https://madattheInternet.substack.com/p/where-the-sidewalk-ends-the-death): The fragmenting of the Internet as national borders and government regulations stifle its openness and connectivity.
-
-<!-- SPDX-License-Identifier: AGPL-3.0-or-later -->
+- [We Need to Talk About Infrastructure](https://www.eff.org/deeplinks/2022/12/we-need-talk-about-infrastructure): The importance of content-neutral essential Internet infrastructure and the challenges in defining what falls under this category.
+- [The Internet Is Not Facebook: Why Infrastructure Providers Should Stay Out of Content Policing](https://www.eff.org/deeplinks/2022/10/Internet-not-facebook-why-infrastructure-providers-should-stay-out-content): The content policing of infrastructure providers due to complex challenges and potential harm to marginalized communities.
+- [International Coalition of Rights Groups Call on Internet Infrastructure Providers to Avoid Content Policing](https://www.eff.org/press/releases/international-coalition-rights-groups-call-Internet-infrastructure-providers-avoid): Urging Internet infrastructure providers to avoid content policing, citing harm to users and human rights risks.
+- [ISPs Should Not Police Online Speech - No Matter How Awful It Is.](https://www.eff.org/deeplinks/2023/08/isps-should-not-police-online-speech-no-matter-how-awful-it): Why ISPs should not be responsible for policing online speech, regardless of how offensive or harmful it may be. How endorsing censorship by ISPs sets a dangerous precedent against marginalized speakers and forums.
+- [Where the Sidewalk Ends: The Death of the Internet](https://madattheInternet.substack.com/p/where-the-sidewalk-ends-the-death): The fragmenting of the Internet as national borders and government regulations stifle its openness and connectivity.
diff --git a/docusaurus/docs/community.mdx b/docusaurus/docs/community.mdx
index aebf053..4d848b9 100644
--- a/docusaurus/docs/community.mdx
+++ b/docusaurus/docs/community.mdx
@@ -1,21 +1,17 @@
-# Community
+---
+title: Community
+hide_title: true
+---
-Welcome to our diverse and inclusive community! We encourage open discussions and warmly invite you to join the conversations. 🎉
-
-:::note
-
-Our community thrives on the Fediverse, a decentralized social network that encompasses various platforms such as:
+<!-- SPDX-License-Identifier: AGPL-3.0-or-later -->
-- [Mastodon](https://joinmastodon.org/)
-- [Pleroma](https://pleroma.social/)
-- [Gitea](https://about.gitea.com/)
-- [Forgejo](https://forgejo.org/)
+# Wolfree community
-:::
+Welcome to the Wolfree community, a diverse and inclusive space where we encourage open discussions and invite you to join the conversations. 🎉
-## Mastodon and Pleroma
+## Mastodon / Pleroma
-We would love to hear your thoughts! Express yourself freely on Mastodon and Pleroma.
+We would love to hear your thoughts. Express yourself freely on Mastodon and Pleroma.
1. https://poa.st/@wolfree
2. https://sb.bae.st/@wolfree
@@ -23,19 +19,25 @@ We would love to hear your thoughts! Express yourself freely on Mastodon and Ple
4. https://spinster.xyz/@wolfree
5. https://freespeechextremist.com/wolfree
-## Gitea and Forgejo
+## Gitea / Forgejo
-Feel free to contribute and [report issues](https://docs.github.com/en/issues) on Gitea and Forgejo.
+Feel free to [report issues](https://docs.github.com/en/issues) on Gitea and Forgejo.
-1. https://try.gitea.io/wolfree/issues/issues
-2. https://codeberg.org/wolfree/issues/issues
-3. https://git.disroot.org/wolfree/issues/issues
-4. https://next.forgejo.org/wolfree/issues/issues
-5. https://git.kiwifarms.net/wolfree/issues/issues
-6. http://it7otdanqu7ktntxzm427cba6i53w6wlanlh23v5i3siqmos47pzhvyd.onion/wolfree/issues/issues
+1. https://gitea.com/wolfree/issues/issues
+2. https://try.gitea.io/wolfree/issues/issues
+3. https://codeberg.org/wolfree/issues/issues
+4. https://git.disroot.org/wolfree/issues/issues
+5. https://next.forgejo.org/wolfree/issues/issues
+6. https://git.kiwifarms.net/wolfree/issues/issues
+7. http://it7otdanqu7ktntxzm427cba6i53w6wlanlh23v5i3siqmos47pzhvyd.onion/wolfree/issues/issues
-## Diversity, Equity, and Inclusion
+## Embracing diversity, equity, and inclusion
-At our core, we strive to cultivate an environment that celebrates diversity, promotes equity, and upholds inclusion on the Internet. ❤️ We value and respect every voice. Let's connect and build a healthy, supportive community!
+The Wolfree community thrives on the Fediverse, a decentralized social network that encompasses various platforms such as:
-<!-- SPDX-License-Identifier: AGPL-3.0-or-later -->
+- [Mastodon](https://joinmastodon.org/)
+- [Pleroma](https://pleroma.social/)
+- [Gitea](https://about.gitea.com/)
+- [Forgejo](https://forgejo.org/)
+
+Wolfree developers strive to cultivate an environment that celebrates diversity, promotes equity, and upholds inclusion on the Internet. Let's connect and build a healthy, supportive community. ❤️
diff --git a/docusaurus/docs/dmca.mdx b/docusaurus/docs/dmca.mdx
deleted file mode 100644
index 4bffc1e..0000000
--- a/docusaurus/docs/dmca.mdx
+++ /dev/null
@@ -1,12 +0,0 @@
-# DMCA takedown
-
-Below are some of the DMCA takedown notices issued by Wolfram Alpha LLC:
-
-1. [2021-08-11-wolfram.md](https://github.com/github/dmca/blob/master/2021/08/2021-08-11-wolfram.md)
-2. [2021-08-16-wolfram.md](https://github.com/github/dmca/blob/master/2021/08/2021-08-16-wolfram.md)
-3. [2022-09-22-wolfram.md](https://github.com/github/dmca/blob/master/2022/09/2022-09-22-wolfram.md)
-
-If you believe someone is using your copyrighted content unauthorizedly on GitHub or npm.js, please fill out the [Copyright claims form](https://github.com/contact/dmca) to submit a DMCA takedown notice to request that the content be changed or removed.
-Before you begin, please read [GitHub's Copyright - DMCA Takedown Policy](https://docs.github.com/en/site-policy/content-removal-policies/dmca-takedown-policy).
-
-As with all legal matters, it is always best to consult a professional about your questions or situation. We strongly encourage you to do so before taking action that might impact your rights. This guide isn't legal advice.
diff --git a/docusaurus/docs/index.mdx b/docusaurus/docs/index.mdx
index 487c0b8..c6c6673 100644
--- a/docusaurus/docs/index.mdx
+++ b/docusaurus/docs/index.mdx
@@ -1,97 +1,90 @@
---
-slug: /
title: Home page
+hide_title: true
+slug: /
---
-# <br /> Free Wolfram Alpha Step-by-Step Solutions
-
-Get free access to **step-by-step** solutions. Unlock the power of **Wolfram|Alpha Pro** for free. Wolfree is **free** and **open-source** software. Thousands of learners use Wolfree to bypass paywalls.
+<!-- SPDX-License-Identifier: AGPL-3.0-or-later -->
import FormCTA from "../src/components/FormCTA.tsx";
-import FormQuickStart from "../src/components/FormQuickStart.tsx";
+import submitMathInputForm from "../src/functions/submitMathInputForm.ts";
+import InputMathProblems from "../src/components/InputMathProblems.tsx";
+import SubmitButton from "../src/components/SubmitButton.tsx";
import ButtonLink from "../src/components/ButtonLink.tsx";
-<FormCTA autoFocus={true} />
+# Free Wolfram Alpha step-by-step solutions
+
+Get free access to **step-by-step** solutions. Unlock the power of **Wolfram|Alpha Pro** for free. Wolfree is **free** and **open-source** software. Thousands of learners use Wolfree to bypass paywalls.
+
+<FormCTA autoFocus={true} submitText="Show Steps" />
+
+## How to get Wolfram Alpha step-by-step solutions for free
+
+<form onSubmit={submitMathInputForm}>
-<br />
-<br />
+1. Type your math problem in the text box.
-## How To Use Wolfree
+ <InputMathProblems autoFocus={false} defaultValue="y'=y" />
-<FormQuickStart />
+2. Click the "Show Steps" button.
-<br />
-<br />
+ <SubmitButton text="Show Steps" />
-## Mirror Sites
+3. Explore the step-by-step solution provided. 🎉
-Wolfree operates through a network of mirror sites to ensure uninterrupted access to step-by-step solutions. If you can't access this web page, visit one of our [mirror sites](/mirror) to continue your learning journey.
+</form>
-<p>
- <ButtonLink to="./mirror" text="Access Mirror Sites" />
-</p>
+## Mirror sites
-<br />
-<br />
+If you can't access this web page, visit one of the [mirror sites](/mirror) to continue your learning journey. Wolfree operates through a network of mirror sites to ensure uninterrupted access to step-by-step solutions.
-## Source Code
+<ButtonLink to="./mirror" text="Access mirror sites" />
-Wolfree is **free** and **open-source** software. Our inclusive community welcomes individuals from diverse backgrounds to collaborate on our [source code](/source). Let's foster diversity, equity, and inclusion on the Internet. ❤️
+## Source code
-<p>
- <ButtonLink to="./source" text="Explore Source Code" />
-</p>
+Wolfree is **free** and **open-source** software built on transparency and openness, welcoming individuals from diverse backgrounds to collaborate on [source code](/source). Let's foster diversity, equity, and inclusion on the Internet. ❤️
-<br />
-<br />
+<ButtonLink to="./source" text="Explore source code" />
-## How Wolfree Works
+## How Wolfree works
Here's a simplified breakdown of how Wolfree works:
1. Programmers distribute the Dockerfile on Fediverse, including platforms compatible with ForgeFed, like Forgejo and Gitea.
-2. Website operators install and run Docker.
-3. Docker automatically downloads the Dockerfile from Fediverse and builds a Docker image.
+2. Website operators install and run Docker Engine.
+3. Docker Engine automatically downloads the Dockerfile from Fediverse and builds a Docker image.
4. Web hosting service providers deploy Wolfree mirror sites.
5. Internet service providers allow your web browser to connect to Wolfree mirror sites.
-6. You gain **free** access to the computational capabilities of **Wolfram|Alpha Pro**. 🎉
+6. You gain access to the computational capabilities of **Wolfram|Alpha Pro**. 🎉
Wolfree leverages a [shadow library](https://en.wikipedia.org/wiki/Shadow_library) that shares **step-by-step** solutions, ensuring you have free access to the learning resources you need.
-<br />
-<br />
-
-## Testimonials
-
-Here's what our community has to say about Wolfree:
+## Trusted by thousands of learners
> "Wolfree has been a transformative addition to my academic journey. The **step-by-step** solutions powered by **Wolfram|Alpha Pro** have profoundly enriched my understanding of complex math concepts. Thanks to Wolfree, my grades have seen remarkable improvement. I now approach math confidently." - Olivia (they/them), Student.
-> "As a math teacher, I wholeheartedly endorse Wolfree for my students. The **step-by-step** solutions promote genuine comprehension of math concepts. By incorporating the computational capabilities of **Wolfram|Alpha Pro** into my classroom, Wolfree has significantly elevated my students' learning experiences." - Mx. Smith (they/them), Educator.
-
-<br />
-<br />
+> "As a math teacher, I wholeheartedly endorse Wolfree for my students. The **step-by-step** solutions promote genuine comprehension of math concepts. By incorporating the computational capabilities of **Wolfram|Alpha Pro** into my classroom, Wolfree has measurably enhanced my students' learning outcomes." - Mx. Smith, Educator.
-## What You'll Get with Wolfree
+## What you'll get with Wolfree
-By using Wolfree, you'll get **free** access to the full potential of **Wolfram|Alpha Pro**, including:
+By using Wolfree, you'll get **free** access to the full power of **Wolfram|Alpha Pro**, including:
-- Get answers and hints for your math homework problems.
-- Use **step-by-step** calculators for chemistry, calculus, algebra, trigonometry, and equation solving.
-- Develop a deeper understanding of your homework with detailed steps and hints guiding you from problems to answers.
+- **Step-by-step** calculators for calculus, differential equations, and linear algebra.
+- Immediate feedback and guidance hints for your math homework problems.
+- Detailed, comprehensible steps guiding you from problems to answers.
Unleash the full potential of your learning with Wolfree and elevate your studies to a whole new level. 🚀
-It's **free**! Type your math problem and click "**Show Steps**" now!
+It's **free**. Type your math problem and click "**Show Steps**" now.
-<FormCTA />
-
-<br />
-<br />
+<FormCTA autoFocus={false} submitText="Show Steps" />
<!--
What Is a Landing Page? Landing Pages Explained | Unbounce
https://unbounce.com/landing-page-articles/what-is-a-landing-page/
+-->
+
+<!--
Is Your Landing Page Good Enough to get into Y Combinator?
https://yourlandingpagesucks.com/startup-landing-page-teardown-yc/
-->
@@ -105,5 +98,3 @@ It's **free**! Type your math problem and click "**Show Steps**" now!
My pronouns are: they/them • Pronouns.page
https://en.pronouns.page/they
-->
-
-<!-- SPDX-License-Identifier: AGPL-3.0-or-later -->
diff --git a/docusaurus/docs/mirror.mdx b/docusaurus/docs/mirror.mdx
index 8af5f77..1bf5d88 100644
--- a/docusaurus/docs/mirror.mdx
+++ b/docusaurus/docs/mirror.mdx
@@ -1,10 +1,13 @@
---
title: Mirror site
+hide_title: true
---
-# Mirror Sites: Alternative Instances
+<!-- SPDX-License-Identifier: AGPL-3.0-or-later -->
+
+# Mirror sites: alternative instances
-Wolfree operates through a network of mirror sites to ensure uninterrupted access to step-by-step solutions. If you can't access this web page, visit one of our mirror sites to continue your learning journey.
+Wolfree operates through a network of mirror sites. If you can't access this web page, visit the mirror sites.
1. https://wolfree.chickenkiller.com/
2. https://wolfree.crabdance.com/
@@ -38,13 +41,16 @@ Wolfree operates through a network of mirror sites to ensure uninterrupted acces
30. https://wolfreealpha.twilightparadox.com/
31. https://wolfreealpha.uk.to/
32. https://wolfreealpha.us.to/
+33. https://wf.opnxng.com/
+
+## Bookmarking all mirror sites
-:::note
Please note that Internet Service Providers may block access to this website without prior notice. Therefore, we recommend bookmarking the mirror sites in advance to ensure easier access.
-:::
-If you cannot access any of the mirror sites, we recommend installing the [Tor Browser](https://www.torproject.org/) to bypass censorship.
+## Fetching JSON list of instances
If you have programming knowledge, you can deserialize the [instances.json](pathname://../instances.json) file.
-<!-- SPDX-License-Identifier: AGPL-3.0-or-later -->
+## Accessing Wolfree in censored countries
+
+If you cannot access any of the mirror sites, we recommend installing the [Tor Browser](https://www.torproject.org/) to bypass censorship.
diff --git a/docusaurus/docs/source.mdx b/docusaurus/docs/source.mdx
index e9d0192..8314422 100644
--- a/docusaurus/docs/source.mdx
+++ b/docusaurus/docs/source.mdx
@@ -1,32 +1,37 @@
---
title: Source code
+hide_title: true
---
-# Access and Download the Source Code of Wolfree
+<!-- SPDX-License-Identifier: AGPL-3.0-or-later -->
-Wolfree is free and open-source software. You can access and download the source code from the following websites:
+# Accessing the source code of Wolfree
-1. https://try.gitea.io/wolfree
-2. https://codeberg.org/wolfree
-3. https://git.disroot.org/wolfree
-4. https://next.forgejo.org/wolfree
-5. https://git.kiwifarms.net/wolfree
-6. http://it7otdanqu7ktntxzm427cba6i53w6wlanlh23v5i3siqmos47pzhvyd.onion/wolfree
+Wolfree is **free** and **open-source** software. You can access and download the source code from the following websites:
-## The Unreliability of GitHub
+1. https://gitea.com/wolfree
+2. https://try.gitea.io/wolfree
+3. https://codeberg.org/wolfree
+4. https://git.disroot.org/wolfree
+5. https://next.forgejo.org/wolfree
+6. https://git.kiwifarms.net/wolfree
+7. http://it7otdanqu7ktntxzm427cba6i53w6wlanlh23v5i3siqmos47pzhvyd.onion/wolfree
+
+## The unreliability of GitHub
We do not recommend pushing the source code to GitHub. Their [DMCA Takedown Policy](https://docs.github.com/en/site-policy/content-removal-policies/dmca-takedown-policy) makes storing the source code on GitHub unreliable.
-## The High Availability of ForgeFed
+## The high availability of ForgeFed
For a more reliable and collaborative development experience, we recommend using [Gitea](https://about.gitea.com/) and [Forgejo](https://forgejo.org/). These platforms support [ActivityPub](https://www.w3.org/TR/activitypub/) and [ForgeFed](https://forgefed.org/) protocols, enabling seamless collaboration and communication among developers.
-:::note
-If you cannot access Gitea or Forgejo, we recommend installing the [Tor Browser](https://www.torproject.org/). The Tor Browser is a reputable tool designed to bypass censorship.
-:::
+## Accessing the source code in censored countries
+
+If you cannot access Gitea or Forgejo, we recommend installing the [Tor Browser](https://www.torproject.org/) to bypass censorship.
-## License
+## Submitting a DMCA takedown notice
-SPDX-License-Identifier: AGPL-3.0-or-later
+If you believe someone is using your copyrighted content unauthorizedly on GitHub or npm.js, please fill out the [Copyright claims form](https://github.com/contact/dmca) to submit a DMCA takedown notice to request that the content be changed or removed.
+Before you begin, please read [GitHub's Copyright - DMCA Takedown Policy](https://docs.github.com/en/site-policy/content-removal-policies/dmca-takedown-policy).
-This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+As with all legal matters, it is always best to consult a professional about your questions or situation. We strongly encourage you to do so before taking action that might impact your rights. This guide isn't legal advice.
diff --git a/docusaurus/docusaurus.config.js b/docusaurus/docusaurus.config.js
index 1cb19b7..0c1833c 100644
--- a/docusaurus/docusaurus.config.js
+++ b/docusaurus/docusaurus.config.js
@@ -1,15 +1,17 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
// @ts-check
+/** @type { { config: { libredirect: false } } } */
+const wolfree = require("./wolfree.config.js");
+const lightCodeTheme = require("prism-react-renderer/themes/github");
+const darkCodeTheme = require("prism-react-renderer/themes/dracula");
+
/** @type {import('@docusaurus/types').Config} */
module.exports = {
- title: "Wolfree - Free WolframAlpha step-by-step solution",
+ title: wolfree.config.libredirect
+ ? "Paywall-respecting instances: Wolfree instances that do not bypass paywalls"
+ : "Wolfree - Free WolframAlpha step-by-step solution",
url: "http://example.com",
baseUrl: "/",
favicon: "data:,",
@@ -19,7 +21,7 @@ module.exports = {
/** @type {import('@docusaurus/preset-classic').Options} */
{
docs: {
- sidebarPath: require.resolve("./sidebars.js"),
+ sidebarPath: require.resolve("./sidebars.config.js"),
routeBasePath: "/",
breadcrumbs: false,
},
@@ -46,7 +48,9 @@ module.exports = {
items: [
{
to: "/",
- label: "Wolfree",
+ label: wolfree.config.libredirect
+ ? "Paywall-respecting instances"
+ : "Wolfree",
position: "left",
},
{
@@ -55,16 +59,6 @@ module.exports = {
position: "right",
target: "_self",
},
- {
- to: "/mirror",
- label: "Mirror",
- position: "right",
- },
- {
- to: "/source",
- label: "Source",
- position: "right",
- },
],
},
footer: {
@@ -92,11 +86,12 @@ module.exports = {
label: "Acknowledgment",
href: "/acknowledgment",
},
- {
- label: "DMCA takedown",
- href: "/dmca",
- },
],
+ copyright: "SPDX-License-Identifier: AGPL-3.0-or-later",
+ },
+ prism: {
+ theme: lightCodeTheme,
+ darkTheme: darkCodeTheme,
},
},
};
diff --git a/docusaurus/package.json b/docusaurus/package.json
index 2e58a5e..a27490d 100644
--- a/docusaurus/package.json
+++ b/docusaurus/package.json
@@ -15,21 +15,19 @@
"typecheck": "tsc"
},
"dependencies": {
- "@docusaurus/core": "2.4.1",
- "@docusaurus/preset-classic": "2.4.1",
+ "@docusaurus/core": "2.4.3",
+ "@docusaurus/preset-classic": "2.4.3",
"@emotion/react": "^11.11.1",
"@emotion/styled": "^11.11.0",
"@mdx-js/react": "^1.6.22",
- "@mui/material": "^5.14.1",
- "@types/dompurify": "^3.0.2",
- "@types/jquery": "^3.5.16",
+ "@mui/material": "^5.14.10",
"clsx": "^1.2.1",
"prism-react-renderer": "^1.3.5",
"react": "^17.0.2",
"react-dom": "^17.0.2"
},
"devDependencies": {
- "@docusaurus/module-type-aliases": "2.4.1",
+ "@docusaurus/module-type-aliases": "2.4.3",
"@tsconfig/docusaurus": "^1.0.5",
"typescript": "^4.7.4"
},
diff --git a/docusaurus/sidebars.config.js b/docusaurus/sidebars.config.js
new file mode 100644
index 0000000..7d4711a
--- /dev/null
+++ b/docusaurus/sidebars.config.js
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
+
+// @ts-check
+
+/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
+module.exports = {
+ sidebarId: [
+ "index",
+ {
+ type: "html",
+ value: '<a class="menu__link" href="/input/">Input math problems</a>',
+ className: "menu__list-item",
+ },
+ "mirror",
+ "source",
+ "community",
+ "acknowledgment",
+ ],
+};
diff --git a/docusaurus/sidebars.js b/docusaurus/sidebars.js
deleted file mode 100644
index 3a62009..0000000
--- a/docusaurus/sidebars.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-// @ts-check
-
-/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
-module.exports = {
- sidebarId: [
- "index",
- {
- type: "html",
- value: '<a class="menu__link" href="/input/">Input math problems</a>',
- className: "menu__list-item",
- },
- "mirror",
- "source",
- {
- type: "category",
- label: "Detail",
- collapsible: true,
- collapsed: true,
- items: ["community", "acknowledgment", "dmca"],
- },
- ],
-};
diff --git a/docusaurus/src/components/ButtonLink.tsx b/docusaurus/src/components/ButtonLink.tsx
index 12fc559..5fd69e1 100644
--- a/docusaurus/src/components/ButtonLink.tsx
+++ b/docusaurus/src/components/ButtonLink.tsx
@@ -1,25 +1,26 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
-import React from "react";
+import Button from "@mui/material/Button";
import Link from "@docusaurus/Link";
-import { Button } from "@mui/material";
+import React from "react";
-const ButtonLink = ({ to = String(), text = String() }) => (
- <Link to={to}>
- <Button size="large" sx={{ textTransform: "capitalize" }}>
- <strong>{text}</strong>
- &nbsp; »
- </Button>
- </Link>
+export default ({
+ to = "",
+ text = "",
+}: Readonly<{
+ to: string;
+ text: string;
+}>): React.JSX.Element => (
+ <p>
+ <Link to={to}>
+ <Button size="large" sx={{ textTransform: "capitalize" }}>
+ <strong>{text}</strong>
+ &nbsp; »
+ </Button>
+ </Link>
+ </p>
);
-export default ButtonLink;
-
// Typography - MUI System
// https://mui.com/system/typography/
diff --git a/docusaurus/src/components/FormCTA.tsx b/docusaurus/src/components/FormCTA.tsx
index 1b5a81e..0912dec 100644
--- a/docusaurus/src/components/FormCTA.tsx
+++ b/docusaurus/src/components/FormCTA.tsx
@@ -1,23 +1,20 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
+import InputMathProblems from "./InputMathProblems";
import React from "react";
+import SubmitButton from "./SubmitButton";
import submitMathInputForm from "../functions/submitMathInputForm";
-import InputMathProblems from "./InputMathProblems";
-import ShowStepButton from "./ShowStepButton";
-const FormCTA = ({ autoFocus = Boolean() }) => (
+export default ({
+ autoFocus = false,
+ submitText = "",
+}: Readonly<{
+ autoFocus: boolean;
+ submitText: string;
+}>): React.JSX.Element => (
<form onSubmit={submitMathInputForm}>
+ <InputMathProblems autoFocus={autoFocus} defaultValue="" />
<p></p>
- <InputMathProblems autoFocus={autoFocus} />
- <p></p>
- <ShowStepButton />
- <p></p>
+ <SubmitButton text={submitText} />
</form>
);
-
-export default FormCTA;
diff --git a/docusaurus/src/components/FormQuickStart.tsx b/docusaurus/src/components/FormQuickStart.tsx
deleted file mode 100644
index 60589fb..0000000
--- a/docusaurus/src/components/FormQuickStart.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-import React from "react";
-import submitMathInputForm from "../functions/submitMathInputForm";
-import InputMathProblems from "./InputMathProblems";
-import ShowStepButton from "./ShowStepButton";
-
-const FormQuickStart = () => (
- <form onSubmit={submitMathInputForm}>
- <ol>
- <li>
- <p>Type your math problem in the text box.</p>
- <InputMathProblems defaultValue="y'=y" />
- </li>
- <li>
- <p>
- Click the "Show Steps" button.
- </p>
- <ShowStepButton />
- </li>
- <li>
- <p>
- Explore the step-by-step solution provided. 🎉
- </p>
- </li>
- </ol>
- </form>
-);
-
-export default FormQuickStart;
diff --git a/docusaurus/src/components/InputMathProblems.tsx b/docusaurus/src/components/InputMathProblems.tsx
index c7b49ce..27313d2 100644
--- a/docusaurus/src/components/InputMathProblems.tsx
+++ b/docusaurus/src/components/InputMathProblems.tsx
@@ -1,19 +1,15 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
import React from "react";
import TextField from "@mui/material/TextField";
-// TextField API - Material UI
-// https://mui.com/material-ui/api/text-field/
-const InputMathProblems = ({
- autoFocus = Boolean(),
- defaultValue = String(),
-}) => (
+export default ({
+ autoFocus = false,
+ defaultValue = "",
+}: Readonly<{
+ autoFocus: boolean;
+ defaultValue: string;
+}>): React.JSX.Element => (
<TextField
name="i"
type="search"
@@ -30,4 +26,8 @@ const InputMathProblems = ({
/>
);
-export default InputMathProblems;
+// TextField API - Material UI
+// https://mui.com/material-ui/api/text-field/
+
+// <input>: The Input (Form Input) element - HTML: HyperText Markup Language | MDN
+// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input
diff --git a/docusaurus/src/components/ShowStepButton.tsx b/docusaurus/src/components/ShowStepButton.tsx
deleted file mode 100644
index 3ae7ba3..0000000
--- a/docusaurus/src/components/ShowStepButton.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-import React from "react";
-import { Button } from "@mui/material";
-
-const ShowStepButton = () => (
- <Button
- type="submit"
- size="large"
- variant="contained"
- sx={{ textTransform: "capitalize" }}
- >
- Show Steps
- </Button>
-);
-
-export default ShowStepButton;
-
-// Typography - MUI System
-// https://mui.com/system/typography/
diff --git a/docusaurus/src/components/SubmitButton.tsx b/docusaurus/src/components/SubmitButton.tsx
new file mode 100644
index 0000000..e9b1c72
--- /dev/null
+++ b/docusaurus/src/components/SubmitButton.tsx
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
+
+import Button from "@mui/material/Button";
+import React from "react";
+
+export default ({
+ text = "",
+}: Readonly<{ text: string }>): React.JSX.Element => (
+ <p>
+ <Button
+ type="submit"
+ size="large"
+ variant="contained"
+ sx={{ textTransform: "capitalize" }}
+ >
+ {text}
+ </Button>
+ </p>
+);
+
+// Typography - MUI System
+// https://mui.com/system/typography/
diff --git a/docusaurus/src/css/custom.css b/docusaurus/src/css/custom.css
index a027863..ce621e1 100644
--- a/docusaurus/src/css/custom.css
+++ b/docusaurus/src/css/custom.css
@@ -1,15 +1,51 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
+
+.markdown {
+ --ifm-h2-vertical-rhythm-top: 4;
+}
:root {
--ifm-menu-link-padding-vertical: calc(var(--ifm-menu-link-padding-horizontal) * 1.5);
+ --ifm-toc-padding-vertical: calc(var(--ifm-toc-padding-horizontal) * 2);
--ifm-color-primary: blue;
- --ifm-color-gray-900: var(--ifm-color-gray-900);
- --ifm-color-secondary-contrast-foreground: var(--ifm-color-gray-900);
+ --ifm-color-gray-700: black;
+ --ifm-color-gray-800: black;
+ --ifm-color-gray-900: black;
+ --ifm-color-secondary-contrast-foreground: black;
+ --ifm-color-content-secondary: black;
+}
+
+.markdown>h1 {
+ /* Style the <h1> on http://localhost/source */
+ margin-top: calc(var(--ifm-h2-vertical-rhythm-top) * var(--ifm-leading));
+}
+
+:root {
+ --wolfree-heading-zoom: 0.75;
+}
+
+h1 {
+ font-size: calc(max(1rem, var(--ifm-h1-font-size) * var(--wolfree-heading-zoom)));
+}
+
+h2 {
+ font-size: calc(max(1rem, var(--ifm-h2-font-size) * var(--wolfree-heading-zoom)));
+}
+
+h3 {
+ font-size: calc(max(1rem, var(--ifm-h3-font-size) * var(--wolfree-heading-zoom)));
+}
+
+h4 {
+ font-size: calc(max(1rem, var(--ifm-h4-font-size) * var(--wolfree-heading-zoom)));
+}
+
+h5 {
+ font-size: calc(max(1rem, var(--ifm-h5-font-size) * var(--wolfree-heading-zoom)));
+}
+
+h6 {
+ font-size: calc(max(1rem, var(--ifm-h6-font-size) * var(--wolfree-heading-zoom)));
}
.footer__link-item {
diff --git a/docusaurus/src/functions/submitMathInputForm.ts b/docusaurus/src/functions/submitMathInputForm.ts
new file mode 100644
index 0000000..cf3294b
--- /dev/null
+++ b/docusaurus/src/functions/submitMathInputForm.ts
@@ -0,0 +1,23 @@
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
+
+import React from "react";
+
+export default (event: React.FormEvent<HTMLFormElement>): void => {
+ event.preventDefault();
+ const htmlFormElement = event.currentTarget;
+ const formData = new FormData(htmlFormElement);
+ const i = formData.get("i");
+
+ const url = new URL("/input/", window.location.href);
+
+ if (typeof i === "string") {
+ url.searchParams.set("i", i);
+ } else if (i instanceof File) {
+ console.warn({ i });
+ } else {
+ const typescriptExhaustivenessCheck: never = i;
+ console.warn({ typescriptExhaustivenessCheck });
+ }
+
+ window.location.assign(url);
+};
diff --git a/docusaurus/src/functions/submitMathInputForm.tsx b/docusaurus/src/functions/submitMathInputForm.tsx
deleted file mode 100644
index a90894e..0000000
--- a/docusaurus/src/functions/submitMathInputForm.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-import { FormEventHandler } from "react";
-
-const submitMathInputForm: FormEventHandler<HTMLFormElement> = (event) => {
- event.preventDefault();
- const form = event.currentTarget;
- const formData = new FormData(form);
-
- const i = formData.get("i") || "";
- if (i instanceof File) return;
-
- const url = new URL("/input/", window.location.href);
- url.searchParams.set("i", i);
- window.location.href = url.href;
-};
-
-export default submitMathInputForm;
diff --git a/docusaurus/src/functions/typescriptNever.ts b/docusaurus/src/functions/typescriptNever.ts
new file mode 100644
index 0000000..42becd5
--- /dev/null
+++ b/docusaurus/src/functions/typescriptNever.ts
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
+
+export default (typescriptNeverValue: never): never => {
+ console.warn({ typescriptNeverValue });
+
+ return typescriptNeverValue;
+};
+
+// How do I check that a switch block is exhaustive in TypeScript? - Stack Overflow
+// https://stackoverflow.com/questions/39419170/how-do-i-check-that-a-switch-block-is-exhaustive-in-typescript
diff --git a/docusaurus/src/theme/Footer/InputPreloader.tsx b/docusaurus/src/theme/Footer/InputPreloader.tsx
index 325f8a7..2ba2e19 100644
--- a/docusaurus/src/theme/Footer/InputPreloader.tsx
+++ b/docusaurus/src/theme/Footer/InputPreloader.tsx
@@ -1,35 +1,31 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-import React, { useEffect, useState } from "react";
-
-const InputPreloader = () => {
- const [showIframe, setShowIframe] = useState(false);
-
- useEffect(() => {
- const handleIframeLoad = () => {
- // Show the iframe after a 3000ms delay
- const timerId = setTimeout(() => setShowIframe(true), 3000);
- // Cleanup the timer when the component unmounts
- return () => clearTimeout(timerId);
- };
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
- window.scroll(0, 0);
+import React from "react";
+
+export default (): React.JSX.Element => {
+ const [insertIframe, setInsertIframe] = React.useState(false);
+
+ React.useEffect((): (() => void) => {
+ const handleIframeLoad = (): (() => void) => {
+ // Insert the iframe after a 3000ms delay.
+ const timerId = setTimeout((): void => setInsertIframe(true), 3000);
+
+ // Cleanup the timer when the component unmounts.
+ return (): void => clearTimeout(timerId);
+ };
window.addEventListener("load", handleIframeLoad);
- // Cleanup the event listener when the component unmounts
- return () => window.removeEventListener("load", handleIframeLoad);
- }, []); // Empty dependency array means the effect runs only once after initial render
+ window.scroll(0, 0);
+
+ // Cleanup the event listener when the component unmounts.
+ return (): void => window.removeEventListener("load", handleIframeLoad);
+ }, []); // Empty dependency array means the effect runs only once after initial render.
return (
<>
{/* Use a descriptive title for accessibility */}
- {showIframe && (
+ {insertIframe && (
<iframe
title="Input Page Preloader"
src="/input/"
@@ -39,5 +35,3 @@ const InputPreloader = () => {
</>
);
};
-
-export default InputPreloader;
diff --git a/docusaurus/src/theme/Footer/index.tsx b/docusaurus/src/theme/Footer/index.tsx
index 2edef40..e4063c5 100644
--- a/docusaurus/src/theme/Footer/index.tsx
+++ b/docusaurus/src/theme/Footer/index.tsx
@@ -1,21 +1,14 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
-import React from "react";
import Footer from "@theme-original/Footer";
import InputPreloader from "./InputPreloader";
+import React from "react";
-const FooterWrapper = (props: React.JSX.IntrinsicAttributes) => {
- return (
- <>
- <Footer {...props} />
- <InputPreloader />
- </>
- );
-};
-
-export default FooterWrapper;
+export default (
+ props: React.JSX.ElementAttributesProperty
+): React.JSX.Element => (
+ <>
+ <Footer {...props} />
+ <InputPreloader />
+ </>
+);
diff --git a/docusaurus/src/theme/NotFound/DDoSProtection.tsx b/docusaurus/src/theme/NotFound/DDoSProtection.tsx
index 6cd8c04..b861669 100644
--- a/docusaurus/src/theme/NotFound/DDoSProtection.tsx
+++ b/docusaurus/src/theme/NotFound/DDoSProtection.tsx
@@ -1,19 +1,14 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
import React from "react";
-const DDoSProtection = () => (
+export default (): React.JSX.Element => (
<center
style={{
display: "flex",
justifyContent: "center",
alignItems: "center",
- height: 100 + "vh",
+ height: "99vh",
}}
>
<center>
@@ -30,5 +25,3 @@ const DDoSProtection = () => (
</center>
</center>
);
-
-export default DDoSProtection;
diff --git a/docusaurus/src/theme/NotFound/redirectInput.tsx b/docusaurus/src/theme/NotFound/Redirection.tsx
index 4e29b4a..3fe2d6d 100644
--- a/docusaurus/src/theme/NotFound/redirectInput.tsx
+++ b/docusaurus/src/theme/NotFound/Redirection.tsx
@@ -1,41 +1,30 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-import { useEffect } from "react";
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
-const redirectInput = () => {
- useEffect(() => {
- const redirectToInputPage = () => {
- const pathname = window.location.pathname;
+import React from "react";
+import typescriptNever from "../../functions/typescriptNever";
- const isExample = pathname.includes("/example");
- if (!isExample) {
- window.location.href = "/";
- return;
- }
+export default (): React.JSX.Element => {
+ React.useEffect((): void => {
+ const pathname = window.location.pathname;
- const filename = pathname.split("/").pop();
- if (!filename) {
- window.location.href = "/";
- return;
- }
+ const isExample = pathname.includes("/example");
- const topic = "topic " + filename.replace(/-/g, " ");
+ if (isExample === true) {
+ const topic = "topic " + pathname.split("/").pop().replace(/-/g, " ");
const url = new URL("/input/", window.location.href);
url.searchParams.set("i", topic);
- window.location.href = url.href;
- };
-
- redirectToInputPage();
- }, []); // The effect runs only once on mount
+ window.location.replace(url);
+ } else if (isExample === false) {
+ window.location.replace("/");
+ } else {
+ window.location.replace("/");
+ typescriptNever(isExample);
+ }
+ }, []); // Empty dependency array means the effect runs only once after initial render.
+
+ return <></>;
};
-export default redirectInput;
-
/*
* test case:
*
diff --git a/docusaurus/src/theme/NotFound/index.tsx b/docusaurus/src/theme/NotFound/index.tsx
index d5e0208..15e9fe6 100644
--- a/docusaurus/src/theme/NotFound/index.tsx
+++ b/docusaurus/src/theme/NotFound/index.tsx
@@ -1,28 +1,21 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
-import React from "react";
-import NotFound from "@theme-original/NotFound";
-import redirectInput from "./redirectInput";
import DDoSProtection from "./DDoSProtection";
+import NotFound from "@theme-original/NotFound";
+import React from "react";
+import Redirection from "./Redirection";
-const NotFoundWrapper = (props: React.JSX.IntrinsicAttributes) => {
- redirectInput();
- return (
- <>
- <DDoSProtection />
- <div style={{ display: "none" }}>
- <NotFound {...props} />
- </div>
- </>
- );
-};
-
-export default NotFoundWrapper;
+export default (
+ props: React.JSX.ElementAttributesProperty
+): React.JSX.Element => (
+ <>
+ <Redirection />
+ <DDoSProtection />
+ <div style={{ display: "none" }}>
+ <NotFound {...props} />
+ </div>
+ </>
+);
// How can I customize the 404 page? · facebook/docusaurus · Discussion #6030
// https://github.com/facebook/docusaurus/discussions/6030
diff --git a/docusaurus/static/.htaccess b/docusaurus/static/.htaccess
new file mode 100644
index 0000000..de377bf
--- /dev/null
+++ b/docusaurus/static/.htaccess
@@ -0,0 +1 @@
+ErrorDocument 404 /404.html
diff --git a/docusaurus/static/n/v1/api/samplefiles/fileinput/examples b/docusaurus/static/_next/static/chunks/pages/examples-26aec7eb12db3258.js
index e69de29..e69de29 100644
--- a/docusaurus/static/n/v1/api/samplefiles/fileinput/examples
+++ b/docusaurus/static/_next/static/chunks/pages/examples-26aec7eb12db3258.js
diff --git a/docusaurus/static/_next/static/images/blueLaptopLarge_2mT4E7sC.png b/docusaurus/static/_next/static/images/blueLaptopLarge_2mT4E7sC.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/docusaurus/static/_next/static/images/blueLaptopLarge_2mT4E7sC.png
diff --git a/docusaurus/static/_next/static/images/blueLaptopSmall_2HE8DlL-.png b/docusaurus/static/_next/static/images/blueLaptopSmall_2HE8DlL-.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/docusaurus/static/_next/static/images/blueLaptopSmall_2HE8DlL-.png
diff --git a/docusaurus/static/_next/static/images/purpleLaptopLarge_3J6pajKV.png b/docusaurus/static/_next/static/images/purpleLaptopLarge_3J6pajKV.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/docusaurus/static/_next/static/images/purpleLaptopLarge_3J6pajKV.png
diff --git a/docusaurus/static/_next/static/images/purpleLaptopSmall_QQ5wFSVR.png b/docusaurus/static/_next/static/images/purpleLaptopSmall_QQ5wFSVR.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/docusaurus/static/_next/static/images/purpleLaptopSmall_QQ5wFSVR.png
diff --git a/docusaurus/static/_next/static/images/tealLaptopLarge_2Y_KGBw9.png b/docusaurus/static/_next/static/images/tealLaptopLarge_2Y_KGBw9.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/docusaurus/static/_next/static/images/tealLaptopLarge_2Y_KGBw9.png
diff --git a/docusaurus/static/_next/static/images/tealLaptopSmall_1Xxic2d8.png b/docusaurus/static/_next/static/images/tealLaptopSmall_1Xxic2d8.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/docusaurus/static/_next/static/images/tealLaptopSmall_1Xxic2d8.png
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/css/Placeholder.css b/docusaurus/static/ajax/libs/wolfree/2023.8.31/css/Placeholder.css
index b7553e2..bcb9311 100644
--- a/docusaurus/static/ajax/libs/wolfree/23.7.8/css/Placeholder.css
+++ b/docusaurus/static/ajax/libs/wolfree/2023.8.31/css/Placeholder.css
@@ -1,9 +1,4 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
.wolfree-placeholder {
display: flex;
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/css/PodsParser.css b/docusaurus/static/ajax/libs/wolfree/2023.8.31/css/PodsParser.css
index 179b1c6..34a43ad 100644
--- a/docusaurus/static/ajax/libs/wolfree/23.7.8/css/PodsParser.css
+++ b/docusaurus/static/ajax/libs/wolfree/2023.8.31/css/PodsParser.css
@@ -1,9 +1,4 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
.wolfree-pods {
display: flex;
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/AJAX.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/AJAX.js
deleted file mode 100644
index 465787d..0000000
--- a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/AJAX.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-// @ts-check
-
-import SearchParams from "./SearchParams.js";
-
-export default class AJAX {
- ajax = async ({
- input = String(),
- i2d = Boolean(),
- extraPodstates = Array(),
- } = {}) => {
- try {
- const data = new SearchParams().getSearchParams({
- input,
- extraPodstates,
- i2d,
- });
-
- const options = {
- url: "https://api.wolframalpha.com/v2/query",
- dataType: "jsonp",
- traditional: true,
- data,
- };
-
- try {
- /**
- * https://www.npmjs.com/package/@types/jquery
- * @type {import('jQuery')}
- */
- const response = await jQuery.ajax(options);
- return (
- console.assert(response instanceof Object),
- console.assert(response.hasOwnProperty("queryresult")),
- { response }
- );
- } catch (error) {
- return (
- console.error(
- { error },
- "We encountered an issue while attempting to retrieve a response from the Wolfram Alpha API using the jQuery library."
- ),
- { error }
- );
- }
- } catch (error) {
- return console.error({ error }), { error };
- }
- };
-}
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/AppID.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/AppID.js
deleted file mode 100644
index 070e4e1..0000000
--- a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/AppID.js
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-// @ts-check
-
-// To generate a new AppID:
-// 1. Open Tor Browser and go to: https://products.wolframalpha.com/api/
-// 2. Click the orangish "Get API Access" button. You will go to: https://account.wolfram.com/login/oauth2/sign-in
-// 3. Click the reddish "Create one" hyperlink to create a new Wolfram ID. You will go to: https://account.wolfram.com/login/create
-// 4. Fill out the form using random alphanumeric characters.
-// 5. Click the reddish "Create Wolfram ID" button. You will go to: https://developer.wolframalpha.com/portal/myapps/index.html
-// 6. Click the orangish "Sign up to get your first AppID" button.
-// 7. Fill out the form using random alphanumeric characters.
-// 8. Click the orangish "Sign up" button.
-// 9. Click the orangish "Get an AppID" button.
-// 10. Fill out the form using random alphanumeric characters.
-// 11. Click the orangish "Get AppID" button.
-
-export default class AppID {
- appIDArray = Array();
-
- constructor(
- appIDArray = ["H9V325-HTALUWHKGK", "AKJTJT-LR5LL8WTG6", "LKY83U-XW6ATU9URU"]
- ) {
- (this.appIDArray = appIDArray),
- Array.from(this.appIDArray).forEach(
- (appID) => (
- console.assert(17 === appID.length),
- console.assert(/[0-9A-Z]{6}-[0-9A-Z]{10}/.test(appID))
- )
- );
- }
-
- getAppID = ({
- appID = this.appIDArray[this.getRandomInt() % this.appIDArray.length],
- } = {}) => {
- try {
- return appID;
- } catch (error) {
- return console.error({ error }), String();
- }
- };
-
- getRandomInt = ({
- randomInt = crypto.getRandomValues(new Uint32Array(1))[0],
- } = {}) => {
- try {
- return randomInt;
- } catch (error) {
- return console.error({ error }), Number();
- }
- };
-}
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Entrypoint.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Entrypoint.js
deleted file mode 100644
index 0fe9d31..0000000
--- a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Entrypoint.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-// @ts-check
-
-import Processor from "./Processor.js";
-import Preprocessor from "./Preprocessor.js";
-import PostProcessor from "./PostProcessor.js";
-
-export default async ({
- input = String(),
- i2d = Boolean(),
- extraPodstates = Array(),
-} = {}) => {
- try {
- new Preprocessor().process();
- await new Processor().process({ input, i2d, extraPodstates });
- new PostProcessor().process({ input, i2d });
- } catch (error) {
- console.error({ error });
- }
-};
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Placeholder.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Placeholder.js
deleted file mode 100644
index d5b45a6..0000000
--- a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Placeholder.js
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-// @ts-check
-
-export default class Placeholder {
- className = "wolfree-placeholder";
-
- placeholderHTML = `
- <div class="${this.className}">
- <div>
- <div>
- <div><div></div></div>
- <div><div></div></div>
- <div><div></div></div>
- </div>
- </div>
- </div>
- `;
-
- insert = ({
- container = document.querySelector(
- "html > body > #__next > div > main > main > div:nth-of-type(1)"
- ),
- } = {}) => {
- try {
- return (
- container instanceof HTMLDivElement
- ? container.insertAdjacentHTML("afterend", this.placeholderHTML)
- : console.error({ container }),
- { container }
- );
- } catch (error) {
- return (
- console.error(
- { error },
- "Fail to insert the skeleton placeholder components."
- ),
- { error }
- );
- }
- };
-
- remove = ({
- allPlaceholders = document.querySelectorAll(
- `html > body > #__next > div > main > main > div.${this.className}`
- ),
- } = {}) => {
- try {
- return (
- console.assert(allPlaceholders.length === 1),
- allPlaceholders.forEach((placeholder) => placeholder.remove()),
- { allPlaceholders }
- );
- } catch (error) {
- return (
- console.error(
- { error },
- "Fail to remove the skeleton placeholder components."
- ),
- { error }
- );
- }
- };
-}
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Pods.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Pods.js
deleted file mode 100644
index 7b31e48..0000000
--- a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Pods.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-// @ts-check
-
-export default class Pods {
- insert = ({
- container = document.querySelector("main > div:nth-of-type(1)"),
- html = String(),
- } = {}) => {
- try {
- /**
- * https://www.npmjs.com/package/@types/dompurify
- * @type {import('DOMPurify')}
- */
- return (
- container instanceof HTMLDivElement
- ? container.insertAdjacentHTML(
- "afterend",
- globalThis.DOMPurify.sanitize(html)
- )
- : console.error({ container }),
- { container, html }
- );
- } catch (error) {
- return (
- console.error(
- { error },
- "Fail to insert the results of the calculation."
- ),
- { error }
- );
- }
- };
-
- remove = ({
- pods = document.querySelectorAll("main > div.wolfree-pods"),
- } = {}) => {
- try {
- pods.forEach((element) => {
- element.remove();
- });
- return { pods };
- } catch (error) {
- console.error(
- "Fail to remove the results of the previous calculation.",
- error
- );
- return { error };
- }
- };
-}
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/PodsParser.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/PodsParser.js
deleted file mode 100644
index bfb0ab0..0000000
--- a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/PodsParser.js
+++ /dev/null
@@ -1,201 +0,0 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-// @ts-check
-
-export default class PodsParser {
- parse = ({
- input = String(),
- i2d = Boolean(),
- extraPodstates = Array(),
- response = { queryresult: { pods: Array() } },
- } = {}) => {
- try {
- return { html: this.buildHTML({ input, i2d, extraPodstates, response }) };
- } catch (error) {
- return console.error({ error }), { error };
- }
- };
-
- buildHTML = ({
- input = String(),
- i2d = Boolean(),
- extraPodstates = Array(),
- response = { queryresult: { pods: Array() } },
- } = {}) => {
- return `
- <div class="wolfree-pods">
- <div>
- <div>
- <section>
- ${this.parseQueryResult({ response })}
- ${this.buildTechnicalInfo({
- input,
- i2d,
- extraPodstates,
- response,
- })}
- </section>
- </div>
- </div>
- </div>
- `;
- };
-
- parseQueryResult = ({ response = { queryresult: { pods: Array() } } }) => {
- const { queryresult } = response;
- const { pods } = queryresult;
- if (pods) {
- return pods.map(this.parsePod).join("");
- }
- return "";
- };
-
- parsePod = (
- pod = {
- title: String(),
- states: Array(),
- subpods: Array(),
- }
- ) => {
- return `
- <section>
- ${this.buildPodHeader(pod)}
- <div></div>
- ${pod.subpods.map(this.buildSubpod).join("")}
- </section>
- `;
- };
-
- buildPodHeader = (pod = { title: String(), states: Array() }) => {
- return `
- <div>
- <h2>${this.escapeHTML(pod.title)}</h2>
- ${pod.states ? pod.states.map(this.buildSelectElement).join("") : ""}
- </div>
- `;
- };
-
- buildSubpod = (
- subpod = { img: { src: String(), alt: String() }, plaintext: String() }
- ) => {
- return `
- <div><div>
- <img
- src="${this.escapeHTML(subpod.img.src)}"
- alt="${this.escapeHTML(subpod.img.alt)}"
- >
- </div></div>
- <div style="font-family: monospace; overflow: auto;">
- <div><div>${this.buildSubpodDetails(subpod)}</div></div>
- </div>
- `;
- };
-
- buildSubpodDetails = (subpod = { plaintext: String() }) => {
- return `
- <details>
- <summary style="direction: rtl;"></summary>
- <div><pre>${this.escapeHTML(subpod.plaintext)}</pre></div>
- <br>
- </details>
- `;
- };
-
- buildSelectElement = (state = { value: String(), states: Array() }) => {
- if (state.states) {
- return `
- <select name="pod-states">
- <option>${this.escapeHTML(state.value)}</option>
- ${state.states.map(this.buildOption).join("")}
- </select>
- `;
- }
- return "";
- };
-
- buildOption = (state = { name: String() }) => {
- return `
- <option>${this.escapeHTML(state.name)}</option>
- `;
- };
-
- buildTechnicalInfo = ({
- input = String(),
- i2d = Boolean(),
- extraPodstates = Array(),
- response = { queryresult: { pods: Array() } },
- }) => {
- return `
- <section>
- <div><h2>Technical information</h2></div>
- <div></div>
- <div><div><div>${this.buildTechnicalInfoDetails({
- input,
- i2d,
- extraPodstates,
- response,
- })}</div></div></div>
- <div></div>
- </section>
- `;
- };
-
- buildTechnicalInfoDetails = ({
- input = String(),
- i2d = Boolean(),
- extraPodstates = Array(),
- response = { queryresult: { pods: Array() } },
- }) => {
- return `
- <details>
- <div>
- If you have programming knowledge, feel free to explore the technical information provided below:
- </div>
- ${this.buildTextarea({ input, i2d, extraPodstates, response })}
- </details>
- `;
- };
-
- buildTextarea = ({
- input = String(),
- i2d = Boolean(),
- extraPodstates = Array(),
- response = { queryresult: { pods: Array() } },
- }) => {
- return `
- <textarea name="technical-information">${this.escapeHTML(
- JSON.stringify(
- {
- document,
- input,
- i2d,
- extraPodstates,
- response,
- },
- null,
- 4
- )
- )}</textarea>
- `;
- };
-
- escapeHTML = (unsafe = String()) => {
- return unsafe
- .replace(/&/g, "&amp;")
- .replace(/</g, "&lt;")
- .replace(/>/g, "&gt;")
- .replace(/"/g, "&quot;")
- .replace(/'/g, "&#039;");
- };
-}
-
-// Can I escape HTML special chars in JavaScript? - Stack Overflow
-// https://stackoverflow.com/questions/6234773/can-i-escape-html-special-chars-in-javascript
-
-// test case:
-// https://www.wolframalpha.com/input?i=solve+%7By%27%28x%29+%3D+-2+y%2C+y%280%29%3D1%7D+from+0+to+10+using+r+k+f+algorithm
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/PostProcessor.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/PostProcessor.js
deleted file mode 100644
index 1061d8a..0000000
--- a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/PostProcessor.js
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-// @ts-check
-
-import Placeholder from "./Placeholder.js";
-import Entrypoint from "./Entrypoint.js";
-
-export default class PostProcessor {
- process = ({ input = String(), i2d = Boolean() } = {}) => {
- try {
- new Placeholder().remove();
-
- try {
- document
- .querySelectorAll(
- "html > body > div#__next > div > main > main > div.wolfree-pods > div > div > section > section > div > div > div > details > div"
- )
- .forEach((element = new HTMLElement()) =>
- element.setAttribute("contenteditable", "")
- );
- } catch (error) {
- console.error(
- "Fail to make the plaintext in details tags easy to copy.",
- error
- );
- }
-
- try {
- document
- .querySelectorAll(
- "html > body > div#__next > div > main > main > div.wolfree-pods > div > div > section > section > div:is(:first-child) > select"
- )
- .forEach((element = new HTMLSelectElement()) =>
- element.addEventListener(
- "change",
- async (event = new Event(String())) =>
- Entrypoint({
- input,
- i2d,
- extraPodstates: [
- event.target instanceof HTMLSelectElement
- ? event.target.value
- : (console.error({ event }), String()),
- ],
- })
- )
- );
- } catch (error) {
- console.error(
- "Fail to set up the drop-down menu for problem-solving strategies.",
- error
- );
- }
- } catch (error) {
- console.error({ error });
- }
- };
-}
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Preprocessor.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Preprocessor.js
deleted file mode 100644
index 5d88bbc..0000000
--- a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Preprocessor.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-// @ts-check
-
-import Placeholder from "./Placeholder.js";
-import Pods from "./Pods.js";
-
-export default class Preprocessor {
- process = () => {
- try {
- try {
- window.scroll(0, 0);
- } catch (error) {
- console.error({ error }, "Fail to scroll to the top of the webpage.");
- }
-
- new Placeholder().insert();
-
- new Pods().remove();
- } catch (error) {
- console.error({ error });
- }
- };
-}
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Processor.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Processor.js
deleted file mode 100644
index eaf9c2a..0000000
--- a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Processor.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-// @ts-check
-
-import AJAX from "./AJAX.js";
-import PodsParser from "./PodsParser.js";
-import Pods from "./Pods.js";
-
-export default class Processor {
- process = async ({
- input = String(),
- i2d = Boolean(),
- extraPodstates = Array(),
- } = {}) => {
- try {
- const { response } = await new AJAX().ajax({
- input,
- i2d,
- extraPodstates,
- });
-
- try {
- const { html } = new PodsParser().parse({
- input,
- i2d,
- extraPodstates,
- /** @type {any} */
- response,
- });
-
- try {
- new Pods().remove();
- } catch (error) {
- console.error(error);
- }
-
- try {
- new Pods().insert({ html });
- } catch (error) {
- console.error(error);
- }
- } catch (error) {
- console.error(error);
- }
- } catch (error) {
- console.error(error);
- }
- };
-}
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/SearchParams.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/SearchParams.js
deleted file mode 100644
index 828d06f..0000000
--- a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/SearchParams.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-// @ts-check
-
-import AppID from "./AppID.js";
-
-export default class SearchParams {
- constructor({ getAppID = new AppID().getAppID } = {}) {
- this.getAppID = getAppID;
- }
-
- getSearchParams = ({
- input = String(),
- i2d = Boolean(),
- extraPodstates = Array(),
- } = {}) => {
- const appid = this.getAppID();
- return {
- ...(appid && { appid }),
- ...(input && { input }),
- ...(i2d && { i2d }),
- podstate: [
- "Step-by-step solution",
- "Step-by-step",
- "Show all steps",
- ...extraPodstates,
- // Note: extraPodstates must be the last item in the array.
- // Otherwise, the Wolfram Alpha API may ignore the pod states in extraPodstates.
- ],
- output: "json",
- reinterpret: true,
- podtimeout: 30,
- scantimeout: 30,
- parsetimeout: 30,
- totaltimeout: 30,
- formattimeout: 30,
- };
- };
-}
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/onload.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/onload.js
deleted file mode 100644
index 5767c4e..0000000
--- a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/onload.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-// @ts-check
-
-export default addEventListener(
- "load",
- () => (
- setTimeout(
- () =>
- document
- .querySelectorAll(
- "html > body > #__next > div > main > main > div > div > section > form > div > div > input"
- )
- .forEach((input) =>
- input instanceof HTMLInputElement
- ? input.focus()
- : console.error({ input })
- ),
- 1000
- ),
- [
- () =>
- document
- .querySelectorAll(
- 'html > body > #__next > div > main > main > div > div > div > section > section > div:is(:first-child) > ul > li'
- )
- .forEach(
- (li) =>
- li.innerHTML.includes("Step-by-step") &&
- (li instanceof HTMLElement
- ? (li.style.display = "none")
- : console.error({ li }))
- ),
- () =>
- (document.title = document.title.replace(
- "- Wolfram|Alpha",
- "- Free Wolfram|Alpha Step-by-step Solution - Wolfree"
- )),
- ].forEach(
- (callback) => (
- setInterval(callback, 2000), addEventListener("click", callback)
- )
- ),
- scroll(0, 0)
- )
-);
diff --git a/docusaurus/static/instances.json b/docusaurus/static/instances.json
index 89b54df..8e24e7e 100644
--- a/docusaurus/static/instances.json
+++ b/docusaurus/static/instances.json
@@ -39,4 +39,4 @@
"i2p": [],
"loki": []
}
-}
+} \ No newline at end of file
diff --git a/docusaurus/static/n/v1/api/autocomplete/index.html b/docusaurus/static/n/v1/api/autocomplete/index.html
index e69de29..118947e 100644
--- a/docusaurus/static/n/v1/api/autocomplete/index.html
+++ b/docusaurus/static/n/v1/api/autocomplete/index.html
@@ -0,0 +1,5 @@
+{
+ "query": "",
+ "instantMath": null,
+ "results": []
+} \ No newline at end of file
diff --git a/docusaurus/static/n/v1/api/randomizer b/docusaurus/static/n/v1/api/randomizer
index e69de29..f860a92 100644
--- a/docusaurus/static/n/v1/api/randomizer
+++ b/docusaurus/static/n/v1/api/randomizer
@@ -0,0 +1,14 @@
+{
+ "en": {
+ "id": 0,
+ "query": ""
+ },
+ "ja": {
+ "id": 0,
+ "query": ""
+ },
+ "es": {
+ "id": 0,
+ "query": ""
+ }
+} \ No newline at end of file
diff --git a/docusaurus/static/n/v1/api/sourcer/dataSources b/docusaurus/static/n/v1/api/sourcer/dataSources
index e69de29..6b56a3e 100644
--- a/docusaurus/static/n/v1/api/sourcer/dataSources
+++ b/docusaurus/static/n/v1/api/sourcer/dataSources
@@ -0,0 +1,12 @@
+[
+ {
+ "name": "",
+ "display": [
+ {
+ "type": "",
+ "value": ""
+ }
+ ],
+ "url": ""
+ }
+] \ No newline at end of file
diff --git a/docusaurus/static/n/v1/api/sourcer/index.html b/docusaurus/static/n/v1/api/sourcer/index.html
index e69de29..5138297 100644
--- a/docusaurus/static/n/v1/api/sourcer/index.html
+++ b/docusaurus/static/n/v1/api/sourcer/index.html
@@ -0,0 +1,10 @@
+[
+ {
+ "name": "",
+ "value": {
+ "primarySourceItems": [],
+ "title": "",
+ "items": []
+ }
+ }
+] \ No newline at end of file
diff --git a/docusaurus/static/users/me/account b/docusaurus/static/users/me/account
index e69de29..824480a 100644
--- a/docusaurus/static/users/me/account
+++ b/docusaurus/static/users/me/account
@@ -0,0 +1,388 @@
+{
+ "message": "Invalid request",
+ "internalCode": 1,
+ "httpCode": 500,
+ "arguments": {},
+ "cause": null,
+ "stackTrace": [
+ {
+ "methodName": "filter_aroundBody12",
+ "fileName": "AuthFilter.scala",
+ "lineNumber": 47,
+ "className": "com.wolframalpha.common.filters.AuthFilter",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "filter_aroundBody13$advice",
+ "fileName": "AuthFilter.scala",
+ "lineNumber": 49,
+ "className": "com.wolframalpha.common.filters.AuthFilter",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "filter_aroundBody14",
+ "fileName": "AuthFilter.scala",
+ "lineNumber": 1,
+ "className": "com.wolframalpha.common.filters.AuthFilter",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "filter_aroundBody15$advice",
+ "fileName": "AuthFilter.scala",
+ "lineNumber": 28,
+ "className": "com.wolframalpha.common.filters.AuthFilter",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "filter_aroundBody16",
+ "fileName": "AuthFilter.scala",
+ "lineNumber": 1,
+ "className": "com.wolframalpha.common.filters.AuthFilter",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "filter_aroundBody17$advice",
+ "fileName": "AuthFilter.scala",
+ "lineNumber": 25,
+ "className": "com.wolframalpha.common.filters.AuthFilter",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "filter",
+ "fileName": "AuthFilter.scala",
+ "lineNumber": 1,
+ "className": "com.wolframalpha.common.filters.AuthFilter",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "apply",
+ "fileName": "ContainerFilteringStage.java",
+ "lineNumber": 171,
+ "className": "org.glassfish.jersey.server.ContainerFilteringStage",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "apply",
+ "fileName": "ContainerFilteringStage.java",
+ "lineNumber": 74,
+ "className": "org.glassfish.jersey.server.ContainerFilteringStage",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "process",
+ "fileName": "Stages.java",
+ "lineNumber": 197,
+ "className": "org.glassfish.jersey.process.internal.Stages",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "run",
+ "fileName": "ServerRuntime.java",
+ "lineNumber": 250,
+ "className": "org.glassfish.jersey.server.ServerRuntime$1",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "call",
+ "fileName": "Errors.java",
+ "lineNumber": 271,
+ "className": "org.glassfish.jersey.internal.Errors$1",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "call",
+ "fileName": "Errors.java",
+ "lineNumber": 267,
+ "className": "org.glassfish.jersey.internal.Errors$1",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "process",
+ "fileName": "Errors.java",
+ "lineNumber": 315,
+ "className": "org.glassfish.jersey.internal.Errors",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "process",
+ "fileName": "Errors.java",
+ "lineNumber": 297,
+ "className": "org.glassfish.jersey.internal.Errors",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "process",
+ "fileName": "Errors.java",
+ "lineNumber": 267,
+ "className": "org.glassfish.jersey.internal.Errors",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "runInScope",
+ "fileName": "RequestScope.java",
+ "lineNumber": 319,
+ "className": "org.glassfish.jersey.process.internal.RequestScope",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "process",
+ "fileName": "ServerRuntime.java",
+ "lineNumber": 236,
+ "className": "org.glassfish.jersey.server.ServerRuntime",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "handle",
+ "fileName": "ApplicationHandler.java",
+ "lineNumber": 1028,
+ "className": "org.glassfish.jersey.server.ApplicationHandler",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "service",
+ "fileName": "WebComponent.java",
+ "lineNumber": 373,
+ "className": "org.glassfish.jersey.servlet.WebComponent",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "service",
+ "fileName": "ServletContainer.java",
+ "lineNumber": 381,
+ "className": "org.glassfish.jersey.servlet.ServletContainer",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "service",
+ "fileName": "ServletContainer.java",
+ "lineNumber": 344,
+ "className": "org.glassfish.jersey.servlet.ServletContainer",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "service",
+ "fileName": "ServletContainer.java",
+ "lineNumber": 219,
+ "className": "org.glassfish.jersey.servlet.ServletContainer",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "internalDoFilter",
+ "fileName": "ApplicationFilterChain.java",
+ "lineNumber": 303,
+ "className": "org.apache.catalina.core.ApplicationFilterChain",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "doFilter",
+ "fileName": "ApplicationFilterChain.java",
+ "lineNumber": 208,
+ "className": "org.apache.catalina.core.ApplicationFilterChain",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "doFilter",
+ "fileName": "WsFilter.java",
+ "lineNumber": 52,
+ "className": "org.apache.tomcat.websocket.server.WsFilter",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "internalDoFilter",
+ "fileName": "ApplicationFilterChain.java",
+ "lineNumber": 241,
+ "className": "org.apache.catalina.core.ApplicationFilterChain",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "doFilter",
+ "fileName": "ApplicationFilterChain.java",
+ "lineNumber": 208,
+ "className": "org.apache.catalina.core.ApplicationFilterChain",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "doFilter",
+ "fileName": "MonitoringFilter.java",
+ "lineNumber": 232,
+ "className": "net.bull.javamelody.MonitoringFilter",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "doFilter",
+ "fileName": "MonitoringFilter.java",
+ "lineNumber": 209,
+ "className": "net.bull.javamelody.MonitoringFilter",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "internalDoFilter",
+ "fileName": "ApplicationFilterChain.java",
+ "lineNumber": 241,
+ "className": "org.apache.catalina.core.ApplicationFilterChain",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "doFilter",
+ "fileName": "ApplicationFilterChain.java",
+ "lineNumber": 208,
+ "className": "org.apache.catalina.core.ApplicationFilterChain",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "invoke",
+ "fileName": "StandardWrapperValve.java",
+ "lineNumber": 220,
+ "className": "org.apache.catalina.core.StandardWrapperValve",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "invoke",
+ "fileName": "StandardContextValve.java",
+ "lineNumber": 122,
+ "className": "org.apache.catalina.core.StandardContextValve",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "invoke",
+ "fileName": "AuthenticatorBase.java",
+ "lineNumber": 501,
+ "className": "org.apache.catalina.authenticator.AuthenticatorBase",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "invoke",
+ "fileName": "StandardHostValve.java",
+ "lineNumber": 170,
+ "className": "org.apache.catalina.core.StandardHostValve",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "invoke",
+ "fileName": "ErrorReportValve.java",
+ "lineNumber": 98,
+ "className": "org.apache.catalina.valves.ErrorReportValve",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "invoke",
+ "fileName": "AccessLogValve.java",
+ "lineNumber": 950,
+ "className": "org.apache.catalina.valves.AccessLogValve",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "invoke",
+ "fileName": "StandardEngineValve.java",
+ "lineNumber": 116,
+ "className": "org.apache.catalina.core.StandardEngineValve",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "service",
+ "fileName": "CoyoteAdapter.java",
+ "lineNumber": 408,
+ "className": "org.apache.catalina.connector.CoyoteAdapter",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "process",
+ "fileName": "AbstractHttp11Processor.java",
+ "lineNumber": 1040,
+ "className": "org.apache.coyote.http11.AbstractHttp11Processor",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "process",
+ "fileName": "AbstractProtocol.java",
+ "lineNumber": 607,
+ "className": "org.apache.coyote.AbstractProtocol$AbstractConnectionHandler",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "run",
+ "fileName": "AprEndpoint.java",
+ "lineNumber": 2378,
+ "className": "org.apache.tomcat.util.net.AprEndpoint$SocketWithOptionsProcessor",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "runWorker",
+ "fileName": "ThreadPoolExecutor.java",
+ "lineNumber": 1145,
+ "className": "java.util.concurrent.ThreadPoolExecutor",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "run",
+ "fileName": "ThreadPoolExecutor.java",
+ "lineNumber": 615,
+ "className": "java.util.concurrent.ThreadPoolExecutor$Worker",
+ "nativeMethod": false
+ },
+ {
+ "methodName": "run",
+ "fileName": "Thread.java",
+ "lineNumber": 745,
+ "className": "java.lang.Thread",
+ "nativeMethod": false
+ }
+ ],
+ "response": {
+ "context": {
+ "headers": {},
+ "entity": null,
+ "entityType": null,
+ "entityAnnotations": [],
+ "entityStream": {
+ "isCommitted": false,
+ "isClosed": false
+ },
+ "mediaType": null,
+ "requestCookies": {},
+ "acceptableMediaTypes": [
+ {
+ "type": "*",
+ "subtype": "*",
+ "parameters": {},
+ "quality": 1000,
+ "wildcardType": true,
+ "wildcardSubtype": true
+ }
+ ],
+ "acceptableLanguages": [
+ "*"
+ ],
+ "entityClass": null,
+ "allowedMethods": [],
+ "responseCookies": {},
+ "entityTag": null,
+ "links": [],
+ "stringHeaders": {},
+ "length": -1,
+ "language": null,
+ "location": null,
+ "date": null,
+ "lastModified": null,
+ "committed": false
+ },
+ "status": 500,
+ "metadata": {},
+ "mediaType": null,
+ "statusInfo": "INTERNAL_SERVER_ERROR",
+ "allowedMethods": [],
+ "entityTag": null,
+ "links": [],
+ "stringHeaders": {},
+ "entity": null,
+ "length": -1,
+ "language": null,
+ "location": null,
+ "date": null,
+ "lastModified": null,
+ "cookies": {},
+ "headers": {}
+ },
+ "localizedMessage": "Invalid request",
+ "suppressed": []
+} \ No newline at end of file
diff --git a/docusaurus/tsconfig.json b/docusaurus/tsconfig.json
index 50e4989..9685ccf 100644
--- a/docusaurus/tsconfig.json
+++ b/docusaurus/tsconfig.json
@@ -1,18 +1,11 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-// @ts-check
-
{
// This file is not used in compilation. It is here just for a nice editor experience.
"extends": "@tsconfig/docusaurus/tsconfig.json",
"compilerOptions": {
- "baseUrl": ".",
- "strict": true,
- "forceConsistentCasingInFileNames": true
+ "module": "Node16", // Option 'module' must be set to 'Node16' when option 'moduleResolution' is set to 'Node16'.
+ "jsx": "react", // Cannot use JSX unless the '--jsx' flag is provided.
+ "baseUrl": "."
}
}
+
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
diff --git a/docusaurus/wolfree.config.js b/docusaurus/wolfree.config.js
new file mode 100644
index 0000000..d2c4ef3
--- /dev/null
+++ b/docusaurus/wolfree.config.js
@@ -0,0 +1,6 @@
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
+
+// dependents:
+// ../rust/wolfree_patch_libredirect/src/main.rs
+/** @type { { config: { libredirect: false } } } */
+module.exports = { config: { libredirect: false } };