aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--next.config.mjs4
-rw-r--r--package-lock.json139
-rw-r--r--src/app/anime/[id]/[...animeId]/page.jsx2
-rw-r--r--src/app/anime/[id]/page.jsx2
-rw-r--r--src/app/kdrama/[id]/page.jsx4
-rw-r--r--src/app/kdrama/components/popular.jsx2
-rw-r--r--src/app/kdrama/components/recent.jsx2
-rw-r--r--src/app/kdrama/components/search.jsx15
-rw-r--r--src/app/kdrama/styles/search.module.css6
-rw-r--r--src/app/manga/[title]/[id]/[read]/page.jsx4
-rw-r--r--src/app/manga/[title]/[id]/page.jsx2
-rw-r--r--src/app/manga/[title]/page.jsx2
12 files changed, 37 insertions, 147 deletions
diff --git a/next.config.mjs b/next.config.mjs
index e1f50db..e515f21 100644
--- a/next.config.mjs
+++ b/next.config.mjs
@@ -27,6 +27,10 @@ const nextConfig = {
protocol: "https",
hostname: "uploads.mangadex.org",
},
+ {
+ protocol: "https",
+ hostname: "sup-proxy.zephex0-f6c.workers.dev",
+ },
],
},
logging: {
diff --git a/package-lock.json b/package-lock.json
index a990722..d3c42fd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,18 +8,15 @@
"name": "dramalama-next",
"version": "0.1.0",
"dependencies": {
- "@supabase/supabase-js": "^2.40.0",
"@vercel/analytics": "^1.2.2",
"@vercel/postgres": "^0.7.2",
"@vercel/speed-insights": "^1.0.10",
"@vidstack/react": "^1.10.9",
"child_process": "^1.0.2",
- "hls.js": "^1.5.7",
"media-icons": "^1.1.2",
"next": "^14.1.4",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "react-google-recaptcha": "^3.1.0",
"react-icons": "^5.0.1",
"react-player": "^2.15.1",
"react-router-dom": "^6.22.3",
@@ -843,73 +840,6 @@
"integrity": "sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==",
"dev": true
},
- "node_modules/@supabase/functions-js": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.1.5.tgz",
- "integrity": "sha512-BNzC5XhCzzCaggJ8s53DP+WeHHGT/NfTsx2wUSSGKR2/ikLFQTBCDzMvGz/PxYMqRko/LwncQtKXGOYp1PkPaw==",
- "dependencies": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "node_modules/@supabase/gotrue-js": {
- "version": "2.62.2",
- "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.62.2.tgz",
- "integrity": "sha512-AP6e6W9rQXFTEJ7sTTNYQrNf0LCcnt1hUW+RIgUK+Uh3jbWvcIST7wAlYyNZiMlS9+PYyymWQ+Ykz/rOYSO0+A==",
- "dependencies": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "node_modules/@supabase/node-fetch": {
- "version": "2.6.15",
- "resolved": "https://registry.npmjs.org/@supabase/node-fetch/-/node-fetch-2.6.15.tgz",
- "integrity": "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==",
- "dependencies": {
- "whatwg-url": "^5.0.0"
- },
- "engines": {
- "node": "4.x || >=6.0.0"
- }
- },
- "node_modules/@supabase/postgrest-js": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.9.2.tgz",
- "integrity": "sha512-I6yHo8CC9cxhOo6DouDMy9uOfW7hjdsnCxZiaJuIVZm1dBGTFiQPgfMa9zXCamEWzNyWRjZvupAUuX+tqcl5Sw==",
- "dependencies": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "node_modules/@supabase/realtime-js": {
- "version": "2.9.3",
- "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.9.3.tgz",
- "integrity": "sha512-lAp50s2n3FhGJFq+wTSXLNIDPw5Y0Wxrgt44eM5nLSA3jZNUUP3Oq2Ccd1CbZdVntPCWLZvJaU//pAd2NE+QnQ==",
- "dependencies": {
- "@supabase/node-fetch": "^2.6.14",
- "@types/phoenix": "^1.5.4",
- "@types/ws": "^8.5.10",
- "ws": "^8.14.2"
- }
- },
- "node_modules/@supabase/storage-js": {
- "version": "2.5.5",
- "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.5.5.tgz",
- "integrity": "sha512-OpLoDRjFwClwc2cjTJZG8XviTiQH4Ik8sCiMK5v7et0MDu2QlXjCAW3ljxJB5+z/KazdMOTnySi+hysxWUPu3w==",
- "dependencies": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "node_modules/@supabase/supabase-js": {
- "version": "2.40.0",
- "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.40.0.tgz",
- "integrity": "sha512-XF8OrsA13DYBL074sHH4M0NhXJCWhQ0R5JbVeVUytZ0coPMS9krRdzxl+0c4z4LLjqbm/Wdz0UYlTYM9MgnDag==",
- "dependencies": {
- "@supabase/functions-js": "2.1.5",
- "@supabase/gotrue-js": "2.62.2",
- "@supabase/node-fetch": "2.6.15",
- "@supabase/postgrest-js": "1.9.2",
- "@supabase/realtime-js": "2.9.3",
- "@supabase/storage-js": "2.5.5"
- }
- },
"node_modules/@swc/helpers": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz",
@@ -942,11 +872,6 @@
"pg-types": "^2.2.0"
}
},
- "node_modules/@types/phoenix": {
- "version": "1.6.4",
- "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.4.tgz",
- "integrity": "sha512-B34A7uot1Cv0XtaHRYDATltAdKx0BvVKNgYNqE4WjtPUa4VQJM7kxeXcVKaH+KS+kCmZ+6w+QaUdcljiheiBJA=="
- },
"node_modules/@types/prop-types": {
"version": "15.7.11",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz",
@@ -967,14 +892,6 @@
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz",
"integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A=="
},
- "node_modules/@types/ws": {
- "version": "8.5.10",
- "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz",
- "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==",
- "dependencies": {
- "@types/node": "*"
- }
- },
"node_modules/@typescript-eslint/parser": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz",
@@ -2836,19 +2753,6 @@
"node": ">= 0.4"
}
},
- "node_modules/hls.js": {
- "version": "1.5.7",
- "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.5.7.tgz",
- "integrity": "sha512-Hnyf7ojTBtXHeOW1/t6wCBJSiK1WpoKF9yg7juxldDx8u3iswrkPt2wbOA/1NiwU4j27DSIVoIEJRAhcdMef/A=="
- },
- "node_modules/hoist-non-react-statics": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
- "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
- "dependencies": {
- "react-is": "^16.7.0"
- }
- },
"node_modules/ignore": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
@@ -4030,18 +3934,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/react-async-script": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/react-async-script/-/react-async-script-1.2.0.tgz",
- "integrity": "sha512-bCpkbm9JiAuMGhkqoAiC0lLkb40DJ0HOEJIku+9JDjxX3Rcs+ztEOG13wbrOskt3n2DTrjshhaQ/iay+SnGg5Q==",
- "dependencies": {
- "hoist-non-react-statics": "^3.3.0",
- "prop-types": "^15.5.0"
- },
- "peerDependencies": {
- "react": ">=16.4.1"
- }
- },
"node_modules/react-dom": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
@@ -4059,18 +3951,6 @@
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz",
"integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ=="
},
- "node_modules/react-google-recaptcha": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/react-google-recaptcha/-/react-google-recaptcha-3.1.0.tgz",
- "integrity": "sha512-cYW2/DWas8nEKZGD7SCu9BSuVz8iOcOLHChHyi7upUuVhkpkhYG/6N3KDiTQ3XAiZ2UAZkfvYKMfAHOzBOcGEg==",
- "dependencies": {
- "prop-types": "^15.5.0",
- "react-async-script": "^1.2.0"
- },
- "peerDependencies": {
- "react": ">=16.4.1"
- }
- },
"node_modules/react-icons": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.0.1.tgz",
@@ -4765,11 +4645,6 @@
"node": ">=8.0"
}
},
- "node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
- },
"node_modules/ts-api-utils": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
@@ -4951,20 +4826,6 @@
"node": ">=6.14.2"
}
},
- "node_modules/webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
- },
- "node_modules/whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
diff --git a/src/app/anime/[id]/[...animeId]/page.jsx b/src/app/anime/[id]/[...animeId]/page.jsx
index 950f618..f5505e5 100644
--- a/src/app/anime/[id]/[...animeId]/page.jsx
+++ b/src/app/anime/[id]/[...animeId]/page.jsx
@@ -9,6 +9,8 @@ import styles from "./video.module.css";
import { redirect } from "next/navigation";
import Link from "next/link";
+export const runtime = 'edge';
+
export default async function Video({ params }) {
let link;
const id = params.animeId[0];
diff --git a/src/app/anime/[id]/page.jsx b/src/app/anime/[id]/page.jsx
index b99da42..598c8a7 100644
--- a/src/app/anime/[id]/page.jsx
+++ b/src/app/anime/[id]/page.jsx
@@ -2,6 +2,8 @@ import styles from "./info.module.css";
import Image from "next/image";
import Link from "next/link";
+export const runtime = 'edge';
+
export default async function AnimeInfo({ params }) {
let animeID = params.id;
diff --git a/src/app/kdrama/[id]/page.jsx b/src/app/kdrama/[id]/page.jsx
index baaf24e..8f0fa9c 100644
--- a/src/app/kdrama/[id]/page.jsx
+++ b/src/app/kdrama/[id]/page.jsx
@@ -3,6 +3,8 @@ import Image from "next/image";
import EpisodesButtons from "./buttons";
import PreFetchVideoLinks from "../components/cacher";
+export const runtime = "edge";
+
export default async function DramaInfo({ params }) {
const id = decodeURIComponent(params.id);
const info = await getDramaInfo(id);
@@ -16,7 +18,7 @@ export default async function DramaInfo({ params }) {
<div className={styles.TitleContainer}>
<p>{info.title}</p>
<Image
- src={info.image}
+ src={`https://sup-proxy.zephex0-f6c.workers.dev/api-content?url=${info.image}`}
width={160}
height={240}
alt="Drama Poster"
diff --git a/src/app/kdrama/components/popular.jsx b/src/app/kdrama/components/popular.jsx
index d9126ec..4b8b293 100644
--- a/src/app/kdrama/components/popular.jsx
+++ b/src/app/kdrama/components/popular.jsx
@@ -19,7 +19,7 @@ export default async function PopularDramas() {
>
<div className={styles.AnimeEntry}>
<Image
- src={item.image}
+ src={`https://sup-proxy.zephex0-f6c.workers.dev/api-content?url=${item.image}`}
width={160}
height={240}
alt="Drama Poster"
diff --git a/src/app/kdrama/components/recent.jsx b/src/app/kdrama/components/recent.jsx
index 759e179..0b6b7f6 100644
--- a/src/app/kdrama/components/recent.jsx
+++ b/src/app/kdrama/components/recent.jsx
@@ -19,7 +19,7 @@ export default async function RecentDramas() {
>
<div className={styles.AnimeEntry}>
<Image
- src={item.image}
+ src={`https://sup-proxy.zephex0-f6c.workers.dev/api-content?url=${item.image}`}
width={160}
height={240}
alt="Drama Poster"
diff --git a/src/app/kdrama/components/search.jsx b/src/app/kdrama/components/search.jsx
index 4c9d00c..f9ba174 100644
--- a/src/app/kdrama/components/search.jsx
+++ b/src/app/kdrama/components/search.jsx
@@ -10,11 +10,14 @@ import Link from "next/link";
export default function DramaSearch() {
const [title, setTitle] = useState("");
const [infoTitle, setInfoTitle] = useState(null);
+ const [loadingText, setLoadingText] = useState(null);
- async function getSearchResults(title) {
+ const handleSearch = async (title) => {
+ setLoadingText(true);
const data = await FetchSearchTitle(title);
+ setLoadingText(false);
setInfoTitle(data);
- }
+ };
return (
<div className={styles.SearchContainer}>
@@ -25,12 +28,16 @@ export default function DramaSearch() {
onChange={(event) => setTitle(event.target.value)}
onKeyDown={async (e) => {
if ((e.key === "Enter" || e.code === 13) && title) {
- await getSearchResults(e.target.value);
+ await handleSearch(e.target.value);
}
}}
></input>
</div>
+ {loadingText && (
+ <p className={styles.LoadingText}>Wait a moment...</p>
+ )}
+
<div className={styles.SearchResults}>
{infoTitle &&
infoTitle.results.map((item, index) => (
@@ -42,7 +49,7 @@ export default function DramaSearch() {
<div className={styles.SearchEntry}>
<p>{item.title}</p>
<Image
- src={item.image}
+ src={`https://sup-proxy.zephex0-f6c.workers.dev/api-content?url=${item.image}`}
width={110}
height={180}
alt="Drama Poster"
diff --git a/src/app/kdrama/styles/search.module.css b/src/app/kdrama/styles/search.module.css
index 5f61c23..fcf75b0 100644
--- a/src/app/kdrama/styles/search.module.css
+++ b/src/app/kdrama/styles/search.module.css
@@ -2,6 +2,12 @@
margin: 20px 0px -20px 0px;
}
+.LoadingText {
+ color: white;
+ font-family: "Atkinson Hyperlegible";
+ text-align: center;
+}
+
.Search {
padding: 5px;
background-color: #121212;
diff --git a/src/app/manga/[title]/[id]/[read]/page.jsx b/src/app/manga/[title]/[id]/[read]/page.jsx
index eaaa94c..fa338ac 100644
--- a/src/app/manga/[title]/[id]/[read]/page.jsx
+++ b/src/app/manga/[title]/[id]/[read]/page.jsx
@@ -3,6 +3,8 @@ import Image from "next/image";
import DownloadManga from "./download";
import CurrentReading from "./currentReading";
+export const runtime = "edge";
+
export default async function Read({ params }) {
const chapterId = params.read;
const data = await getPages(chapterId);
@@ -32,7 +34,7 @@ export default async function Read({ params }) {
images.map((item, index) => (
<div className={styles.Image} key={index}>
<Image
- src={`https://image-proxy-4xuu.onrender.com/image-proxy?url=${item}`}
+ src={`https://sup-proxy.zephex0-f6c.workers.dev/api-content?url=${item}`}
key={index}
alt="Pages"
width={800}
diff --git a/src/app/manga/[title]/[id]/page.jsx b/src/app/manga/[title]/[id]/page.jsx
index 1e4a26f..2d50252 100644
--- a/src/app/manga/[title]/[id]/page.jsx
+++ b/src/app/manga/[title]/[id]/page.jsx
@@ -5,6 +5,8 @@ import { redirect } from "next/navigation";
import { FaStar } from "react-icons/fa";
import CurrentReading from "./[read]/currentReading";
+export const runtime = 'edge';
+
export default async function MangaInfo({ params }) {
const id = params.id;
const data = await getMangaInfo(id);
diff --git a/src/app/manga/[title]/page.jsx b/src/app/manga/[title]/page.jsx
index 7788a59..e586d09 100644
--- a/src/app/manga/[title]/page.jsx
+++ b/src/app/manga/[title]/page.jsx
@@ -2,6 +2,8 @@ import styles from "./title.module.css";
import Image from "next/image";
import Link from "next/link";
+export const runtime = 'edge';
+
export default async function MangaInfo({ params }) {
const title = params.title;
const data = await GetSearchedAnime(title);