diff --git a/package-lock.json b/package-lock.json
index 01d33cf..109fad9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -17,6 +17,8 @@
"astro": "^5.5.4",
"feed": "^4.2.2",
"ioredis": "^5.6.0",
+ "p-throttle": "^7.0.0",
+ "redis-modules-sdk": "^1.4.0",
"tailwindcss": "^3.4.1"
}
},
@@ -4373,6 +4375,17 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/p-throttle": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/p-throttle/-/p-throttle-7.0.0.tgz",
+ "integrity": "sha512-aio0v+S0QVkH1O+9x4dHtD4dgCExACcL+3EtNaGqC01GBudS9ijMuUsmN8OVScyV4OOp0jqdLShZFuSlbL/AsA==",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/p-timeout": {
"version": "6.1.4",
"resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz",
@@ -4737,6 +4750,37 @@
"node": ">=4"
}
},
+ "node_modules/redis-modules-sdk": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/redis-modules-sdk/-/redis-modules-sdk-1.4.0.tgz",
+ "integrity": "sha512-HYCr3ThtyoMrR9MUGmJblPU5aua0G4sanIZHK5wz/QwhVACe3BBgIZpHeymidBaukiuC0uzKla9xJ8exRffjnA==",
+ "dependencies": {
+ "ioredis": "5.2.3"
+ }
+ },
+ "node_modules/redis-modules-sdk/node_modules/ioredis": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.2.3.tgz",
+ "integrity": "sha512-gQNcMF23/NpvjCaa1b5YycUyQJ9rBNH2xP94LWinNpodMWVUPP5Ai/xXANn/SM7gfIvI62B5CCvZxhg5pOgyMw==",
+ "dependencies": {
+ "@ioredis/commands": "^1.1.1",
+ "cluster-key-slot": "^1.1.0",
+ "debug": "^4.3.4",
+ "denque": "^2.0.1",
+ "lodash.defaults": "^4.2.0",
+ "lodash.isarguments": "^3.1.0",
+ "redis-errors": "^1.2.0",
+ "redis-parser": "^3.0.0",
+ "standard-as-callback": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=12.22.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/ioredis"
+ }
+ },
"node_modules/redis-parser": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz",
diff --git a/package.json b/package.json
index 15ad66e..1350193 100644
--- a/package.json
+++ b/package.json
@@ -20,6 +20,8 @@
"astro": "^5.5.4",
"feed": "^4.2.2",
"ioredis": "^5.6.0",
+ "p-throttle": "^7.0.0",
+ "redis-modules-sdk": "^1.4.0",
"tailwindcss": "^3.4.1"
}
}
diff --git a/src/components/SlugInput.astro b/src/components/SlugInput.astro
index 43079a1..06ba25c 100644
--- a/src/components/SlugInput.astro
+++ b/src/components/SlugInput.astro
@@ -1,25 +1,17 @@
---
-import { getFeedMapping } from '../lib/db';
+import { getFeedMapping } from "../lib/db";
interface Props {
currentSlugs?: string[];
}
const { currentSlugs = [] } = Astro.props;
-import { availableLanguages, languageMap } from '../lib/api';
+import { availableLanguages, languageMap } from "../lib/api";
-const languages = [
- { value: 'en', label: 'English' },
- { value: 'ja', label: 'Japanese' },
- { value: 'ko', label: 'Korean' },
- { value: 'zh', label: 'Chinese' },
- { value: 'fr', label: 'French' },
- { value: 'es', label: 'Spanish' },
- { value: 'it', label: 'Italian' },
- { value: 'de', label: 'German' },
- { value: 'tr', label: 'Turkish' },
- { value: 'pl', label: 'Polish' },
-];
+const languages = Object.entries(languageMap).map(([value, label]) => ({
+ value,
+ label,
+}));
---
@@ -37,9 +29,11 @@ const languages = [
id="lang-select"
class="px-3 sm:px-4 py-2 bg-primary rounded-lg border border-hover/30 focus:outline-none focus:border-accent/50 transition-colors text-sm sm:text-base"
>
- {languages.map(lang => (
-
- ))}
+ {
+ languages.map((lang) => (
+
+ ))
+ }
@@ -54,8 +48,16 @@ const languages = [
id="import-feed"
class="px-4 py-2 bg-secondary hover:bg-hover transition-colors rounded-lg text-sm sm:text-base flex items-center gap-2"
>
-