Compare commits

..

No commits in common. "8ca4a302f9c05e4438c4ae0768aa983efcadfba1" and "3e98aeccba0b5ed275bd282ba627a80f6a2ca5f7" have entirely different histories.

5 changed files with 878 additions and 516 deletions

View file

@ -1,17 +1,14 @@
import { defineConfig } from "astro/config";
import vercel from "@astrojs/vercel";
import tailwind from "@astrojs/tailwind";
import netlify from "@astrojs/netlify";
export default defineConfig({
output: "server",
adapter: vercel(),
image: {
remotePatterns: [{ protocol: "https" }],
},
integrations: [tailwind()],
vite: {
define: {
'process.env.PRIMARY_REDIS_URL': JSON.stringify(process.env.PRIMARY_REDIS_URL || process.env.REDIS_URL),
@ -19,7 +16,5 @@ export default defineConfig({
'process.env.REPLICA_REDIS_URL_2': JSON.stringify(process.env.REPLICA_REDIS_URL_2),
'process.env.REPLICA_REDIS_URL_3': JSON.stringify(process.env.REPLICA_REDIS_URL_3)
}
},
adapter: netlify()
}
});

195
package-lock.json generated
View file

@ -1,18 +1,19 @@
{
"name": "@ldez/manga",
"version": "1.0.1",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@ldez/manga",
"version": "1.0.1",
"version": "1.0.0",
"dependencies": {
"@astrojs/netlify": "^6.2.3",
"@astrojs/rss": "^4.0.11",
"@astrojs/tailwind": "^6.0.1",
"@astrojs/vercel": "^8.1.3",
"@floating-ui/dom": "^1.6.13",
"@types/node": "^22.13.11",
"@vercel/analytics": "^1.5.0",
"astro": "^5.5.4",
"feed": "^4.2.2",
"ioredis": "^5.6.0",
@ -70,24 +71,6 @@
"vfile": "^6.0.3"
}
},
"node_modules/@astrojs/netlify": {
"version": "6.2.3",
"resolved": "https://registry.npmjs.org/@astrojs/netlify/-/netlify-6.2.3.tgz",
"integrity": "sha512-QWSvoECD1ctC8N376TICRrc6F6XyyRiW3L9G1Z37B6o5BmMBXlkwsk9cMboDLbLqhcxR3RHBHXJYZ4rgjQDvQA==",
"dependencies": {
"@astrojs/internal-helpers": "0.6.1",
"@astrojs/underscore-redirects": "0.6.0",
"@netlify/blobs": "^8.1.1",
"@netlify/functions": "^3.0.0",
"@vercel/nft": "^0.29.2",
"esbuild": "^0.25.0",
"tinyglobby": "^0.2.12",
"vite": "^6.2.0"
},
"peerDependencies": {
"astro": "^5.3.0"
}
},
"node_modules/@astrojs/prism": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.2.0.tgz",
@ -139,10 +122,22 @@
"node": "^18.17.1 || ^20.3.0 || >=22.0.0"
}
},
"node_modules/@astrojs/underscore-redirects": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/@astrojs/underscore-redirects/-/underscore-redirects-0.6.0.tgz",
"integrity": "sha512-dnJgFpaM955IFNIkEEmMaaIdWXRdeZs1ID6mlGBqdjh6NiCXfKmOdq7L4fd9Dd/tr18fkLrOJ25IUJSxRAEhjQ=="
"node_modules/@astrojs/vercel": {
"version": "8.1.3",
"resolved": "https://registry.npmjs.org/@astrojs/vercel/-/vercel-8.1.3.tgz",
"integrity": "sha512-mHO28cc0FQbA6ncFteW5Hqf2l0gSthPNF8/dpM1sQAOD92Mbyi93/4EhTYj07Xhi3t37FU4tPtzyQoCAn4P4Kg==",
"dependencies": {
"@astrojs/internal-helpers": "0.6.1",
"@vercel/analytics": "^1.5.0",
"@vercel/edge": "^1.2.1",
"@vercel/nft": "^0.29.2",
"@vercel/routing-utils": "^5.0.4",
"esbuild": "^0.25.0",
"tinyglobby": "^0.2.12"
},
"peerDependencies": {
"astro": "^5.0.0"
}
},
"node_modules/@babel/helper-string-parser": {
"version": "7.25.9",
@ -1066,33 +1061,6 @@
"node": ">=18"
}
},
"node_modules/@netlify/blobs": {
"version": "8.1.2",
"resolved": "https://registry.npmjs.org/@netlify/blobs/-/blobs-8.1.2.tgz",
"integrity": "sha512-coQlePCMpgyMxfeCvxa6qPHlahECin0lSRtg8UOn2rzXRWdvJk+yUhhUstW4HLa9ynvAXFAGTEZoVt4BTESNbw==",
"engines": {
"node": "^14.16.0 || >=16.0.0"
}
},
"node_modules/@netlify/functions": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-3.0.4.tgz",
"integrity": "sha512-Ox8+ABI+nsLK+c4/oC5dpquXuEIjzfTlJrdQKgQijCsDQoje7inXFAtKDLvvaGvuvE+PVpMLwQcIUL6P9Ob1hQ==",
"dependencies": {
"@netlify/serverless-functions-api": "1.36.0"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@netlify/serverless-functions-api": {
"version": "1.36.0",
"resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.36.0.tgz",
"integrity": "sha512-z6okREyK8in0486a22Oro0k+YsuyEjDXJt46FpgeOgXqKJ9ElM8QPll0iuLBkpbH33ENiNbIPLd1cuClRQnhiw==",
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@ -1518,6 +1486,48 @@
"crypto-js": "^4.2.0"
}
},
"node_modules/@vercel/analytics": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.5.0.tgz",
"integrity": "sha512-MYsBzfPki4gthY5HnYN7jgInhAZ7Ac1cYDoRWFomwGHWEX7odTEzbtg9kf/QSo7XEsEAqlQugA6gJ2WS2DEa3g==",
"peerDependencies": {
"@remix-run/react": "^2",
"@sveltejs/kit": "^1 || ^2",
"next": ">= 13",
"react": "^18 || ^19 || ^19.0.0-rc",
"svelte": ">= 4",
"vue": "^3",
"vue-router": "^4"
},
"peerDependenciesMeta": {
"@remix-run/react": {
"optional": true
},
"@sveltejs/kit": {
"optional": true
},
"next": {
"optional": true
},
"react": {
"optional": true
},
"svelte": {
"optional": true
},
"vue": {
"optional": true
},
"vue-router": {
"optional": true
}
}
},
"node_modules/@vercel/edge": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@vercel/edge/-/edge-1.2.1.tgz",
"integrity": "sha512-1++yncEyIAi68D3UEOlytYb1IUcIulMWdoSzX2h9LuSeeyR7JtaIgR8DcTQ6+DmYOQn+5MCh6LY+UmK6QBByNA=="
},
"node_modules/@vercel/nft": {
"version": "0.29.2",
"resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.29.2.tgz",
@ -1543,6 +1553,18 @@
"node": ">=18"
}
},
"node_modules/@vercel/routing-utils": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/@vercel/routing-utils/-/routing-utils-5.0.4.tgz",
"integrity": "sha512-4ke67zkXVi2fRZdoYckABcsSkRC9CnrdadOGxoS/Bk22+ObHjGQWvUHExRSXh339anwu9YY7ZacNSGH4gUnTQA==",
"dependencies": {
"path-to-regexp": "6.1.0",
"path-to-regexp-updated": "npm:path-to-regexp@6.3.0"
},
"optionalDependencies": {
"ajv": "^6.12.3"
}
},
"node_modules/abbrev": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.0.tgz",
@ -1578,6 +1600,22 @@
"node": ">= 14"
}
},
"node_modules/ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"optional": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/ansi-align": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
@ -2304,9 +2342,9 @@
"integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w=="
},
"node_modules/consola": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz",
"integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==",
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/consola/-/consola-3.4.0.tgz",
"integrity": "sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==",
"engines": {
"node": "^14.18.0 || >=16.10.0"
}
@ -2588,6 +2626,12 @@
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"optional": true
},
"node_modules/fast-glob": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
@ -2603,6 +2647,12 @@
"node": ">=8.6.0"
}
},
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
"optional": true
},
"node_modules/fast-xml-parser": {
"version": "4.5.1",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.1.tgz",
@ -3213,6 +3263,12 @@
"js-yaml": "bin/js-yaml.js"
}
},
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"optional": true
},
"node_modules/kleur": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
@ -4407,6 +4463,17 @@
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/path-to-regexp": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.1.0.tgz",
"integrity": "sha512-h9DqehX3zZZDCEm+xbfU0ZmwCGFCAAraPJWMXJ4+v32NjZJilVg3k1TcKsRgIb8IQ/izZSaydDc1OhJCZvs2Dw=="
},
"node_modules/path-to-regexp-updated": {
"name": "path-to-regexp",
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
"integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ=="
},
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@ -4612,6 +4679,15 @@
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/punycode": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
"integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
"optional": true,
"engines": {
"node": ">=6"
}
},
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@ -5692,6 +5768,15 @@
"browserslist": ">= 4.21.0"
}
},
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"optional": true,
"dependencies": {
"punycode": "^2.1.0"
}
},
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",

View file

@ -1,7 +1,7 @@
{
"name": "@ldez/manga",
"type": "module",
"version": "1.0.1",
"version": "1.0.0",
"private": true,
"scripts": {
"dev": "astro dev",
@ -11,11 +11,12 @@
"astro": "astro"
},
"dependencies": {
"@astrojs/netlify": "^6.2.3",
"@astrojs/rss": "^4.0.11",
"@astrojs/tailwind": "^6.0.1",
"@astrojs/vercel": "^8.1.3",
"@floating-ui/dom": "^1.6.13",
"@types/node": "^22.13.11",
"@vercel/analytics": "^1.5.0",
"astro": "^5.5.4",
"feed": "^4.2.2",
"ioredis": "^5.6.0",

View file

@ -291,7 +291,7 @@ export async function getChaptersForSlugs(
lang: string = 'en'
): Promise<ChapterDetail[]> {
console.log(`Fetching chapters for ${slugs.length} comics`);
const redis = await getRedisClient();
const { client: redis } = await getRedisClient();
const uniqueSlugs = [...new Set(slugs)];
const pipeline = redis.pipeline();

File diff suppressed because it is too large Load diff