(() => {
return isPackageSelected(props.result.package.name)
})
-function formatScore(value?: number): string {
- if (value === undefined || value === 0) return '-'
- return Math.round(value * 100).toString()
-}
-
function isColumnVisible(id: string): boolean {
return props.columns.find(c => c.id === id)?.visible ?? false
}
@@ -163,38 +157,6 @@ const compactNumberFormatter = useCompactNumberFormatter()
-
-
- |
- {{ formatScore(score?.detail?.quality) }}
- |
-
-
-
- {{ formatScore(score?.detail?.popularity) }}
- |
-
-
-
- {{ formatScore(score?.detail?.maintenance) }}
- |
-
-
-
- {{ formatScore(score?.final) }}
- |
-
diff --git a/app/composables/npm/search-utils.ts b/app/composables/npm/search-utils.ts
index c9b481601..290feaea4 100644
--- a/app/composables/npm/search-utils.ts
+++ b/app/composables/npm/search-utils.ts
@@ -11,7 +11,6 @@ export function metaToSearchResult(meta: PackageMetaResponse): NpmSearchResult {
author: meta.author,
maintainers: meta.maintainers,
},
- score: { final: 0, detail: { quality: 0, popularity: 0, maintenance: 0 } },
searchScore: 0,
downloads: meta.weeklyDownloads !== undefined ? { weekly: meta.weeklyDownloads } : undefined,
updated: meta.date,
diff --git a/app/composables/npm/useAlgoliaSearch.ts b/app/composables/npm/useAlgoliaSearch.ts
index 5f8d08ab1..a6ba645e1 100644
--- a/app/composables/npm/useAlgoliaSearch.ts
+++ b/app/composables/npm/useAlgoliaSearch.ts
@@ -91,14 +91,6 @@ function hitToSearchResult(hit: AlgoliaHit): NpmSearchResult {
}))
: [],
},
- score: {
- final: 0,
- detail: {
- quality: hit.popular ? 1 : 0,
- popularity: hit.downloadsRatio,
- maintenance: 0,
- },
- },
searchScore: 0,
downloads: {
weekly: Math.round(hit.downloadsLast30Days / 4.3),
diff --git a/app/composables/useStructuredFilters.ts b/app/composables/useStructuredFilters.ts
index 7b0af8cc0..558368e3a 100644
--- a/app/composables/useStructuredFilters.ts
+++ b/app/composables/useStructuredFilters.ts
@@ -332,18 +332,6 @@ export function useStructuredFilters(options: UseStructuredFiltersOptions) {
case 'name':
diff = a.package.name.localeCompare(b.package.name)
break
- case 'quality':
- diff = (a.score?.detail?.quality ?? 0) - (b.score?.detail?.quality ?? 0)
- break
- case 'popularity':
- diff = (a.score?.detail?.popularity ?? 0) - (b.score?.detail?.popularity ?? 0)
- break
- case 'maintenance':
- diff = (a.score?.detail?.maintenance ?? 0) - (b.score?.detail?.maintenance ?? 0)
- break
- case 'score':
- diff = (a.score?.final ?? 0) - (b.score?.final ?? 0)
- break
case 'relevance':
// Relevance preserves server order (already sorted by search relevance)
diff = 0
diff --git a/app/pages/search.vue b/app/pages/search.vue
index b306359ca..a19565977 100644
--- a/app/pages/search.vue
+++ b/app/pages/search.vue
@@ -134,10 +134,6 @@ const ALL_SORT_KEYS: SortKey[] = [
'downloads-year',
'updated',
'name',
- 'quality',
- 'popularity',
- 'maintenance',
- 'score',
]
// Disable sort keys the current provider can't meaningfully sort by
diff --git a/docs/content/2.guide/6.badges.md b/docs/content/2.guide/6.badges.md
index 50ec38c5c..ab7cfb4da 100644
--- a/docs/content/2.guide/6.badges.md
+++ b/docs/content/2.guide/6.badges.md
@@ -27,10 +27,6 @@ npmx.dev offers many different SVG badges with stats about any package via its A
- **types**: Indicates if TypeScript types are included. :img{src="https://img.shields.io/badge/%233b82f6-3b82f6" class="inline align-middle h-5 w-14"} / :img{src="https://img.shields.io/badge/%2364748b-64748b" class="inline align-middle h-5 w-14"}
- **maintainers**: Displays the total count of package maintainers. :img{src="https://img.shields.io/badge/%2306b6d4-06b6d4" class="inline align-middle h-5 w-14"}
- **deprecated**: Shows if the package is active or deprecated. :img{src="https://img.shields.io/badge/%2322c55e-22c55e" class="inline align-middle h-5 w-14"} / :img{src="https://img.shields.io/badge/%23ef4444-ef4444" class="inline align-middle h-5 w-14"}
-- **quality**: NPMS.io quality score based on linting and tests. :img{src="https://img.shields.io/badge/%23a855f7-a855f7" class="inline align-middle h-5 w-14"}
-- **popularity**: NPMS.io popularity score based on downloads and stars. :img{src="https://img.shields.io/badge/%2306b6d4-06b6d4" class="inline align-middle h-5 w-14"}
-- **maintenance**: NPMS.io maintenance score based on activity. :img{src="https://img.shields.io/badge/%23eab308-eab308" class="inline align-middle h-5 w-14"}
-- **score**: The overall NPMS.io combined score. :img{src="https://img.shields.io/badge/%233b82f6-3b82f6" class="inline align-middle h-5 w-14"}
- **name**: Simple badge displaying the package name. :img{src="https://img.shields.io/badge/%2364748b-64748b" class="inline align-middle h-5 w-14"}
## Examples
@@ -55,10 +51,6 @@ npmx.dev offers many different SVG badges with stats about any package via its A
# Specific Version
[](https://npmx.dev/package/react)
-
-# Quality Score
-
-[](https://npmx.dev/package/pinia)
```
## Customization Parameters
diff --git a/docs/shared/utils/badges.ts b/docs/shared/utils/badges.ts
index c9152c0fa..2b7d42551 100644
--- a/docs/shared/utils/badges.ts
+++ b/docs/shared/utils/badges.ts
@@ -15,10 +15,6 @@ export const BADGE_TYPES = Object.freeze([
'types',
'maintainers',
'deprecated',
- 'quality',
- 'popularity',
- 'maintenance',
- 'score',
'name',
] as const)
diff --git a/i18n/locales/ar.json b/i18n/locales/ar.json
index c046ade81..ad42f2967 100644
--- a/i18n/locales/ar.json
+++ b/i18n/locales/ar.json
@@ -76,6 +76,10 @@
"links": "روابط",
"tap_to_search": "اضغط للبحث"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "الإعدادات",
"tagline": "تخصيص تجربتك على npmx",
@@ -122,6 +126,7 @@
"edit_on_github": "تعديل على GitHub",
"view_guide": "دليل الترجمة"
},
+ "error": {},
"common": {
"loading": "جارٍ التحميل…",
"loading_more": "جارٍ تحميل المزيد…",
@@ -149,6 +154,9 @@
"github": "عرض على GitHub"
}
},
+ "profile": {
+ "invite": {}
+ },
"package": {
"not_found": "لم يتم العثور على الحزمة",
"not_found_message": "تعذّر العثور على الحزمة.",
@@ -161,6 +169,7 @@
"version": "تم إهمال هذا الإصدار.",
"no_reason": "لم يتم تقديم سبب"
},
+ "size_increase": {},
"replacement": {
"title": "قد لا تحتاج إلى هذه التبعية.",
"native": "يمكن استبدالها بـ {replacement}، المتوفرة منذ Node {nodeVersion}.",
@@ -307,7 +316,8 @@
"filter_help": "مساعدة فلتر نطاق semver",
"filter_tooltip": "فلترة الإصدارات باستخدام {link}. مثلاً ^3.0.0 يعرض كل إصدارات 3.x.",
"filter_tooltip_link": "نطاق semver",
- "no_matches": "لا توجد إصدارات تطابق هذا النطاق"
+ "no_matches": "لا توجد إصدارات تطابق هذا النطاق",
+ "copy_alt": {}
},
"dependencies": {
"title": "التبعيات ({count})",
@@ -367,7 +377,8 @@
"downloads": "التنزيلات",
"likes": "الإعجابات",
"contributors": "المساهمون"
- }
+ },
+ "copy_alt": {}
},
"downloads": {
"title": "التنزيلات الأسبوعية",
@@ -460,7 +471,8 @@
"b": "{size} بايت",
"kb": "{size} كيلوبايت",
"mb": "{size} ميجابايت"
- }
+ },
+ "download": {}
},
"connector": {
"modal": {
@@ -736,11 +748,7 @@
"downloads_month": "التنزيلات/الشهر",
"downloads_year": "التنزيلات/السنة",
"published": "آخر نشر",
- "name": "الاسم",
- "quality": "الجودة",
- "popularity": "الشعبية",
- "maintenance": "الصيانة",
- "score": "التنقيط"
+ "name": "الاسم"
},
"columns": {
"title": "الأعمدة",
@@ -754,10 +762,6 @@
"published": "آخر نشر",
"maintainers": "المشرفون",
"keywords": "الكلمات المفتاحية",
- "quality_score": "درجة الجودة",
- "popularity_score": "درجة الشعبية",
- "maintenance_score": "درجة الصيانة",
- "combined_score": "الدرجة المجمعة",
"security": "الأمان"
},
"view_mode": {
@@ -814,6 +818,8 @@
"managers": "مديري"
}
},
+ "sponsors": {},
+ "oss_partners": {},
"team": {
"title": "الفريق",
"governance": "الحوكمة",
@@ -841,6 +847,7 @@
"description": "تحدث، اطرح الأسئلة، وشارك الأفكار.",
"cta": "انضم إلى Discord"
},
+ "builders": {},
"follow": {
"title": "ابقَ على اطلاع",
"description": "اكتشف آخر الأخبار عن npmx.",
@@ -1013,7 +1020,15 @@
"trends": {
"title": "مقارنة التوجهات"
}
- }
+ },
+ "version_invalid_url_format": {},
+ "file_filter_option": {},
+ "filter": {}
+ },
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
},
"privacy_policy": {
"title": "سياسة الخصوصية",
@@ -1124,5 +1139,9 @@
"p1": "إذا واجهت عائقاً في إمكانية الوصول على {app}، يرجى إبلاغنا بفتح بلاغ في {link}. نأخذ هذه البلاغات على محمل الجد وسنبذل قصارى جهدنا لمعالجتها.",
"link": "مستودع GitHub"
}
- }
+ },
+ "translation_status": {
+ "table": {}
+ },
+ "action_bar": {}
}
diff --git a/i18n/locales/az-AZ.json b/i18n/locales/az-AZ.json
index e6709653e..4e8104e31 100644
--- a/i18n/locales/az-AZ.json
+++ b/i18n/locales/az-AZ.json
@@ -574,7 +574,8 @@
"b": "{size} B",
"kb": "{size} kB",
"mb": "{size} MB"
- }
+ },
+ "download": {}
},
"connector": {
"modal": {
@@ -851,11 +852,7 @@
"downloads_month": "Endirmələr/ay",
"downloads_year": "Endirmələr/il",
"published": "Son Dərc",
- "name": "Ad",
- "quality": "Keyfiyyət",
- "popularity": "Populyarlıq",
- "maintenance": "Baxım",
- "score": "Xal"
+ "name": "Ad"
},
"columns": {
"title": "Sütunlar",
@@ -869,10 +866,6 @@
"published": "Son Dərc",
"maintainers": "Dəstəkçilər",
"keywords": "Açar sözlər",
- "quality_score": "Keyfiyyət xalı",
- "popularity_score": "Populyarlıq xalı",
- "maintenance_score": "Baxım xalı",
- "combined_score": "Ümumi xal",
"security": "Təhlükəsizlik"
},
"view_mode": {
@@ -1149,6 +1142,7 @@
"file_size_warning": "{size} müqayisə üçün 250KB limitini keçir",
"compare_versions": "fərq",
"compare_versions_title": "Versiyaları müqayisə et",
+ "version_invalid_url_format": {},
"summary": "Xülasə",
"deps_count": "{count} asılılıq",
"dependencies": "Asılılıqlar",
@@ -1313,5 +1307,9 @@
"p1": "{app} saytında əlçatanlıq maneəsi ilə qarşılaşsanız, xahiş edirik {link} issue açaraq bizə bildirin. Bu hesabatları ciddi qəbul edirik və onları həll etmək üçün əlimizdən gələni edəcəyik.",
"link": "GitHub repozitoriyası"
}
- }
+ },
+ "translation_status": {
+ "table": {}
+ },
+ "action_bar": {}
}
diff --git a/i18n/locales/bg-BG.json b/i18n/locales/bg-BG.json
index e1306999a..371926d63 100644
--- a/i18n/locales/bg-BG.json
+++ b/i18n/locales/bg-BG.json
@@ -535,7 +535,8 @@
"b": "{size} B",
"kb": "{size} kB",
"mb": "{size} MB"
- }
+ },
+ "download": {}
},
"connector": {
"modal": {
@@ -812,11 +813,7 @@
"downloads_month": "Изтегляния/месец",
"downloads_year": "Изтегляния/година",
"published": "Последно публикуван",
- "name": "Име",
- "quality": "Качество",
- "popularity": "Популярност",
- "maintenance": "Поддръжка",
- "score": "Резултат"
+ "name": "Име"
},
"columns": {
"title": "Колони",
@@ -830,10 +827,6 @@
"published": "Последно публикуван",
"maintainers": "Поддържащи",
"keywords": "Ключови думи",
- "quality_score": "Резултат за качество",
- "popularity_score": "Резултат за популярност",
- "maintenance_score": "Резултат за поддръжка",
- "combined_score": "Комбиниран резултат",
"security": "Сигурност"
},
"view_mode": {
@@ -1105,6 +1098,7 @@
"file_too_large": "Файлът е твърде голям за сравнение",
"file_size_warning": "{size} надвишава лимита от 250KB за сравнение",
"compare_versions": "diff",
+ "version_invalid_url_format": {},
"summary": "Резюме",
"deps_count": "{count} зависимости",
"dependencies": "Зависимости",
@@ -1246,5 +1240,9 @@
"p1": "Ако срещнете бариера за достъпност в {app}, моля, уведомете ни, като отворите проблем в нашето {link}. Приемаме сериозно тези доклади и ще направим всичко възможно да ги разгледаме.",
"link": "GitHub хранилище"
}
- }
+ },
+ "translation_status": {
+ "table": {}
+ },
+ "action_bar": {}
}
diff --git a/i18n/locales/bn-IN.json b/i18n/locales/bn-IN.json
index 530394cbc..eb9430c72 100644
--- a/i18n/locales/bn-IN.json
+++ b/i18n/locales/bn-IN.json
@@ -53,6 +53,10 @@
"links": "লিংকগুলি",
"tap_to_search": "অনুসন্ধানের জন্য ট্যাপ করুন"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "সেটিংস",
"tagline": "আপনার npmx অভিজ্ঞতা কাস্টমাইজ করুন",
@@ -78,7 +82,8 @@
"label": "এক্সেন্ট রং"
},
"clear_accent": "এক্সেন্ট রং সাফ করুন",
- "translation_progress": "অনুবাদের অগ্রগতি"
+ "translation_progress": "অনুবাদের অগ্রগতি",
+ "background_themes": {}
},
"i18n": {
"missing_keys": "{count} অনুবাদ নেই | {count} অনুবাদ নেই",
@@ -88,6 +93,7 @@
"edit_on_github": "GitHub এ সম্পাদনা করুন",
"view_guide": "অনুবাদ গাইড"
},
+ "error": {},
"common": {
"loading": "লোড হচ্ছে...",
"loading_more": "আরো লোড হচ্ছে...",
@@ -114,6 +120,9 @@
"github": "GitHub এ দেখুন"
}
},
+ "profile": {
+ "invite": {}
+ },
"package": {
"not_found": "প্যাকেজ পাওয়া যায়নি",
"not_found_message": "প্যাকেজ পাওয়া যায়নি।",
@@ -126,6 +135,7 @@
"version": "এই ভার্সনটি নিষ্ক্রিয় করা হয়েছে।",
"no_reason": "কোনো কারণ দেওয়া হয়নি"
},
+ "size_increase": {},
"replacement": {
"title": "আপনার এই ডিপেনডেন্সির প্রয়োজন নাও হতে পারে।",
"native": "এটিকে {replacement} দিয়ে প্রতিস্থাপন করা যেতে পারে, যা Node {nodeVersion} থেকে উপলব্ধ।",
@@ -221,7 +231,8 @@
"more_tagged": "{count}টি আরো ট্যাগ করা",
"all_covered": "সব ভার্সন উপরের ট্যাগ দ্বারা আবৃত",
"deprecated_title": "{version} (নিষ্ক্রিয়)",
- "view_all": "{count}টি ভার্সন দেখুন | সব {count}টি ভার্সন দেখুন"
+ "view_all": "{count}টি ভার্সন দেখুন | সব {count}টি ভার্সন দেখুন",
+ "copy_alt": {}
},
"dependencies": {
"title": "নির্ভরতা ({count})",
@@ -270,7 +281,8 @@
"date_range_multiline": "{start}\nথেকে {end}",
"download_file": "{fileType} ডাউনলোড করুন",
"toggle_annotator": "অ্যানোটেটর টগল করুন",
- "items": {}
+ "items": {},
+ "copy_alt": {}
},
"downloads": {
"title": "সাপ্তাহিক ডাউনলোড"
@@ -356,7 +368,8 @@
"name_asc": "নাম (A-Z)",
"name_desc": "নাম (Z-A)"
},
- "size": {}
+ "size": {},
+ "download": {}
},
"connector": {
"modal": {
@@ -622,11 +635,7 @@
"downloads_day": "ডাউনলোড/দিন",
"downloads_month": "ডাউনলোড/মাস",
"downloads_year": "ডাউনলোড/বছর",
- "name": "নাম",
- "quality": "গুণমান",
- "popularity": "জনপ্রিয়তা",
- "maintenance": "রক্ষণাবেক্ষণ",
- "score": "স্কোর"
+ "name": "নাম"
},
"columns": {
"title": "কলাম",
@@ -639,10 +648,6 @@
"downloads": "ডাউনলোড/সপ্তাহ",
"maintainers": "রক্ষণাবেক্ষণকারী",
"keywords": "কীওয়ার্ড",
- "quality_score": "গুণমান স্কোর",
- "popularity_score": "জনপ্রিয়তা স্কোর",
- "maintenance_score": "রক্ষণাবেক্ষণ স্কোর",
- "combined_score": "সম্মিলিত স্কোর",
"security": "নিরাপত্তা"
},
"view_mode": {
@@ -699,6 +704,8 @@
"managers": "ম্যানেজার"
}
},
+ "sponsors": {},
+ "oss_partners": {},
"team": {},
"contributors": {
"title": "অবদানকারী",
@@ -719,6 +726,7 @@
"description": "চ্যাট করুন, প্রশ্ন জিজ্ঞাসা করুন এবং ধারণা শেয়ার করুন।",
"cta": "Discord এ যোগ দিন"
},
+ "builders": {},
"follow": {
"title": "আপডেট পান",
"description": "npmx এর সর্বশেষ তথ্য পান।",
@@ -830,7 +838,15 @@
},
"values": {},
"trends": {}
- }
+ },
+ "version_invalid_url_format": {},
+ "file_filter_option": {},
+ "filter": {}
+ },
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
},
"privacy_policy": {
"cookies": {
@@ -851,5 +867,9 @@
"measures": {},
"limitations": {},
"contact": {}
- }
+ },
+ "translation_status": {
+ "table": {}
+ },
+ "action_bar": {}
}
diff --git a/i18n/locales/cs-CZ.json b/i18n/locales/cs-CZ.json
index fe06406e5..4913e0ecc 100644
--- a/i18n/locales/cs-CZ.json
+++ b/i18n/locales/cs-CZ.json
@@ -586,7 +586,8 @@
"b": "{size} B",
"kb": "{size} kB",
"mb": "{size} MB"
- }
+ },
+ "download": {}
},
"connector": {
"modal": {
@@ -863,11 +864,7 @@
"downloads_month": "Stažení/měsíc",
"downloads_year": "Stažení/rok",
"published": "Naposledy publikováno",
- "name": "Název",
- "quality": "Kvalita",
- "popularity": "Popularita",
- "maintenance": "Údržba",
- "score": "Skóre"
+ "name": "Název"
},
"columns": {
"title": "Sloupce",
@@ -881,10 +878,6 @@
"published": "Naposledy publikováno",
"maintainers": "Správci",
"keywords": "Klíčová slova",
- "quality_score": "Skóre kvality",
- "popularity_score": "Skóre popularity",
- "maintenance_score": "Skóre údržby",
- "combined_score": "Kombinované skóre",
"security": "Bezpečnost"
},
"view_mode": {
@@ -1163,6 +1156,7 @@
"file_size_warning": "{size} překračuje limit 250KB pro porovnání",
"compare_versions": "porovnat",
"compare_versions_title": "Porovnat s nejnovější verzí",
+ "version_invalid_url_format": {},
"summary": "Souhrn",
"deps_count": "{count} závislostí",
"dependencies": "Závislosti",
@@ -1327,5 +1321,9 @@
"p1": "Pokud narazíte na překážku v přístupnosti na {app}, dejte nám prosím vědět otevřením problému na našem {link}. Tyto zprávy bereme vážně a uděláme vše pro to, abychom je řešili.",
"link": "GitHub repozitáři"
}
- }
+ },
+ "translation_status": {
+ "table": {}
+ },
+ "action_bar": {}
}
diff --git a/i18n/locales/de-DE.json b/i18n/locales/de-DE.json
index ccaaad76d..b57ea527a 100644
--- a/i18n/locales/de-DE.json
+++ b/i18n/locales/de-DE.json
@@ -922,11 +922,7 @@
"downloads_month": "Downloads/Monat",
"downloads_year": "Downloads/Jahr",
"published": "Zuletzt veröffentlicht",
- "name": "Name",
- "quality": "Qualität",
- "popularity": "Beliebtheit",
- "maintenance": "Wartung",
- "score": "Bewertung"
+ "name": "Name"
},
"columns": {
"title": "Spalten",
@@ -940,10 +936,6 @@
"published": "Zuletzt veröffentlicht",
"maintainers": "Maintainer",
"keywords": "Stichwörter",
- "quality_score": "Qualitätsfaktor",
- "popularity_score": "Beliebtheitswert",
- "maintenance_score": "Wartungsbewertung",
- "combined_score": "Gesamtwertung",
"security": "Sicherheit",
"selection": "Paket auswählen"
},
diff --git a/i18n/locales/en.json b/i18n/locales/en.json
index f03ed84bf..b6345ccfd 100644
--- a/i18n/locales/en.json
+++ b/i18n/locales/en.json
@@ -922,11 +922,7 @@
"downloads_month": "Downloads/mo",
"downloads_year": "Downloads/yr",
"published": "Last Published",
- "name": "Name",
- "quality": "Quality",
- "popularity": "Popularity",
- "maintenance": "Maintenance",
- "score": "Score"
+ "name": "Name"
},
"columns": {
"title": "Columns",
@@ -940,10 +936,6 @@
"published": "Last Published",
"maintainers": "Maintainers",
"keywords": "Keywords",
- "quality_score": "Quality score",
- "popularity_score": "Popularity score",
- "maintenance_score": "Maintenance score",
- "combined_score": "Combined score",
"security": "Security",
"selection": "Select package"
},
diff --git a/i18n/locales/es.json b/i18n/locales/es.json
index c3ab2a0e4..3abdddf4a 100644
--- a/i18n/locales/es.json
+++ b/i18n/locales/es.json
@@ -591,7 +591,8 @@
"b": "{size} B",
"kb": "{size} kB",
"mb": "{size} MB"
- }
+ },
+ "download": {}
},
"connector": {
"modal": {
@@ -870,11 +871,7 @@
"downloads_month": "Descargas/mes",
"downloads_year": "Descargas/año",
"published": "Última publicación",
- "name": "Nombre",
- "quality": "Calidad",
- "popularity": "Popularidad",
- "maintenance": "Mantenimiento",
- "score": "Puntuación"
+ "name": "Nombre"
},
"columns": {
"title": "Columnas",
@@ -888,10 +885,6 @@
"published": "Última publicación",
"maintainers": "Mantenedores",
"keywords": "Palabras clave",
- "quality_score": "Puntuación de calidad",
- "popularity_score": "Puntuación de popularidad",
- "maintenance_score": "Puntuación de mantenimiento",
- "combined_score": "Puntuación combinada",
"security": "Seguridad"
},
"view_mode": {
@@ -1170,6 +1163,7 @@
"file_size_warning": "{size} excede el límite de 250KB para la comparación",
"compare_versions": "diferencia",
"compare_versions_title": "Comparar con la última versión",
+ "version_invalid_url_format": {},
"version_selector_title": "Comparar con la versión",
"summary": "Resumen",
"deps_count": "{count} dependencias",
@@ -1335,5 +1329,9 @@
"p1": "Si encuentras una barrera de accesibilidad en {app}, por favor háznoslo saber abriendo una incidencia en nuestro {link}. Nos tomamos estos informes muy en serio y haremos todo lo posible para abordarlos.",
"link": "repositorio de GitHub"
}
- }
+ },
+ "translation_status": {
+ "table": {}
+ },
+ "action_bar": {}
}
diff --git a/i18n/locales/fr-FR.json b/i18n/locales/fr-FR.json
index 7ea17c872..6ac88ca9d 100644
--- a/i18n/locales/fr-FR.json
+++ b/i18n/locales/fr-FR.json
@@ -920,11 +920,7 @@
"downloads_month": "Téléch./mois",
"downloads_year": "Téléch./an",
"published": "Dern. publication",
- "name": "Nom",
- "quality": "Qualité",
- "popularity": "Popularité",
- "maintenance": "Maintenance",
- "score": "Score"
+ "name": "Nom"
},
"columns": {
"title": "Colonnes",
@@ -938,10 +934,6 @@
"published": "Dern. publication",
"maintainers": "Mainteneurs",
"keywords": "Mots-clés",
- "quality_score": "Score de qualité",
- "popularity_score": "Score de popularité",
- "maintenance_score": "Score de maintenance",
- "combined_score": "Score combiné",
"security": "Sécurité",
"selection": "Sélectionner le paquet"
},
diff --git a/i18n/locales/hi-IN.json b/i18n/locales/hi-IN.json
index 63f832c7f..18f1a3c04 100644
--- a/i18n/locales/hi-IN.json
+++ b/i18n/locales/hi-IN.json
@@ -54,6 +54,10 @@
"links": "लिंक",
"tap_to_search": "खोजने के लिए टैप करें"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "सेटिंग्स",
"tagline": "अपने npmx अनुभव को अनुकूलित करें",
@@ -79,7 +83,8 @@
"label": "एक्सेंट रंग"
},
"clear_accent": "एक्सेंट रंग साफ़ करें",
- "translation_progress": "अनुवाद प्रगति"
+ "translation_progress": "अनुवाद प्रगति",
+ "background_themes": {}
},
"i18n": {
"missing_keys": "{count} अनुवाद गायब है | {count} अनुवाद गायब हैं",
@@ -89,6 +94,7 @@
"edit_on_github": "GitHub पर संपादित करें",
"view_guide": "अनुवाद गाइड"
},
+ "error": {},
"common": {
"loading": "लोड हो रहा है...",
"loading_more": "और लोड हो रहा है...",
@@ -115,6 +121,9 @@
"github": "GitHub पर देखें"
}
},
+ "profile": {
+ "invite": {}
+ },
"package": {
"not_found": "पैकेज नहीं मिला",
"not_found_message": "पैकेज नहीं मिल सका।",
@@ -127,6 +136,7 @@
"version": "यह संस्करण डेप्रीकेट कर दिया गया है।",
"no_reason": "कोई कारण प्रदान नहीं किया गया"
},
+ "size_increase": {},
"replacement": {
"title": "आपको इस निर्भरता की आवश्यकता नहीं हो सकती।",
"native": "इसे {replacement} से बदला जा सकता है, जो Node {nodeVersion} से उपलब्ध है।",
@@ -222,7 +232,8 @@
"more_tagged": "{count} और टैग किए गए",
"all_covered": "सभी संस्करण ऊपर के टैग्स द्वारा कवर किए गए हैं",
"deprecated_title": "{version} (डेप्रीकेटेड)",
- "view_all": "{count} संस्करण देखें | सभी {count} संस्करण देखें"
+ "view_all": "{count} संस्करण देखें | सभी {count} संस्करण देखें",
+ "copy_alt": {}
},
"dependencies": {
"title": "निर्भरताएँ ({count})",
@@ -271,7 +282,8 @@
"date_range_multiline": "{start}\nसे {end}",
"download_file": "{fileType} डाउनलोड करें",
"toggle_annotator": "एनोटेटर टॉगल करें",
- "items": {}
+ "items": {},
+ "copy_alt": {}
},
"downloads": {
"title": "साप्ताहिक डाउनलोड्स"
@@ -357,7 +369,8 @@
"name_asc": "नाम (A-Z)",
"name_desc": "नाम (Z-A)"
},
- "size": {}
+ "size": {},
+ "download": {}
},
"connector": {
"modal": {
@@ -623,11 +636,7 @@
"downloads_day": "डाउनलोड्स/दिन",
"downloads_month": "डाउनलोड्स/महीना",
"downloads_year": "डाउनलोड्स/वर्ष",
- "name": "नाम",
- "quality": "गुणवत्ता",
- "popularity": "लोकप्रियता",
- "maintenance": "रखरखाव",
- "score": "स्कोर"
+ "name": "नाम"
},
"columns": {
"title": "कॉलम्स",
@@ -640,10 +649,6 @@
"downloads": "डाउनलोड्स/सप्ताह",
"maintainers": "अनुरक्षक",
"keywords": "कीवर्ड्स",
- "quality_score": "गुणवत्ता स्कोर",
- "popularity_score": "लोकप्रियता स्कोर",
- "maintenance_score": "रखरखाव स्कोर",
- "combined_score": "संयुक्त स्कोर",
"security": "सुरक्षा"
},
"view_mode": {
@@ -700,6 +705,8 @@
"managers": "मैनेजर"
}
},
+ "sponsors": {},
+ "oss_partners": {},
"team": {},
"contributors": {
"title": "योगदानकर्ता",
@@ -720,6 +727,7 @@
"description": "चैट करें, प्रश्न पूछें, और विचार साझा करें।",
"cta": "Discord से जुड़ें"
},
+ "builders": {},
"follow": {
"title": "अद्यतन रहें",
"description": "npmx पर नवीनतम जानकारी प्राप्त करें।",
@@ -831,7 +839,15 @@
},
"values": {},
"trends": {}
- }
+ },
+ "version_invalid_url_format": {},
+ "file_filter_option": {},
+ "filter": {}
+ },
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
},
"privacy_policy": {
"cookies": {
@@ -852,5 +868,9 @@
"measures": {},
"limitations": {},
"contact": {}
- }
+ },
+ "translation_status": {
+ "table": {}
+ },
+ "action_bar": {}
}
diff --git a/i18n/locales/hu-HU.json b/i18n/locales/hu-HU.json
index ed65c307e..2eccc5600 100644
--- a/i18n/locales/hu-HU.json
+++ b/i18n/locales/hu-HU.json
@@ -535,7 +535,8 @@
"b": "{size} B",
"kb": "{size} kB",
"mb": "{size} MB"
- }
+ },
+ "download": {}
},
"connector": {
"modal": {
@@ -812,11 +813,7 @@
"downloads_month": "Letöltés/hó",
"downloads_year": "Letöltés/év",
"published": "Utoljára közzétéve",
- "name": "Név",
- "quality": "Minőség",
- "popularity": "Népszerűség",
- "maintenance": "Karbantartás",
- "score": "Pontszám"
+ "name": "Név"
},
"columns": {
"title": "Oszlopok",
@@ -830,10 +827,6 @@
"published": "Utoljára közzétéve",
"maintainers": "Karbantartók",
"keywords": "Kulcsszavak",
- "quality_score": "Minőség pontszám",
- "popularity_score": "Népszerűség pontszám",
- "maintenance_score": "Karbantartás pontszám",
- "combined_score": "Összesített pontszám",
"security": "Biztonság"
},
"view_mode": {
@@ -1105,6 +1098,7 @@
"file_too_large": "A fájl túl nagy az összehasonlításhoz",
"file_size_warning": "{size} meghaladja a 250KB-os limitet az összehasonlításhoz",
"compare_versions": "diff",
+ "version_invalid_url_format": {},
"summary": "Összegzés",
"deps_count": "{count} függ",
"dependencies": "Függőségek",
@@ -1246,5 +1240,9 @@
"p1": "Ha akadálymentességi problémákat tapasztalsz a(z) {app} -on, kérjük, közölj velünk egy kérdés megnyitásával a(z) {link} -ben. Komolyan vesszük ezeket a jelentéseket, és mindent megteszünk a megoldásukért.",
"link": "GitHub tárhelyen"
}
- }
+ },
+ "translation_status": {
+ "table": {}
+ },
+ "action_bar": {}
}
diff --git a/i18n/locales/id-ID.json b/i18n/locales/id-ID.json
index faa4c332f..0c85c01c8 100644
--- a/i18n/locales/id-ID.json
+++ b/i18n/locales/id-ID.json
@@ -591,7 +591,8 @@
"b": "{size} B",
"kb": "{size} kB",
"mb": "{size} MB"
- }
+ },
+ "download": {}
},
"connector": {
"modal": {
@@ -870,11 +871,7 @@
"downloads_month": "Unduhan/bulan",
"downloads_year": "Unduhan/tahun",
"published": "Paling Akhir Diterbitkan",
- "name": "Nama",
- "quality": "Kualitas",
- "popularity": "Popularitas",
- "maintenance": "Pemeliharaan",
- "score": "Skor"
+ "name": "Nama"
},
"columns": {
"title": "Kolom",
@@ -888,10 +885,6 @@
"published": "Paling Akhir Diterbitkan",
"maintainers": "Pemelihara",
"keywords": "Kata kunci",
- "quality_score": "Skor kualitas",
- "popularity_score": "Skor popularitas",
- "maintenance_score": "Skor pemeliharaan",
- "combined_score": "Skor gabungan",
"security": "Keamanan"
},
"view_mode": {
@@ -1170,6 +1163,7 @@
"file_size_warning": "{size} melebihi batas 250KB untuk perbandingan",
"compare_versions": "perbarui",
"compare_versions_title": "Bandingkan dengan versi terbaru",
+ "version_invalid_url_format": {},
"version_selector_title": "Bandingkan dengan versi",
"summary": "Ringkasan",
"deps_count": "{count} ketergantungan",
@@ -1335,5 +1329,9 @@
"p1": "Jika kamu menemukan kendala terkait fitur aksesibilitas bagi penyandang disabilitas atau masalah tampilan di platform {app}, silakan laporkan masalahnya di {link}. Setiap laporan yang masuk akan kami tindak lanjuti dengan prioritas tinggi agar layanan kita lebih baik bagi seluruh pengguna.",
"link": "Repositori Pengembangan Isu Github"
}
- }
+ },
+ "translation_status": {
+ "table": {}
+ },
+ "action_bar": {}
}
diff --git a/i18n/locales/it-IT.json b/i18n/locales/it-IT.json
index ec6e22191..552a2d65d 100644
--- a/i18n/locales/it-IT.json
+++ b/i18n/locales/it-IT.json
@@ -76,6 +76,10 @@
"links": "Link",
"tap_to_search": "Tocca per cercare"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "impostazioni",
"tagline": "personalizza la tua esperienza npmx",
@@ -122,6 +126,7 @@
"edit_on_github": "Modifica su GitHub",
"view_guide": "Guida alla traduzione"
},
+ "error": {},
"common": {
"loading": "Caricando...",
"loading_more": "Caricando altri...",
@@ -452,7 +457,8 @@
"b": "{size} B",
"kb": "{size} kB",
"mb": "{size} MB"
- }
+ },
+ "download": {}
},
"connector": {
"modal": {
@@ -725,11 +731,7 @@
"downloads_month": "Download/mese",
"downloads_year": "Download/anno",
"published": "Ultimo pubblicato",
- "name": "Nome",
- "quality": "Qualità",
- "popularity": "Popolarità",
- "maintenance": "Manutenzione",
- "score": "Punteggio"
+ "name": "Nome"
},
"columns": {
"title": "Colonne",
@@ -743,10 +745,6 @@
"published": "Ultimo pubblicato",
"maintainers": "Manutentori",
"keywords": "Keywords",
- "quality_score": "Punteggio di qualità",
- "popularity_score": "Punteggio di popolarità",
- "maintenance_score": "Punteggio di manutenzione",
- "combined_score": "Punteggio combinato",
"security": "Sicurezza"
},
"view_mode": {
@@ -825,6 +823,7 @@
"description": "Chatta, fai domande e condividi idee.",
"cta": "Unisciti a Discord"
},
+ "builders": {},
"follow": {
"title": "Rimani aggiornato",
"description": "Scopri le ultime novità su npmx.",
@@ -996,9 +995,15 @@
},
"trends": {}
},
+ "version_invalid_url_format": {},
"file_filter_option": {},
"filter": {}
},
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
+ },
"privacy_policy": {
"title": "Informativa sulla privacy",
"last_updated": "Ultimo aggiornamento: {date}",
@@ -1085,5 +1090,8 @@
"limitations": {},
"contact": {}
},
+ "translation_status": {
+ "table": {}
+ },
"action_bar": {}
}
diff --git a/i18n/locales/ja-JP.json b/i18n/locales/ja-JP.json
index b876175b4..734d46168 100644
--- a/i18n/locales/ja-JP.json
+++ b/i18n/locales/ja-JP.json
@@ -588,7 +588,8 @@
"b": "{size} B",
"kb": "{size} kB",
"mb": "{size} MB"
- }
+ },
+ "download": {}
},
"connector": {
"modal": {
@@ -865,11 +866,7 @@
"downloads_month": "ダウンロード数/月",
"downloads_year": "ダウンロード数/年",
"published": "最新の公開日",
- "name": "パッケージ名",
- "quality": "品質",
- "popularity": "人気度",
- "maintenance": "メンテナンス",
- "score": "スコア"
+ "name": "パッケージ名"
},
"columns": {
"title": "列",
@@ -883,10 +880,6 @@
"published": "最新の公開",
"maintainers": "メンテナ",
"keywords": "キーワード",
- "quality_score": "品質スコア",
- "popularity_score": "人気度スコア",
- "maintenance_score": "メンテナンススコア",
- "combined_score": "総合スコア",
"security": "セキュリティ"
},
"view_mode": {
@@ -1165,6 +1158,7 @@
"file_size_warning": "{size} は比較制限の250KBを超えています",
"compare_versions": "diff",
"compare_versions_title": "最新バージョンと比較",
+ "version_invalid_url_format": {},
"summary": "要約",
"deps_count": "依存関係 {count} 件",
"dependencies": "依存関係",
@@ -1329,5 +1323,9 @@
"p1": "{app} でアクセシビリティ上のバリアを見つけた場合は、{link} でissueを作成して連絡してください。報告は真剣に受け止め、問題を解決するためにできる限り対応します。",
"link": "GitHubリポジトリ"
}
- }
+ },
+ "translation_status": {
+ "table": {}
+ },
+ "action_bar": {}
}
diff --git a/i18n/locales/kn-IN.json b/i18n/locales/kn-IN.json
index 5786e6a53..910c60b66 100644
--- a/i18n/locales/kn-IN.json
+++ b/i18n/locales/kn-IN.json
@@ -54,6 +54,10 @@
"links": "ಲಿಂಕ್ಗಳು",
"tap_to_search": "ಹುಡುಕಲು ಟ್ಯಾಪ್ ಮಾಡಿ"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "ಸೆಟ್ಟಿಂಗ್ಗಳು",
"tagline": "ನಿಮ್ಮ npmx ಅನುಭವವನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ",
@@ -79,7 +83,8 @@
"label": "ಅಕ್ಸೆಂಟ್ ಬಣ್ಣಗಳು"
},
"clear_accent": "ಅಕ್ಸೆಂಟ್ ಬಣ್ಣ ತೆರವುಗೊಳಿಸಿ",
- "translation_progress": "ಅನುವಾದ ಪ್ರಗತಿ"
+ "translation_progress": "ಅನುವಾದ ಪ್ರಗತಿ",
+ "background_themes": {}
},
"i18n": {
"missing_keys": "{count} ಅನುವಾದ ಇಲ್ಲ | {count} ಅನುವಾದಗಳು ಇಲ್ಲ",
@@ -89,6 +94,7 @@
"edit_on_github": "GitHub ನಲ್ಲಿ ಸಂಪಾದಿಸಿ",
"view_guide": "ಅನುವಾದ ಮಾರ್ಗದರ್ಶಿ"
},
+ "error": {},
"common": {
"loading": "ಲೋಡ್ ಆಗುತ್ತಿದೆ...",
"loading_more": "ಇನ್ನಷ್ಟು ಲೋಡ್ ಆಗುತ್ತಿದೆ...",
@@ -115,6 +121,9 @@
"github": "GitHub ನಲ್ಲಿ ನೋಡಿ"
}
},
+ "profile": {
+ "invite": {}
+ },
"package": {
"not_found": "ಪ್ಯಾಕೇಜ್ ಕಂಡುಬಂದಿಲ್ಲ",
"not_found_message": "ಪ್ಯಾಕೇಜ್ ಕಂಡುಬಂದಿಲ್ಲ.",
@@ -127,6 +136,7 @@
"version": "ಈ ಆವೃತ್ತಿ ಅಮಾನ್ಯಗೊಳಿಸಲಾಗಿದೆ.",
"no_reason": "ಕಾರಣ ನೀಡಲಾಗಿಲ್ಲ"
},
+ "size_increase": {},
"replacement": {
"title": "ನಿಮಗೆ ಈ ಅವಲಂಬನೆ ಅಗತ್ಯವಿಲ್ಲದಿರಬಹುದು.",
"native": "ಇದನ್ನು {replacement} ಮೂಲಕ ಬದಲಾಯಿಸಬಹುದು, ಇದು Node {nodeVersion} ರಿಂದ ಲಭ್ಯವಿದೆ.",
@@ -222,7 +232,8 @@
"more_tagged": "{count} ಇನ್ನಷ್ಟು ಟ್ಯಾಗ್ ಮಾಡಲಾಗಿದೆ",
"all_covered": "ಎಲ್ಲಾ ಆವೃತ್ತಿಗಳು ಮೇಲಿನ ಟ್ಯಾಗ್ಗಳಿಂದ ಒಳಗೊಂಡಿವೆ",
"deprecated_title": "{version} (ಅಮಾನ್ಯಗೊಳಿಸಲಾಗಿದೆ)",
- "view_all": "{count} ಆವೃತ್ತಿ ನೋಡಿ | ಎಲ್ಲಾ {count} ಆವೃತ್ತಿಗಳನ್ನು ನೋಡಿ"
+ "view_all": "{count} ಆವೃತ್ತಿ ನೋಡಿ | ಎಲ್ಲಾ {count} ಆವೃತ್ತಿಗಳನ್ನು ನೋಡಿ",
+ "copy_alt": {}
},
"dependencies": {
"title": "ಅವಲಂಬನೆಗಳು ({count})",
@@ -271,7 +282,8 @@
"date_range_multiline": "{start}\nರಿಂದ {end}",
"download_file": "{fileType} ಡೌನ್ಲೋಡ್ ಮಾಡಿ",
"toggle_annotator": "ಅನೋಟೇಟರ್ ಟಾಗಲ್ ಮಾಡಿ",
- "items": {}
+ "items": {},
+ "copy_alt": {}
},
"downloads": {
"title": "ವಾರದ ಡೌನ್ಲೋಡ್ಗಳು"
@@ -357,7 +369,8 @@
"name_asc": "ಹೆಸರು (A-Z)",
"name_desc": "ಹೆಸರು (Z-A)"
},
- "size": {}
+ "size": {},
+ "download": {}
},
"connector": {
"modal": {
@@ -623,11 +636,7 @@
"downloads_day": "ಡೌನ್ಲೋಡ್ಗಳು/ದಿನ",
"downloads_month": "ಡೌನ್ಲೋಡ್ಗಳು/ತಿಂಗಳು",
"downloads_year": "ಡೌನ್ಲೋಡ್ಗಳು/ವರ್ಷ",
- "name": "ಹೆಸರು",
- "quality": "ಗುಣಮಟ್ಟ",
- "popularity": "ಜನಪ್ರಿಯತೆ",
- "maintenance": "ನಿರ್ವಹಣೆ",
- "score": "ಸ್ಕೋರ್"
+ "name": "ಹೆಸರು"
},
"columns": {
"title": "ಕಾಲಮ್ಗಳು",
@@ -640,10 +649,6 @@
"downloads": "ಡೌನ್ಲೋಡ್ಗಳು/ವಾರ",
"maintainers": "ನಿರ್ವಹಕರು",
"keywords": "ಕೀವರ್ಡ್ಗಳು",
- "quality_score": "ಗುಣಮಟ್ಟದ ಸ್ಕೋರ್",
- "popularity_score": "ಜನಪ್ರಿಯತಾ ಸ್ಕೋರ್",
- "maintenance_score": "ನಿರ್ವಹಣಾ ಸ್ಕೋರ್",
- "combined_score": "ಸಂಯುಕ್ತ ಸ್ಕೋರ್",
"security": "ಭದ್ರತೆ"
},
"view_mode": {
@@ -700,6 +705,8 @@
"managers": "ನಿರ್ವಾಹಕರು"
}
},
+ "sponsors": {},
+ "oss_partners": {},
"team": {},
"contributors": {
"title": "ಸಹಯೋಗಿಗಳು",
@@ -720,6 +727,7 @@
"description": "ಚಾಟ್ ಮಾಡಿ, ಪ್ರಶ್ನೆಗಳು ಕೇಳಿ ಮತ್ತು ಆಲೋಚನೆಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳಿ.",
"cta": "Discord ನಲ್ಲಿ ಸೇರಿ"
},
+ "builders": {},
"follow": {
"title": "ನವೀಕರಣಗಳನ್ನು ಪಡೆಯಿರಿ",
"description": "npmx ಬಗ್ಗೆ ಇತ್ತೀಚಿನ ಮಾಹಿತಿ ಪಡೆಯಿರಿ.",
@@ -831,7 +839,15 @@
},
"values": {},
"trends": {}
- }
+ },
+ "version_invalid_url_format": {},
+ "file_filter_option": {},
+ "filter": {}
+ },
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
},
"privacy_policy": {
"cookies": {
@@ -852,5 +868,9 @@
"measures": {},
"limitations": {},
"contact": {}
- }
+ },
+ "translation_status": {
+ "table": {}
+ },
+ "action_bar": {}
}
diff --git a/i18n/locales/mr-IN.json b/i18n/locales/mr-IN.json
index 129d7c4dd..082ffc370 100644
--- a/i18n/locales/mr-IN.json
+++ b/i18n/locales/mr-IN.json
@@ -482,6 +482,7 @@
"maintainer_template": "{avatar} {char126}{name}"
},
"trends": {
+ "chart_assistive_text": {},
"granularity": "ग्रॅन्युलॅरिटी",
"granularity_daily": "दैनिक",
"granularity_weekly": "साप्ताहिक",
@@ -915,11 +916,7 @@
"downloads_month": "डाउनलोड्स/महिना",
"downloads_year": "डाउनलोड्स/वर्ष",
"published": "शेवटचे प्रकाशित",
- "name": "नाव",
- "quality": "गुणवत्ता",
- "popularity": "लोकप्रियता",
- "maintenance": "देखभाल",
- "score": "स्कोर"
+ "name": "नाव"
},
"columns": {
"title": "स्तंभ",
@@ -933,10 +930,6 @@
"published": "शेवटचे प्रकाशित",
"maintainers": "देखभालकर्ते",
"keywords": "कीवर्ड्स",
- "quality_score": "गुणवत्ता स्कोर",
- "popularity_score": "लोकप्रियता स्कोर",
- "maintenance_score": "देखभाल स्कोर",
- "combined_score": "एकत्रित स्कोर",
"security": "सुरक्षा",
"selection": "पॅकेज निवडा"
},
@@ -1425,6 +1418,14 @@
"file_link": "GitHub वर {file} ({lang}) संपादित करा"
}
},
+ "vacations": {
+ "what": {},
+ "meantime": {},
+ "return": {},
+ "stats": {
+ "subtitle": {}
+ }
+ },
"action_bar": {
"title": "क्रिया पट्टी",
"selection": "0 निवडले | 1 निवडले | {count} निवडले",
diff --git a/i18n/locales/nb-NO.json b/i18n/locales/nb-NO.json
index 0e6cbe921..11890e2fc 100644
--- a/i18n/locales/nb-NO.json
+++ b/i18n/locales/nb-NO.json
@@ -76,6 +76,10 @@
"links": "Lenker",
"tap_to_search": "Trykk for å søke"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "innstillinger",
"tagline": "tilpass din npmx-opplevelse",
@@ -122,6 +126,7 @@
"edit_on_github": "Rediger på GitHub",
"view_guide": "Oversettelsesguide"
},
+ "error": {},
"common": {
"loading": "Laster...",
"loading_more": "Laster mer...",
@@ -148,6 +153,9 @@
"github": "Vis på GitHub"
}
},
+ "profile": {
+ "invite": {}
+ },
"package": {
"not_found": "Pakke ikke funnet",
"not_found_message": "Pakken kunne ikke finnes.",
@@ -160,6 +168,7 @@
"version": "Denne versjonen er utfaset.",
"no_reason": "Ingen årsak oppgitt"
},
+ "size_increase": {},
"replacement": {
"title": "Du trenger kanskje ikke denne avhengigheten.",
"native": "Denne kan erstattes med {replacement}, tilgjengelig siden Node {nodeVersion}.",
@@ -272,7 +281,8 @@
"more_tagged": "{count} flere tagget",
"all_covered": "Alle versjoner dekkes av taggene over",
"deprecated_title": "{version} (utfaset)",
- "view_all": "Vis {count} versjon | Vis alle {count} versjoner"
+ "view_all": "Vis {count} versjon | Vis alle {count} versjoner",
+ "copy_alt": {}
},
"dependencies": {
"title": "Avhengighet ({count}) | Avhengigheter ({count})",
@@ -326,7 +336,8 @@
"y_axis_label": "{granularity} {facet}",
"items": {
"downloads": "Nedlastinger"
- }
+ },
+ "copy_alt": {}
},
"downloads": {
"title": "Ukentlige nedlastinger",
@@ -418,7 +429,8 @@
"b": "{size} B",
"kb": "{size} kB",
"mb": "{size} MB"
- }
+ },
+ "download": {}
},
"connector": {
"modal": {
@@ -691,11 +703,7 @@
"downloads_month": "Nedlastinger/mnd",
"downloads_year": "Nedlastinger/år",
"published": "Sist publisert",
- "name": "Navn",
- "quality": "Kvalitet",
- "popularity": "Popularitet",
- "maintenance": "Vedlikehold",
- "score": "Poengsum"
+ "name": "Navn"
},
"columns": {
"title": "Kolonner",
@@ -709,10 +717,6 @@
"published": "Sist publisert",
"maintainers": "Vedlikeholdere",
"keywords": "Nøkkelord",
- "quality_score": "Kvalitetspoeng",
- "popularity_score": "Popularitetspoeng",
- "maintenance_score": "Vedlikeholdspoeng",
- "combined_score": "Kombinert poengsum",
"security": "Sikkerhet"
},
"view_mode": {
@@ -769,6 +773,8 @@
"managers": "pakkebehandlere"
}
},
+ "sponsors": {},
+ "oss_partners": {},
"team": {},
"contributors": {
"title": "{count} Bidragsyter | {count} Bidragsytere",
@@ -789,6 +795,7 @@
"description": "Chat, still spørsmål og del ideer.",
"cta": "Bli med på Discord"
},
+ "builders": {},
"follow": {
"title": "Hold deg oppdatert",
"description": "Få med deg det siste om npmx.",
@@ -961,7 +968,15 @@
"trends": {
"title": "Ukentlige nedlastinger"
}
- }
+ },
+ "version_invalid_url_format": {},
+ "file_filter_option": {},
+ "filter": {}
+ },
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
},
"privacy_policy": {
"cookies": {
@@ -982,5 +997,9 @@
"measures": {},
"limitations": {},
"contact": {}
- }
+ },
+ "translation_status": {
+ "table": {}
+ },
+ "action_bar": {}
}
diff --git a/i18n/locales/ne-NP.json b/i18n/locales/ne-NP.json
index a996e03c8..9557b0cec 100644
--- a/i18n/locales/ne-NP.json
+++ b/i18n/locales/ne-NP.json
@@ -54,6 +54,10 @@
"links": "लिङ्कहरू",
"tap_to_search": "खोज्न ट्याप गर्नुहोस्"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "सेटिङ्स",
"tagline": "आफ्नो npmx अनुभव अनुकूल बनाउनुहोस्",
@@ -79,7 +83,8 @@
"label": "एक्सेन्ट रङहरू"
},
"clear_accent": "एक्सेन्ट रङ हटाउनुहोस्",
- "translation_progress": "अनुवाद प्रगति"
+ "translation_progress": "अनुवाद प्रगति",
+ "background_themes": {}
},
"i18n": {
"missing_keys": "{count} अनुवाद छुटेको छ | {count} अनुवादहरू छुटेका छन्",
@@ -89,6 +94,7 @@
"edit_on_github": "GitHub मा सम्पादन गर्नुहोस्",
"view_guide": "अनुवाद मार्गदर्शन"
},
+ "error": {},
"common": {
"loading": "लोड हुँदैछ...",
"loading_more": "अझै लोड हुँदैछ...",
@@ -115,6 +121,9 @@
"github": "GitHub मा हेर्नुहोस्"
}
},
+ "profile": {
+ "invite": {}
+ },
"package": {
"not_found": "प्याकेज फेला परेन",
"not_found_message": "प्याकेज फेला पार्न सकिएन।",
@@ -127,6 +136,7 @@
"version": "यो संस्करण अप्रचलित (deprecated) गरिएको छ।",
"no_reason": "कारण दिइएको छैन"
},
+ "size_increase": {},
"replacement": {
"title": "तपाईंलाई यो डिपेन्डेन्सी आवश्यक नपर्न सक्छ।",
"native": "Node {nodeVersion} देखि उपलब्ध {replacement} ले यसलाई प्रतिस्थापन गर्न सक्छ।",
@@ -208,7 +218,8 @@
"more_tagged": "{count} थप ट्याग गरिएको",
"all_covered": "माथिका ट्यागले सबै संस्करणहरू कभर गर्छन्",
"deprecated_title": "{version} (deprecated)",
- "view_all": "{count} संस्करण हेर्नुहोस् | सबै {count} संस्करणहरू हेर्नुहोस्"
+ "view_all": "{count} संस्करण हेर्नुहोस् | सबै {count} संस्करणहरू हेर्नुहोस्",
+ "copy_alt": {}
},
"dependencies": {
"title": "डिपेन्डेन्सीहरू ({count})",
@@ -257,7 +268,8 @@
"date_range_multiline": "{start}\nदेखि {end}",
"download_file": "{fileType} डाउनलोड गर्नुहोस्",
"toggle_annotator": "एनोटेटर टगल गर्नुहोस्",
- "items": {}
+ "items": {},
+ "copy_alt": {}
},
"downloads": {
"title": "साप्ताहिक डाउनलोड"
@@ -342,7 +354,8 @@
"name_asc": "नाम (A-Z)",
"name_desc": "नाम (Z-A)"
},
- "size": {}
+ "size": {},
+ "download": {}
},
"connector": {
"modal": {
@@ -608,11 +621,7 @@
"downloads_day": "डाउनलोड/दिन",
"downloads_month": "डाउनलोड/महिना",
"downloads_year": "डाउनलोड/वर्ष",
- "name": "नाम",
- "quality": "क्वालिटी",
- "popularity": "लोकप्रियता",
- "maintenance": "मेन्टेनेन्स",
- "score": "स्कोर"
+ "name": "नाम"
},
"columns": {
"title": "स्तम्भहरू",
@@ -625,10 +634,6 @@
"downloads": "डाउनलोड/हप्ता",
"maintainers": "मेन्टेनरहरू",
"keywords": "किवर्ड्स",
- "quality_score": "क्वालिटी स्कोर",
- "popularity_score": "लोकप्रियता स्कोर",
- "maintenance_score": "मेन्टेनेन्स स्कोर",
- "combined_score": "समग्र स्कोर",
"security": "सिक्युरिटी"
},
"view_mode": {
@@ -685,6 +690,8 @@
"managers": "म्यानेजरहरू बनाइरहेका छन्"
}
},
+ "sponsors": {},
+ "oss_partners": {},
"team": {},
"contributors": {
"title": "कन्ट्रिब्युटरहरू",
@@ -705,6 +712,7 @@
"description": "च्याट गर्नुहोस्, प्रश्न सोध्नुहोस्, र विचार साझा गर्नुहोस्।",
"cta": "Discord मा जोडिनुहोस्"
},
+ "builders": {},
"follow": {
"title": "अपडेट रहनुहोस्",
"description": "npmx का ताजा अपडेटहरू जान्नुहोस्।",
@@ -816,7 +824,15 @@
},
"values": {},
"trends": {}
- }
+ },
+ "version_invalid_url_format": {},
+ "file_filter_option": {},
+ "filter": {}
+ },
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
},
"privacy_policy": {
"cookies": {
@@ -837,5 +853,9 @@
"measures": {},
"limitations": {},
"contact": {}
- }
+ },
+ "translation_status": {
+ "table": {}
+ },
+ "action_bar": {}
}
diff --git a/i18n/locales/pl-PL.json b/i18n/locales/pl-PL.json
index 8c2522442..a90239d6f 100644
--- a/i18n/locales/pl-PL.json
+++ b/i18n/locales/pl-PL.json
@@ -588,7 +588,8 @@
"b": "{size} B",
"kb": "{size} kB",
"mb": "{size} MB"
- }
+ },
+ "download": {}
},
"connector": {
"modal": {
@@ -865,11 +866,7 @@
"downloads_month": "Pobrania/mies.",
"downloads_year": "Pobrania/rok",
"published": "Ostatnio opublikowano",
- "name": "Nazwa",
- "quality": "Jakość",
- "popularity": "Popularność",
- "maintenance": "Utrzymanie",
- "score": "Wynik"
+ "name": "Nazwa"
},
"columns": {
"title": "Kolumny",
@@ -883,10 +880,6 @@
"published": "Ostatnio opublikowano",
"maintainers": "Opiekunowie",
"keywords": "Słowa kluczowe",
- "quality_score": "Wynik jakości",
- "popularity_score": "Wynik popularności",
- "maintenance_score": "Wynik utrzymania",
- "combined_score": "Wynik łączny",
"security": "Bezpieczeństwo"
},
"view_mode": {
@@ -1165,6 +1158,7 @@
"file_size_warning": "{size} przekracza limit dla porównań wynoszący 250KB",
"compare_versions": "porównaj",
"compare_versions_title": "Porównaj z najnowszą wersją",
+ "version_invalid_url_format": {},
"summary": "Podsumowanie",
"deps_count": "{count} zależności",
"dependencies": "Zależności",
@@ -1329,5 +1323,9 @@
"p1": "Jeśli napotkasz barierę dostępności w {app}, daj nam znać, otwierając zgłoszenie w naszym {link}. Traktujemy takie zgłoszenia poważnie i zrobimy wszystko, co w naszej mocy, aby rozwiązać problem.",
"link": "repozytorium GitHub"
}
- }
+ },
+ "translation_status": {
+ "table": {}
+ },
+ "action_bar": {}
}
diff --git a/i18n/locales/pt-BR.json b/i18n/locales/pt-BR.json
index f90b8a294..11f680f9b 100644
--- a/i18n/locales/pt-BR.json
+++ b/i18n/locales/pt-BR.json
@@ -599,7 +599,8 @@
"b": "{size} B",
"kb": "{size} KB",
"mb": "{size} MB"
- }
+ },
+ "download": {}
},
"connector": {
"modal": {
@@ -879,11 +880,7 @@
"downloads_month": "Downloads/mês",
"downloads_year": "Downloads/ano",
"published": "Última publicação",
- "name": "Nome",
- "quality": "Qualidade",
- "popularity": "Popularidade",
- "maintenance": "Manutenção",
- "score": "Pontuação"
+ "name": "Nome"
},
"columns": {
"title": "Colunas",
@@ -897,10 +894,6 @@
"published": "Última publicação",
"maintainers": "Mantenedores",
"keywords": "Palavras-chave",
- "quality_score": "Pontuação de qualidade",
- "popularity_score": "Pontuação de popularidade",
- "maintenance_score": "Pontuação de manutenção",
- "combined_score": "Pontuação combinada",
"security": "Segurança",
"selection": "Selecionar pacote"
},
@@ -1180,6 +1173,7 @@
"file_size_warning": "{size} excede o limite de 250 KB para comparação",
"compare_versions": "diferença",
"compare_versions_title": "Compare com a versão mais recente",
+ "version_invalid_url_format": {},
"version_selector_title": "Comparar com versão",
"summary": "Resumo",
"deps_count": "{count} dependência | {count} dependências",
@@ -1346,6 +1340,9 @@
"link": "Repositório GitHub"
}
},
+ "translation_status": {
+ "table": {}
+ },
"action_bar": {
"title": "Barra de ações",
"selection": "0 selecionados | 1 selecionado | {count} selecionados",
diff --git a/i18n/locales/ru-RU.json b/i18n/locales/ru-RU.json
index edb18a644..9ca35038a 100644
--- a/i18n/locales/ru-RU.json
+++ b/i18n/locales/ru-RU.json
@@ -574,7 +574,8 @@
"b": "{size} байт",
"kb": "{size} КБ",
"mb": "{size} МБ"
- }
+ },
+ "download": {}
},
"connector": {
"modal": {
@@ -851,11 +852,7 @@
"downloads_month": "Загрузок/мес",
"downloads_year": "Загрузок/год",
"published": "Опубликован",
- "name": "Имя",
- "quality": "Качество",
- "popularity": "Популярность",
- "maintenance": "Поддержка",
- "score": "Оценка"
+ "name": "Имя"
},
"columns": {
"title": "Столбцы",
@@ -869,10 +866,6 @@
"published": "Опубликован",
"maintainers": "Мейнтейнеры",
"keywords": "Ключевые слова",
- "quality_score": "Оценка качества",
- "popularity_score": "Оценка популярности",
- "maintenance_score": "Оценка поддержки",
- "combined_score": "Общая оценка",
"security": "Безопасность"
},
"view_mode": {
@@ -1149,6 +1142,7 @@
"file_size_warning": "{size} превышает лимит в 250 КБ для сравнения",
"compare_versions": "сравнение",
"compare_versions_title": "Сравнить с последней версией",
+ "version_invalid_url_format": {},
"summary": "Сводка",
"deps_count": "зависимостей: {count}",
"dependencies": "Зависимости",
@@ -1313,5 +1307,9 @@
"p1": "Если вы столкнулись с какими-либо препятствиями при использовании {app}, пожалуйста, сообщите нам об этом, создав тикет (issue) в нашем {link}. Мы серьезно относимся к таким сообщениям и сделаем все возможное, чтобы исправить ситуацию.",
"link": "репозитории GitHub"
}
- }
+ },
+ "translation_status": {
+ "table": {}
+ },
+ "action_bar": {}
}
diff --git a/i18n/locales/ta-IN.json b/i18n/locales/ta-IN.json
index 335d4bc95..ce5e5d051 100644
--- a/i18n/locales/ta-IN.json
+++ b/i18n/locales/ta-IN.json
@@ -76,6 +76,10 @@
"links": "இணைப்புகள்",
"tap_to_search": "தேட தட்டவும்"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "அமைப்புகள்",
"tagline": "உங்கள் npmx அனுபவத்தைத் தனிப்பயனாக்கு",
@@ -122,6 +126,7 @@
"edit_on_github": "GitHub-ல் திருத்து",
"view_guide": "மொழிபெயர்ப்பு வழிகாட்டி"
},
+ "error": {},
"common": {
"loading": "ஏற்றுகிறது...",
"loading_more": "மேலும் ஏற்றுகிறது...",
@@ -148,6 +153,9 @@
"github": "GitHub-ல் காண்க"
}
},
+ "profile": {
+ "invite": {}
+ },
"package": {
"not_found": "தொகுப்பு கிடைக்கவில்லை",
"not_found_message": "தொகுப்பைக் கண்டுபிடிக்க இயலவில்லை.",
@@ -160,6 +168,7 @@
"version": "இந்தப் பதிப்பு நிறுத்தப்பட்டது.",
"no_reason": "காரணம் வழங்கப்படவில்லை"
},
+ "size_increase": {},
"replacement": {
"title": "இந்த சார்பு உங்களுக்குத் தேவைப்படாமல் இருக்கலாம்.",
"native": "இதை {replacement} மூலம் மாற்றலாம், Node {nodeVersion} முதல் கிடைக்கிறது.",
@@ -291,7 +300,8 @@
"more_tagged": "{count} மேலும் குறியிடப்பட்டவை",
"all_covered": "அனைத்து பதிப்புகளும் மேலே உள்ள குறிச்சொற்களால் உள்ளடக்கப்பட்டுள்ளன",
"deprecated_title": "{version} (நிறுத்தப்பட்டது)",
- "view_all": "{count} பதிப்பைக் காண்க | அனைத்து {count} பதிப்புகளையும் காண்க"
+ "view_all": "{count} பதிப்பைக் காண்க | அனைத்து {count} பதிப்புகளையும் காண்க",
+ "copy_alt": {}
},
"dependencies": {
"title": "சார்பு ({count}) | சார்புகள் ({count})",
@@ -345,7 +355,8 @@
"y_axis_label": "{granularity} {facet}",
"items": {
"downloads": "பதிவிறக்கங்கள்"
- }
+ },
+ "copy_alt": {}
},
"downloads": {
"title": "வாராந்திர பதிவிறக்கங்கள்",
@@ -438,7 +449,8 @@
"b": "{size} B",
"kb": "{size} kB",
"mb": "{size} MB"
- }
+ },
+ "download": {}
},
"connector": {
"modal": {
@@ -711,11 +723,7 @@
"downloads_month": "பதிவிறக்கங்கள்/மாதம்",
"downloads_year": "பதிவிறக்கங்கள்/ஆண்டு",
"published": "கடைசியாக வெளியிடப்பட்டது",
- "name": "பெயர்",
- "quality": "தரம்",
- "popularity": "பிரபலம்",
- "maintenance": "பராமரிப்பு",
- "score": "மதிப்பெண்"
+ "name": "பெயர்"
},
"columns": {
"title": "நெடுவரிசைகள்",
@@ -729,10 +737,6 @@
"published": "கடைசியாக வெளியிடப்பட்டது",
"maintainers": "பராமரிப்பாளர்கள்",
"keywords": "முக்கிய வார்த்தைகள்",
- "quality_score": "தர மதிப்பெண்",
- "popularity_score": "பிரபல மதிப்பெண்",
- "maintenance_score": "பராமரிப்பு மதிப்பெண்",
- "combined_score": "ஒருங்கிணைந்த மதிப்பெண்",
"security": "பாதுகாப்பு"
},
"view_mode": {
@@ -789,6 +793,8 @@
"managers": "மேலாளர்கள்"
}
},
+ "sponsors": {},
+ "oss_partners": {},
"team": {},
"contributors": {
"title": "{count} பங்களிப்பாளர் | {count} பங்களிப்பாளர்கள்",
@@ -809,6 +815,7 @@
"description": "அரட்டையடிக்கவும், கேள்விகள் கேட்கவும், யோசனைகளைப் பகிரவும்.",
"cta": "Discord-ல் சேரவும்"
},
+ "builders": {},
"follow": {
"title": "புதுப்பிப்புகளைப் பெறுங்கள்",
"description": "npmx பற்றிய சமீபத்திய தகவல்களைக் கண்டறியுங்கள்.",
@@ -981,7 +988,15 @@
"trends": {
"title": "வாராந்திர பதிவிறக்கங்கள்"
}
- }
+ },
+ "version_invalid_url_format": {},
+ "file_filter_option": {},
+ "filter": {}
+ },
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
},
"privacy_policy": {
"title": "தனியுரிமைக் கொள்கை",
@@ -1068,5 +1083,9 @@
"measures": {},
"limitations": {},
"contact": {}
- }
+ },
+ "translation_status": {
+ "table": {}
+ },
+ "action_bar": {}
}
diff --git a/i18n/locales/te-IN.json b/i18n/locales/te-IN.json
index 9c98d2507..17f2b36d4 100644
--- a/i18n/locales/te-IN.json
+++ b/i18n/locales/te-IN.json
@@ -54,6 +54,10 @@
"links": "లింక్లు",
"tap_to_search": "శోధించడానికి టాప్ చేయండి"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "సెట్టింగ్లు",
"tagline": "మీ npmx అనుభవాన్ని అనుకూలీకరించండి",
@@ -79,7 +83,8 @@
"label": "యాక్సెంట్ రంగులు"
},
"clear_accent": "యాక్సెంట్ రంగును క్లియర్ చేయండి",
- "translation_progress": "అనువాద పురోగతి"
+ "translation_progress": "అనువాద పురోగతి",
+ "background_themes": {}
},
"i18n": {
"missing_keys": "{count} అనువాదం లేదు | {count} అనువాదాలు లేవు",
@@ -89,6 +94,7 @@
"edit_on_github": "GitHub లో సవరించండి",
"view_guide": "అనువాద గైడ్"
},
+ "error": {},
"common": {
"loading": "లోడ్ అవుతున్నది...",
"loading_more": "మరిన్ని లోడ్ అవుతున్నది...",
@@ -115,6 +121,9 @@
"github": "GitHub లో వీక్షించండి"
}
},
+ "profile": {
+ "invite": {}
+ },
"package": {
"not_found": "ప్యాకేజ్ కనుగొనబడలేదు",
"not_found_message": "ప్యాకేజ్ కనుగొనబడలేదు.",
@@ -127,6 +136,7 @@
"version": "ఈ వెర్షన్ డిప్రికేట్ చేయబడింది.",
"no_reason": "కారణం అందించబడలేదు"
},
+ "size_increase": {},
"replacement": {
"title": "మీకు ఈ డిపెండెన్సీ అవసరం లేకపోవచ్చు.",
"native": "దీనిని {replacement} తో భర్తీ చేయవచ్చు, ఇది Node {nodeVersion} నుండి అందుబాటులో ఉంది.",
@@ -222,7 +232,8 @@
"more_tagged": "{count} మరిన్ని ట్యాగ్ చేయబడ్డాయి",
"all_covered": "అన్ని వెర్షన్లు పైన ఉన్న ట్యాగ్ల ద్వారా కవర్ చేయబడ్డాయి",
"deprecated_title": "{version} (డిప్రికేటెడ్)",
- "view_all": "{count} వెర్షన్లను వీక్షించండి | అన్ని {count} వెర్షన్లను వీక్షించండి"
+ "view_all": "{count} వెర్షన్లను వీక్షించండి | అన్ని {count} వెర్షన్లను వీక్షించండి",
+ "copy_alt": {}
},
"dependencies": {
"title": "డిపెండెన్సీలు ({count})",
@@ -271,7 +282,8 @@
"date_range_multiline": "{start}\nనుండి {end}",
"download_file": "{fileType} డౌన్లోడ్ చేయండి",
"toggle_annotator": "అనోటేటర్ను టాగుల్ చేయండి",
- "items": {}
+ "items": {},
+ "copy_alt": {}
},
"downloads": {
"title": "వారపు డౌన్లోడ్లు"
@@ -357,7 +369,8 @@
"name_asc": "పేరు (A-Z)",
"name_desc": "పేరు (Z-A)"
},
- "size": {}
+ "size": {},
+ "download": {}
},
"connector": {
"modal": {
@@ -623,11 +636,7 @@
"downloads_day": "డౌన్లోడ్లు/రోజు",
"downloads_month": "డౌన్లోడ్లు/నెల",
"downloads_year": "డౌన్లోడ్లు/సంవత్సరం",
- "name": "పేరు",
- "quality": "నాణ్యత",
- "popularity": "జనాదరణ",
- "maintenance": "నిర్వహణ",
- "score": "స్కోర్"
+ "name": "పేరు"
},
"columns": {
"title": "కాలమ్లు",
@@ -640,10 +649,6 @@
"downloads": "డౌన్లోడ్లు/వారం",
"maintainers": "నిర్వహకులు",
"keywords": "కీవర్డ్లు",
- "quality_score": "నాణ్యత స్కోర్",
- "popularity_score": "జనాదరణ స్కోర్",
- "maintenance_score": "నిర్వహణ స్కోర్",
- "combined_score": "సంయుక్త స్కోర్",
"security": "భద్రత"
},
"view_mode": {
@@ -700,6 +705,8 @@
"managers": "మేనేజర్లు"
}
},
+ "sponsors": {},
+ "oss_partners": {},
"team": {},
"contributors": {
"title": "కంట్రిబ్యూటర్లు",
@@ -720,6 +727,7 @@
"description": "చాట్ చేయండి, ప్రశ్నలు అడగండి, మరియు ఆలోచనలను పంచుకోండి.",
"cta": "Discord లో చేరండి"
},
+ "builders": {},
"follow": {
"title": "నవీకరణలతో ఉండండి",
"description": "npmx లో తాజా సమాచారాన్ని పొందండి.",
@@ -831,7 +839,15 @@
},
"values": {},
"trends": {}
- }
+ },
+ "version_invalid_url_format": {},
+ "file_filter_option": {},
+ "filter": {}
+ },
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
},
"privacy_policy": {
"cookies": {
@@ -852,5 +868,9 @@
"measures": {},
"limitations": {},
"contact": {}
- }
+ },
+ "translation_status": {
+ "table": {}
+ },
+ "action_bar": {}
}
diff --git a/i18n/locales/tr-TR.json b/i18n/locales/tr-TR.json
index c1b0a40b5..97308423f 100644
--- a/i18n/locales/tr-TR.json
+++ b/i18n/locales/tr-TR.json
@@ -574,7 +574,8 @@
"b": "{size} B",
"kb": "{size} kB",
"mb": "{size} MB"
- }
+ },
+ "download": {}
},
"connector": {
"modal": {
@@ -851,11 +852,7 @@
"downloads_month": "Aylık indirmeler",
"downloads_year": "Yıllık indirmeler",
"published": "Yayınlanma tarihi",
- "name": "Ad",
- "quality": "Kalite",
- "popularity": "Popülerlik",
- "maintenance": "Bakım",
- "score": "Skor"
+ "name": "Ad"
},
"columns": {
"title": "Sütunlar",
@@ -869,10 +866,6 @@
"published": "Yayınlandı",
"maintainers": "Geliştiriciler",
"keywords": "Anahtar kelimeler",
- "quality_score": "Kalite skoru",
- "popularity_score": "Popülerlik skoru",
- "maintenance_score": "Bakım skoru",
- "combined_score": "Birleşik skor",
"security": "Güvenlik"
},
"view_mode": {
@@ -1148,6 +1141,7 @@
"file_too_large": "Dosya çok büyük",
"file_size_warning": "Dosya boyutu {size}",
"compare_versions_title": "Sürümleri karşılaştır",
+ "version_invalid_url_format": {},
"summary": "Özet",
"deps_count": "{count} bağımlılık",
"dependencies": "Bağımlılıklar",
@@ -1312,5 +1306,9 @@
"p1": "Erişilebilirlik sorunları için:",
"link": "GitHub'da issue açın"
}
- }
+ },
+ "translation_status": {
+ "table": {}
+ },
+ "action_bar": {}
}
diff --git a/i18n/locales/uk-UA.json b/i18n/locales/uk-UA.json
index 8b8bb8a4e..0e0362aa8 100644
--- a/i18n/locales/uk-UA.json
+++ b/i18n/locales/uk-UA.json
@@ -592,7 +592,8 @@
"b": "{size} Б",
"kb": "{size} кБ",
"mb": "{size} МБ"
- }
+ },
+ "download": {}
},
"connector": {
"modal": {
@@ -871,11 +872,7 @@
"downloads_month": "Завантажень/міс",
"downloads_year": "Завантажень/рік",
"published": "Останнє опублікування",
- "name": "Ім'я",
- "quality": "Якість",
- "popularity": "Популярність",
- "maintenance": "Підтримка",
- "score": "Оцінка"
+ "name": "Ім'я"
},
"columns": {
"title": "Колонки",
@@ -889,10 +886,6 @@
"published": "Останнє опублікування",
"maintainers": "Супроводжувачі",
"keywords": "Ключові слова",
- "quality_score": "Оцінка якості",
- "popularity_score": "Оцінка популярності",
- "maintenance_score": "Оцінка підтримки",
- "combined_score": "Комбінована оцінка",
"security": "Безпечність"
},
"view_mode": {
@@ -1171,6 +1164,7 @@
"file_size_warning": "{size} перевищує ліміт 250 КБ для порівняння",
"compare_versions": "зміни",
"compare_versions_title": "Порівняти з останньою версією",
+ "version_invalid_url_format": {},
"version_selector_title": "Порівняти з версією",
"summary": "Підсумок",
"deps_count": "{count} залежн.",
@@ -1336,5 +1330,9 @@
"p1": "Якщо ви зіткнулися з бар'єром доступності на {app}, будь ласка, повідомте нам, відкривши задачу в нашому {link}. Ми серйозно ставимося до цих повідомлень і зробимо все можливе для їх вирішення.",
"link": "репозиторії GitHub"
}
- }
+ },
+ "translation_status": {
+ "table": {}
+ },
+ "action_bar": {}
}
diff --git a/i18n/locales/zh-CN.json b/i18n/locales/zh-CN.json
index e75d88979..de215ef4a 100644
--- a/i18n/locales/zh-CN.json
+++ b/i18n/locales/zh-CN.json
@@ -602,7 +602,8 @@
"b": "{size} B",
"kb": "{size} kB",
"mb": "{size} MB"
- }
+ },
+ "download": {}
},
"connector": {
"modal": {
@@ -882,11 +883,7 @@
"downloads_month": "每月下载量",
"downloads_year": "每年下载量",
"published": "最近发布",
- "name": "名称",
- "quality": "质量评分",
- "popularity": "受欢迎度",
- "maintenance": "维护程度",
- "score": "总分"
+ "name": "名称"
},
"columns": {
"title": "列",
@@ -900,10 +897,6 @@
"published": "最近发布",
"maintainers": "维护者",
"keywords": "关键词",
- "quality_score": "质量评分",
- "popularity_score": "受欢迎度",
- "maintenance_score": "维护程度",
- "combined_score": "总分",
"security": "安全性",
"selection": "选择软件包"
},
@@ -1184,6 +1177,7 @@
"file_size_warning": "{size} 超出了 250KB 的对比限制",
"compare_versions": "差异",
"compare_versions_title": "与最新版本对比",
+ "version_invalid_url_format": {},
"version_selector_title": "版本对比",
"summary": "摘要",
"deps_count": "{count} 个依赖",
@@ -1350,6 +1344,9 @@
"link": "GitHub 仓库"
}
},
+ "translation_status": {
+ "table": {}
+ },
"action_bar": {
"title": "操作栏",
"selection": "0 个项目被选中 | 1 个项目被选中 | {count} 个项目被选中",
diff --git a/i18n/locales/zh-TW.json b/i18n/locales/zh-TW.json
index 363820fd4..44b506468 100644
--- a/i18n/locales/zh-TW.json
+++ b/i18n/locales/zh-TW.json
@@ -602,7 +602,8 @@
"b": "{size} B",
"kb": "{size} kB",
"mb": "{size} MB"
- }
+ },
+ "download": {}
},
"connector": {
"modal": {
@@ -882,11 +883,7 @@
"downloads_month": "每月下載量",
"downloads_year": "每年下載量",
"published": "最近發布",
- "name": "名稱",
- "quality": "品質",
- "popularity": "受歡迎度",
- "maintenance": "維護程度",
- "score": "分數"
+ "name": "名稱"
},
"columns": {
"title": "欄位",
@@ -900,10 +897,6 @@
"published": "最近發布",
"maintainers": "維護者",
"keywords": "關鍵字",
- "quality_score": "品質分數",
- "popularity_score": "受歡迎度分數",
- "maintenance_score": "維護程度分數",
- "combined_score": "總分",
"security": "安全性",
"selection": "選擇套件"
},
@@ -1183,6 +1176,7 @@
"file_size_warning": "檔案大小 {size} 超過 250KB,無法比較",
"compare_versions": "差異",
"compare_versions_title": "比較最新版本",
+ "version_invalid_url_format": {},
"version_selector_title": "比較版本",
"summary": "摘要",
"deps_count": "{count} 個相依套件",
@@ -1349,6 +1343,9 @@
"link": "GitHub 儲存庫"
}
},
+ "translation_status": {
+ "table": {}
+ },
"action_bar": {
"title": "操作列",
"selection": "已選擇 0 個套件 | 已選擇 1 個套件 | {count} 個套件",
diff --git a/i18n/schema.json b/i18n/schema.json
index e1ae6a54e..1be4702dc 100644
--- a/i18n/schema.json
+++ b/i18n/schema.json
@@ -2772,18 +2772,6 @@
},
"name": {
"type": "string"
- },
- "quality": {
- "type": "string"
- },
- "popularity": {
- "type": "string"
- },
- "maintenance": {
- "type": "string"
- },
- "score": {
- "type": "string"
}
},
"additionalProperties": false
@@ -2824,18 +2812,6 @@
"keywords": {
"type": "string"
},
- "quality_score": {
- "type": "string"
- },
- "popularity_score": {
- "type": "string"
- },
- "maintenance_score": {
- "type": "string"
- },
- "combined_score": {
- "type": "string"
- },
"security": {
"type": "string"
},
diff --git a/modules/runtime/server/cache.ts b/modules/runtime/server/cache.ts
index 9e35b46b1..fd9cf1926 100644
--- a/modules/runtime/server/cache.ts
+++ b/modules/runtime/server/cache.ts
@@ -140,29 +140,6 @@ function getMockForUrl(url: string): MockResult | null {
}
}
- // npms.io API - return mock package score data
- if (host === 'api.npms.io') {
- const packageMatch = decodeURIComponent(pathname).match(/^\/v2\/package\/(.+)$/)
- if (packageMatch?.[1]) {
- return {
- data: {
- analyzedAt: new Date().toISOString(),
- collected: {
- metadata: { name: packageMatch[1] },
- },
- score: {
- final: 0.75,
- detail: {
- quality: 0.8,
- popularity: 0.7,
- maintenance: 0.75,
- },
- },
- },
- }
- }
- }
-
// jsdelivr CDN - return 404 for README files, etc.
if (host === 'cdn.jsdelivr.net') {
// Return null data which will cause a 404 - README files are optional
diff --git a/server/api/registry/badge/[type]/[...pkg].get.ts b/server/api/registry/badge/[type]/[...pkg].get.ts
index 2ce404e38..d6488e27e 100644
--- a/server/api/registry/badge/[type]/[...pkg].get.ts
+++ b/server/api/registry/badge/[type]/[...pkg].get.ts
@@ -11,7 +11,6 @@ import { handleApiError } from '#server/utils/error-handler'
const NPM_DOWNLOADS_API = 'https://api.npmjs.org/downloads/point'
const OSV_QUERY_API = 'https://api.osv.dev/v1/query'
const BUNDLEPHOBIA_API = 'https://bundlephobia.com/api/size'
-const NPMS_API = 'https://api.npms.io/v2/package'
const SafeStringSchema = v.pipe(v.string(), v.regex(/^[^<>"&]*$/, 'Invalid characters'))
const SafeColorSchema = v.pipe(
@@ -253,16 +252,6 @@ async function fetchDownloads(
}
}
-async function fetchNpmsScore(packageName: string) {
- try {
- const response = await fetch(`${NPMS_API}/${encodeURIComponent(packageName)}`)
- const data = await response.json()
- return data.score
- } catch {
- return null
- }
-}
-
async function fetchVulnerabilities(packageName: string, version: string): Promise {
try {
const response = await fetch(OSV_QUERY_API, {
@@ -400,30 +389,6 @@ const badgeStrategies = {
color: isDeprecated ? COLORS.red : COLORS.green,
}
},
-
- 'quality': async (pkgData: globalThis.Packument) => {
- const score = await fetchNpmsScore(pkgData.name)
- const value = score ? `${Math.round(score.detail.quality * 100)}%` : 'unknown'
- return { label: 'quality', value, color: COLORS.purple }
- },
-
- 'popularity': async (pkgData: globalThis.Packument) => {
- const score = await fetchNpmsScore(pkgData.name)
- const value = score ? `${Math.round(score.detail.popularity * 100)}%` : 'unknown'
- return { label: 'popularity', value, color: COLORS.cyan }
- },
-
- 'maintenance': async (pkgData: globalThis.Packument) => {
- const score = await fetchNpmsScore(pkgData.name)
- const value = score ? `${Math.round(score.detail.maintenance * 100)}%` : 'unknown'
- return { label: 'maintenance', value, color: COLORS.yellow }
- },
-
- 'score': async (pkgData: globalThis.Packument) => {
- const score = await fetchNpmsScore(pkgData.name)
- const value = score ? `${Math.round(score.final * 100)}%` : 'unknown'
- return { label: 'score', value, color: COLORS.blue }
- },
}
const BadgeTypeSchema = v.picklist(Object.keys(badgeStrategies) as [string, ...string[]])
diff --git a/shared/types/npm-registry.ts b/shared/types/npm-registry.ts
index 424a84ae7..3114ad015 100644
--- a/shared/types/npm-registry.ts
+++ b/shared/types/npm-registry.ts
@@ -128,7 +128,6 @@ export interface NpmSearchResponse {
export interface NpmSearchResult {
package: NpmSearchPackage
- score?: NpmSearchScore
searchScore?: number
/** Download counts (weekly/monthly) */
downloads?: {
@@ -189,15 +188,6 @@ export interface NpmSearchPackage {
license?: string
}
-export interface NpmSearchScore {
- final: number
- detail: {
- quality: number
- popularity: number
- maintenance: number
- }
-}
-
/**
* Attestations/provenance info on package version dist
* Present when package was published with provenance
diff --git a/shared/types/preferences.ts b/shared/types/preferences.ts
index f23f61c8c..886365aa4 100644
--- a/shared/types/preferences.ts
+++ b/shared/types/preferences.ts
@@ -15,10 +15,6 @@ export type ColumnId =
| 'updated'
| 'maintainers'
| 'keywords'
- | 'qualityScore'
- | 'popularityScore'
- | 'maintenanceScore'
- | 'combinedScore'
| 'security'
| 'selection'
@@ -45,34 +41,6 @@ export const DEFAULT_COLUMNS: ColumnConfig[] = [
{ id: 'updated', visible: true, sortable: true, width: '120px' },
{ id: 'maintainers', visible: false, sortable: false, width: '150px' },
{ id: 'keywords', visible: false, sortable: false, width: '200px' },
- {
- id: 'qualityScore',
- visible: false,
- sortable: true,
- width: '100px',
- disabled: true,
- },
- {
- id: 'popularityScore',
- visible: false,
- sortable: true,
- width: '100px',
- disabled: true,
- },
- {
- id: 'maintenanceScore',
- visible: false,
- sortable: true,
- width: '100px',
- disabled: true,
- },
- {
- id: 'combinedScore',
- visible: false,
- sortable: true,
- width: '100px',
- disabled: true,
- },
{
id: 'security',
visible: false,
@@ -90,10 +58,6 @@ export type SortKey =
| 'downloads-year'
| 'updated'
| 'name'
- | 'quality'
- | 'popularity'
- | 'maintenance'
- | 'score'
| 'relevance'
export type SortDirection = 'asc' | 'desc'
@@ -112,14 +76,6 @@ export type SortOption =
| 'updated-asc'
| 'name-asc'
| 'name-desc'
- | 'quality-desc'
- | 'quality-asc'
- | 'popularity-desc'
- | 'popularity-asc'
- | 'maintenance-desc'
- | 'maintenance-asc'
- | 'score-desc'
- | 'score-asc'
| 'relevance-desc'
| 'relevance-asc'
@@ -141,13 +97,6 @@ export const SORT_KEYS: SortKeyConfig[] = [
{ key: 'downloads-year', defaultDirection: 'desc', disabled: true },
{ key: 'updated', defaultDirection: 'desc' },
{ key: 'name', defaultDirection: 'asc' },
- // quality/popularity/maintenance: npm returns 1 for all, Algolia returns synthetic values.
- // Neither provider produces meaningful values for these.
- { key: 'quality', defaultDirection: 'desc', disabled: true },
- { key: 'popularity', defaultDirection: 'desc', disabled: true },
- { key: 'maintenance', defaultDirection: 'desc', disabled: true },
- // score.final === searchScore (identical to relevance), redundant sort key
- { key: 'score', defaultDirection: 'desc', disabled: true },
]
/**
@@ -178,10 +127,6 @@ const VALID_SORT_KEYS = new Set([
'downloads-year',
'updated',
'name',
- 'quality',
- 'popularity',
- 'maintenance',
- 'score',
])
/** Parse a SortOption into key and direction */
diff --git a/test/e2e/badge.spec.ts b/test/e2e/badge.spec.ts
index 4cf8a33d3..d147b77a2 100644
--- a/test/e2e/badge.spec.ts
+++ b/test/e2e/badge.spec.ts
@@ -29,14 +29,8 @@ test.describe('badge API', () => {
'created': 'created',
'maintainers': 'maintainers',
'deprecated': 'status',
- 'quality': 'quality',
- 'popularity': 'popularity',
- 'maintenance': 'maintenance',
- 'score': 'score',
}
- const percentageTypes = new Set(['quality', 'popularity', 'maintenance', 'score'])
-
for (const [type, expectedLabel] of Object.entries(badgeMap)) {
test.describe(`${type} badge`, () => {
test('renders correct label', async ({ page, baseURL }) => {
@@ -73,15 +67,6 @@ test.describe('badge API', () => {
expect(body).toContain(packageName)
expect(body).not.toContain(expectedLabel)
})
-
- if (percentageTypes.has(type)) {
- test('contains percentage value', async ({ page, baseURL }) => {
- const url = toLocalUrl(baseURL, `/api/registry/badge/${type}/vue`)
- const { body } = await fetchBadge(page, url)
-
- expect(body).toMatch(/\d+%|unknown/)
- })
- }
})
}
diff --git a/test/fixtures/mock-routes.cjs b/test/fixtures/mock-routes.cjs
index bd5527246..89141f584 100644
--- a/test/fixtures/mock-routes.cjs
+++ b/test/fixtures/mock-routes.cjs
@@ -373,36 +373,6 @@ function matchBundlephobiaApi(urlString) {
return null
}
-/**
- * @param {string} urlString
- * @returns {MockResponse | null}
- */
-function matchNpmsApi(urlString) {
- const url = new URL(urlString)
- const pathname = decodeURIComponent(url.pathname)
-
- const packageMatch = pathname.match(/^\/v2\/package\/(.+)$/)
- if (packageMatch && packageMatch[1]) {
- const packageName = packageMatch[1]
- return json({
- analyzedAt: new Date().toISOString(),
- collected: {
- metadata: { name: packageName },
- },
- score: {
- final: 0.75,
- detail: {
- quality: 0.8,
- popularity: 0.7,
- maintenance: 0.75,
- },
- },
- })
- }
-
- return null
-}
-
/**
* @param {string} _urlString
* @returns {MockResponse | null}
@@ -534,7 +504,6 @@ const routes = [
{ name: 'fast-npm-meta', pattern: 'https://npm.antfu.dev/**', match: matchFastNpmMeta },
{ name: 'JSR registry', pattern: 'https://jsr.io/**', match: matchJsrRegistry },
{ name: 'Bundlephobia API', pattern: 'https://bundlephobia.com/**', match: matchBundlephobiaApi },
- { name: 'npms.io API', pattern: 'https://api.npms.io/**', match: matchNpmsApi },
{ name: 'jsdelivr CDN', pattern: 'https://cdn.jsdelivr.net/**', match: matchJsdelivrCdn },
{
name: 'jsdelivr Data API',
diff --git a/test/fixtures/npm-registry/search/keywords-framework.json b/test/fixtures/npm-registry/search/keywords-framework.json
index 640d47abf..24cf4d0b6 100644
--- a/test/fixtures/npm-registry/search/keywords-framework.json
+++ b/test/fixtures/npm-registry/search/keywords-framework.json
@@ -54,14 +54,6 @@
"npm": "https://www.npmjs.com/package/vite"
}
},
- "score": {
- "final": 46.90461,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -126,14 +118,6 @@
"npm": "https://www.npmjs.com/package/express"
}
},
- "score": {
- "final": 46.49283,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -191,14 +175,6 @@
"npm": "https://www.npmjs.com/package/next"
}
},
- "score": {
- "final": 45.319336,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -257,14 +233,6 @@
"npm": "https://www.npmjs.com/package/hono"
}
},
- "score": {
- "final": 43.785503,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -310,14 +278,6 @@
"npm": "https://www.npmjs.com/package/socket.io-client"
}
},
- "score": {
- "final": 43.05912,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -363,14 +323,6 @@
"npm": "https://www.npmjs.com/package/socket.io"
}
},
- "score": {
- "final": 42.95133,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -443,14 +395,6 @@
"npm": "https://www.npmjs.com/package/preact"
}
},
- "score": {
- "final": 41.794792,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -488,14 +432,6 @@
"npm": "https://www.npmjs.com/package/connect"
}
},
- "score": {
- "final": 41.599102,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -546,14 +482,6 @@
"npm": "https://www.npmjs.com/package/bootstrap"
}
},
- "score": {
- "final": 41.536163,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -604,14 +532,6 @@
"npm": "https://www.npmjs.com/package/@envelop/core"
}
},
- "score": {
- "final": 41.44943,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -693,14 +613,6 @@
"npm": "https://www.npmjs.com/package/koa"
}
},
- "score": {
- "final": 41.321415,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -777,14 +689,6 @@
"npm": "https://www.npmjs.com/package/antd"
}
},
- "score": {
- "final": 40.321957,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -834,14 +738,6 @@
"npm": "https://www.npmjs.com/package/quill"
}
},
- "score": {
- "final": 39.642365,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -888,14 +784,6 @@
"npm": "https://www.npmjs.com/package/vitefu"
}
},
- "score": {
- "final": 39.552883,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -949,14 +837,6 @@
"npm": "https://www.npmjs.com/package/fastify"
}
},
- "score": {
- "final": 39.484047,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1017,14 +897,6 @@
"npm": "https://www.npmjs.com/package/@ckeditor/ckeditor5-core"
}
},
- "score": {
- "final": 38.754627,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1085,14 +957,6 @@
"npm": "https://www.npmjs.com/package/swiper"
}
},
- "score": {
- "final": 38.736828,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1147,14 +1011,6 @@
"npm": "https://www.npmjs.com/package/svelte"
}
},
- "score": {
- "final": 38.628876,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1216,14 +1072,6 @@
"npm": "https://www.npmjs.com/package/@hapi/hapi"
}
},
- "score": {
- "final": 38.406395,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1282,14 +1130,6 @@
"npm": "https://www.npmjs.com/package/@sveltejs/kit"
}
},
- "score": {
- "final": 37.343987,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1340,14 +1180,6 @@
"npm": "https://www.npmjs.com/package/@modern-js/utils"
}
},
- "score": {
- "final": 37.03993,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1396,14 +1228,6 @@
"npm": "https://www.npmjs.com/package/rtlcss"
}
},
- "score": {
- "final": 36.917053,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1454,14 +1278,6 @@
"npm": "https://www.npmjs.com/package/@modern-js/node-bundle-require"
}
},
- "score": {
- "final": 36.915737,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1522,14 +1338,6 @@
"npm": "https://www.npmjs.com/package/@ckeditor/ckeditor5-engine"
}
},
- "score": {
- "final": 36.902973,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1588,14 +1396,6 @@
"npm": "https://www.npmjs.com/package/ckeditor5"
}
},
- "score": {
- "final": 36.308823,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
diff --git a/test/fixtures/npm-registry/search/nuxt.json b/test/fixtures/npm-registry/search/nuxt.json
index bbd7e00f1..ead7fbc14 100644
--- a/test/fixtures/npm-registry/search/nuxt.json
+++ b/test/fixtures/npm-registry/search/nuxt.json
@@ -42,14 +42,6 @@
"npm": "https://www.npmjs.com/package/nuxt"
}
},
- "score": {
- "final": 1846.2391,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -96,14 +88,6 @@
"npm": "https://www.npmjs.com/package/@nuxt/vite-builder"
}
},
- "score": {
- "final": 436.68585,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -166,14 +150,6 @@
"npm": "https://www.npmjs.com/package/@nuxt/devtools"
}
},
- "score": {
- "final": 435.51923,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -220,14 +196,6 @@
"npm": "https://www.npmjs.com/package/@vueuse/nuxt"
}
},
- "score": {
- "final": 435.2237,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -274,14 +242,6 @@
"npm": "https://www.npmjs.com/package/@nuxt/schema"
}
},
- "score": {
- "final": 433.77365,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -323,14 +283,6 @@
"npm": "https://www.npmjs.com/package/@pinia/nuxt"
}
},
- "score": {
- "final": 430.91614,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -377,14 +329,6 @@
"npm": "https://www.npmjs.com/package/@nuxt/kit"
}
},
- "score": {
- "final": 429.22345,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -426,14 +370,6 @@
"npm": "https://www.npmjs.com/package/@nuxt/image"
}
},
- "score": {
- "final": 420.65933,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -475,14 +411,6 @@
"npm": "https://www.npmjs.com/package/@dxup/nuxt"
}
},
- "score": {
- "final": 419.1896,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -536,14 +464,6 @@
"npm": "https://www.npmjs.com/package/@nuxt/types"
}
},
- "score": {
- "final": 408.49863,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -590,14 +510,6 @@
"npm": "https://www.npmjs.com/package/@nuxt/test-utils"
}
},
- "score": {
- "final": 403.97028,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -639,14 +551,6 @@
"npm": "https://www.npmjs.com/package/@nuxt/nitro-server"
}
},
- "score": {
- "final": 396.81116,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -709,14 +613,6 @@
"npm": "https://www.npmjs.com/package/@nuxt/eslint-plugin"
}
},
- "score": {
- "final": 395.78107,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -758,14 +654,6 @@
"npm": "https://www.npmjs.com/package/@nuxt/cli"
}
},
- "score": {
- "final": 389.1604,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -828,14 +716,6 @@
"npm": "https://www.npmjs.com/package/@nuxt/icon"
}
},
- "score": {
- "final": 385.6585,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -898,14 +778,6 @@
"npm": "https://www.npmjs.com/package/@nuxt/eslint-config"
}
},
- "score": {
- "final": 384.345,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -947,14 +819,6 @@
"npm": "https://www.npmjs.com/package/@nuxt/fonts"
}
},
- "score": {
- "final": 380.06802,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1017,14 +881,6 @@
"npm": "https://www.npmjs.com/package/@nuxt/eslint"
}
},
- "score": {
- "final": 369.41135,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1062,14 +918,6 @@
"npm": "https://www.npmjs.com/package/nuxt-lodash"
}
},
- "score": {
- "final": 369.3478,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1123,14 +971,6 @@
"npm": "https://www.npmjs.com/package/@nuxt/telemetry"
}
},
- "score": {
- "final": 368.14578,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1173,14 +1013,6 @@
"npm": "https://www.npmjs.com/package/@sentry/nuxt"
}
},
- "score": {
- "final": 362.62573,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1234,14 +1066,6 @@
"npm": "https://www.npmjs.com/package/@nuxt/postcss8"
}
},
- "score": {
- "final": 358.2893,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1327,14 +1151,6 @@
"npm": "https://www.npmjs.com/package/@workflow/nuxt"
}
},
- "score": {
- "final": 355.45712,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1385,14 +1201,6 @@
"npm": "https://www.npmjs.com/package/@unocss/nuxt"
}
},
- "score": {
- "final": 354.82272,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1430,14 +1238,6 @@
"npm": "https://www.npmjs.com/package/nuxt-csurf"
}
},
- "score": {
- "final": 352.99255,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
diff --git a/test/fixtures/npm-registry/search/vue.json b/test/fixtures/npm-registry/search/vue.json
index 642509839..61ed10b9d 100644
--- a/test/fixtures/npm-registry/search/vue.json
+++ b/test/fixtures/npm-registry/search/vue.json
@@ -46,14 +46,6 @@
"npm": "https://www.npmjs.com/package/vue"
}
},
- "score": {
- "final": 1816.6842,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -100,14 +92,6 @@
"npm": "https://www.npmjs.com/package/@vue/reactivity"
}
},
- "score": {
- "final": 332.15305,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -154,14 +138,6 @@
"npm": "https://www.npmjs.com/package/@vue/compiler-sfc"
}
},
- "score": {
- "final": 328.89764,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -208,14 +184,6 @@
"npm": "https://www.npmjs.com/package/@vue/compiler-core"
}
},
- "score": {
- "final": 327.33432,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -262,14 +230,6 @@
"npm": "https://www.npmjs.com/package/@vue/compiler-ssr"
}
},
- "score": {
- "final": 325.90848,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -316,14 +276,6 @@
"npm": "https://www.npmjs.com/package/@vue/compiler-dom"
}
},
- "score": {
- "final": 324.55,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -370,14 +322,6 @@
"npm": "https://www.npmjs.com/package/@vue/runtime-core"
}
},
- "score": {
- "final": 312.23926,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -424,14 +368,6 @@
"npm": "https://www.npmjs.com/package/@vue/runtime-dom"
}
},
- "score": {
- "final": 311.60114,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -478,14 +414,6 @@
"npm": "https://www.npmjs.com/package/@vue/shared"
}
},
- "score": {
- "final": 311.49493,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -532,14 +460,6 @@
"npm": "https://www.npmjs.com/package/@vue/server-renderer"
}
},
- "score": {
- "final": 310.99023,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -585,14 +505,6 @@
"npm": "https://www.npmjs.com/package/vue-router"
}
},
- "score": {
- "final": 293.8123,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -634,14 +546,6 @@
"npm": "https://www.npmjs.com/package/vue-template-compiler"
}
},
- "score": {
- "final": 273.08698,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -679,14 +583,6 @@
"npm": "https://www.npmjs.com/package/@vue/reactivity-transform"
}
},
- "score": {
- "final": 272.5972,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -737,14 +633,6 @@
"npm": "https://www.npmjs.com/package/@floating-ui/vue"
}
},
- "score": {
- "final": 271.86765,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -822,14 +710,6 @@
"npm": "https://www.npmjs.com/package/@vue/compiler-vue2"
}
},
- "score": {
- "final": 269.01633,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -876,14 +756,6 @@
"npm": "https://www.npmjs.com/package/@vue/compat"
}
},
- "score": {
- "final": 266.73676,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -930,14 +802,6 @@
"npm": "https://www.npmjs.com/package/vue-eslint-parser"
}
},
- "score": {
- "final": 265.0513,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -988,14 +852,6 @@
"npm": "https://www.npmjs.com/package/vue-tsc"
}
},
- "score": {
- "final": 262.94705,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1058,14 +914,6 @@
"npm": "https://www.npmjs.com/package/@vitejs/plugin-vue"
}
},
- "score": {
- "final": 262.3455,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1114,14 +962,6 @@
"npm": "https://www.npmjs.com/package/@intlify/vue-i18n-extensions"
}
},
- "score": {
- "final": 260.7798,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1163,14 +1003,6 @@
"npm": "https://www.npmjs.com/package/vue-loader"
}
},
- "score": {
- "final": 259.08713,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1232,14 +1064,6 @@
"npm": "https://www.npmjs.com/package/vue-jest"
}
},
- "score": {
- "final": 257.40042,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1306,14 +1130,6 @@
"npm": "https://www.npmjs.com/package/@tiptap/vue-3"
}
},
- "score": {
- "final": 257.2942,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1367,14 +1183,6 @@
"npm": "https://www.npmjs.com/package/@vue/test-utils"
}
},
- "score": {
- "final": 256.06604,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -1417,14 +1225,6 @@
"npm": "https://www.npmjs.com/package/@cspell/dict-vue"
}
},
- "score": {
- "final": 255.1951,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
diff --git a/test/fixtures/users/qwerzl.json b/test/fixtures/users/qwerzl.json
index 412be24c4..7da6ad852 100644
--- a/test/fixtures/users/qwerzl.json
+++ b/test/fixtures/users/qwerzl.json
@@ -46,14 +46,6 @@
"npm": "https://www.npmjs.com/package/unifont"
}
},
- "score": {
- "final": 87.64574,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
@@ -103,14 +95,6 @@
"npm": "https://www.npmjs.com/package/fontless"
}
},
- "score": {
- "final": 75.63318,
- "detail": {
- "popularity": 1,
- "quality": 1,
- "maintenance": 1
- }
- },
"flags": {
"insecure": 0
}
diff --git a/test/nuxt/a11y.spec.ts b/test/nuxt/a11y.spec.ts
index d5827c61e..35df44b80 100644
--- a/test/nuxt/a11y.spec.ts
+++ b/test/nuxt/a11y.spec.ts
@@ -775,10 +775,6 @@ describe('component accessibility audits', () => {
username: 'yyx990803',
},
},
- score: {
- final: 0.9,
- detail: { quality: 0.9, popularity: 0.9, maintenance: 0.9 },
- },
searchScore: 100000,
}
@@ -1385,10 +1381,6 @@ describe('component accessibility audits', () => {
links: {},
publisher: { username: 'yyx990803' },
},
- score: {
- final: 0.9,
- detail: { quality: 0.9, popularity: 0.9, maintenance: 0.9 },
- },
searchScore: 100000,
},
{
@@ -1401,10 +1393,6 @@ describe('component accessibility audits', () => {
links: {},
publisher: { username: 'fb' },
},
- score: {
- final: 0.9,
- detail: { quality: 0.9, popularity: 0.9, maintenance: 0.9 },
- },
searchScore: 90000,
},
]
@@ -1680,10 +1668,6 @@ describe('component accessibility audits', () => {
links: {},
publisher: { username: 'yyx990803' },
},
- score: {
- final: 0.9,
- detail: { quality: 0.9, popularity: 0.9, maintenance: 0.9 },
- },
searchScore: 100000,
},
]
@@ -1744,10 +1728,6 @@ describe('component accessibility audits', () => {
},
downloads: { weekly: 50000000 },
updated: '2024-01-01T00:00:00.000Z',
- score: {
- final: 0.95,
- detail: { quality: 0.95, popularity: 0.99, maintenance: 0.9 },
- },
searchScore: 99999,
}
@@ -3835,10 +3815,6 @@ describe('background theme accessibility', () => {
links: {},
publisher: { username: 'evan' },
},
- score: {
- final: 0.9,
- detail: { quality: 0.9, popularity: 0.9, maintenance: 0.9 },
- },
searchScore: 100000,
}
diff --git a/test/nuxt/composables/structured-filters.spec.ts b/test/nuxt/composables/structured-filters.spec.ts
index fbea72fc4..524359ebe 100644
--- a/test/nuxt/composables/structured-filters.spec.ts
+++ b/test/nuxt/composables/structured-filters.spec.ts
@@ -24,7 +24,6 @@ function createPackage(overrides: {
downloads: { weekly: overrides.downloads ?? 0 },
updated: overrides.updated ?? '2024-01-01T00:00:00.000Z',
flags: { insecure: overrides.insecure ?? 0 },
- score: { final: 0.5, detail: { quality: 0.5, popularity: 0.5, maintenance: 0.5 } },
searchScore: 1000,
}
}
diff --git a/test/unit/shared/types/index.spec.ts b/test/unit/shared/types/index.spec.ts
index 031162ad7..d364fe7eb 100644
--- a/test/unit/shared/types/index.spec.ts
+++ b/test/unit/shared/types/index.spec.ts
@@ -46,14 +46,6 @@ describe('npm registry types', () => {
npm: 'https://www.npmjs.com/package/test-package',
},
},
- score: {
- final: 0.9,
- detail: {
- quality: 0.9,
- popularity: 0.8,
- maintenance: 0.95,
- },
- },
searchScore: 100000,
},
],
@@ -64,6 +56,5 @@ describe('npm registry types', () => {
expect(response.total).toBe(1)
expect(response.objects[0]?.package.name).toBe('test-package')
- expect(response.objects[0]?.score?.final).toBe(0.9)
})
})
diff --git a/test/unit/shared/types/preferences.spec.ts b/test/unit/shared/types/preferences.spec.ts
index 07b6e0da6..9d928c57e 100644
--- a/test/unit/shared/types/preferences.spec.ts
+++ b/test/unit/shared/types/preferences.spec.ts
@@ -16,8 +16,6 @@ describe('parseSortOption', () => {
['updated-asc', 'updated', 'asc'],
['name-asc', 'name', 'asc'],
['name-desc', 'name', 'desc'],
- ['quality-desc', 'quality', 'desc'],
- ['score-asc', 'score', 'asc'],
['relevance-desc', 'relevance', 'desc'],
['relevance-asc', 'relevance', 'asc'],
])('parses "%s" to key="%s" direction="%s"', (option, expectedKey, expectedDirection) => {
@@ -45,7 +43,6 @@ describe('buildSortOption', () => {
['downloads-week', 'asc', 'downloads-week-asc'],
['updated', 'desc', 'updated-desc'],
['name', 'asc', 'name-asc'],
- ['quality', 'desc', 'quality-desc'],
['relevance', 'desc', 'relevance-desc'],
])('builds "%s" + "%s" to "%s"', (key, direction, expected) => {
expect(buildSortOption(key, direction)).toBe(expected)
@@ -70,10 +67,6 @@ describe('parseSortOption and buildSortOption roundtrip', () => {
'downloads-month-asc',
'updated-desc',
'name-asc',
- 'quality-desc',
- 'popularity-asc',
- 'maintenance-desc',
- 'score-asc',
'relevance-desc',
'relevance-asc',
])('roundtrips "%s" correctly', option => {
From 14538da9ee9a15f563460367fd911eb80d26407c Mon Sep 17 00:00:00 2001
From: Atriiy
Date: Tue, 24 Mar 2026 07:20:53 +0800
Subject: [PATCH 14/38] fix(ui): improve search page UX (#2115)
Co-authored-by: Willow (GHOST)
---
app/components/Package/List.vue | 29 ++++++++--
app/composables/useGlobalSearch.ts | 11 +++-
app/pages/search.vue | 91 ++++++++++++++++++------------
3 files changed, 89 insertions(+), 42 deletions(-)
diff --git a/app/components/Package/List.vue b/app/components/Package/List.vue
index bf9e1c2ee..4e8f75536 100644
--- a/app/components/Package/List.vue
+++ b/app/components/Package/List.vue
@@ -112,6 +112,12 @@ watch(
{ immediate: true },
)
+// Tracks how many items came from the last new-search batch.
+// Items at index < newSearchBatchSize are from the new search → no animation.
+// Items at index >= newSearchBatchSize were loaded via scroll → animate with stagger.
+// Using an index threshold avoids any timing dependency on nextTick / virtual list paint.
+const newSearchBatchSize = shallowRef(Infinity)
+
// Reset scroll state when results change significantly (new search)
watch(
() => props.results,
@@ -123,6 +129,7 @@ watch(
(oldResults.length > 0 && newResults[0]?.package.name !== oldResults[0]?.package.name)
) {
hasScrolledToInitial.value = false
+ newSearchBatchSize.value = newResults.length
}
},
)
@@ -172,9 +179,16 @@ defineExpose({
:show-publisher="showPublisher"
:index="index"
:search-query="searchQuery"
- class="motion-safe:animate-fade-in motion-safe:animate-fill-both"
+ :class="
+ index >= newSearchBatchSize &&
+ 'motion-safe:animate-fade-in motion-safe:animate-fill-both'
+ "
+ :style="
+ index >= newSearchBatchSize
+ ? { animationDelay: `${Math.min((index - newSearchBatchSize) * 0.02, 0.3)}s` }
+ : {}
+ "
:filters="filters"
- :style="{ animationDelay: `${Math.min(index * 0.02, 0.3)}s` }"
@click-keyword="emit('clickKeyword', $event)"
/>
@@ -224,8 +238,15 @@ defineExpose({
:show-publisher="showPublisher"
:index="index"
:search-query="searchQuery"
- class="motion-safe:animate-fade-in motion-safe:animate-fill-both"
- :style="{ animationDelay: `${Math.min(index * 0.02, 0.3)}s` }"
+ :class="
+ index >= newSearchBatchSize &&
+ 'motion-safe:animate-fade-in motion-safe:animate-fill-both'
+ "
+ :style="
+ index >= newSearchBatchSize
+ ? { animationDelay: `${Math.min((index - newSearchBatchSize) * 0.02, 0.3)}s` }
+ : {}
+ "
:filters="filters"
@click-keyword="emit('clickKeyword', $event)"
/>
diff --git a/app/composables/useGlobalSearch.ts b/app/composables/useGlobalSearch.ts
index 77367a049..45bb47848 100644
--- a/app/composables/useGlobalSearch.ts
+++ b/app/composables/useGlobalSearch.ts
@@ -4,6 +4,8 @@ import { debounce } from 'perfect-debounce'
// Pages that have their own local filter using ?q
const pagesWithLocalFilter = new Set(['~username', 'org'])
+const SEARCH_DEBOUNCE_MS = 100
+
export function useGlobalSearch(place: 'header' | 'content' = 'content') {
const { settings } = useSettings()
const { searchProvider } = useSearchProvider()
@@ -27,10 +29,14 @@ export function useGlobalSearch(place: 'header' | 'content' = 'content') {
// Syncs instantly when instantSearch is on, but only on Enter press when off
const committedSearchQuery = useState('committed-search-query', () => searchQuery.value)
+ const commitSearchQuery = debounce((val: string) => {
+ committedSearchQuery.value = val
+ }, SEARCH_DEBOUNCE_MS)
+
// This is basically doing instant search as user types
watch(searchQuery, val => {
if (settings.value.instantSearch) {
- committedSearchQuery.value = val
+ commitSearchQuery(val)
}
})
@@ -71,10 +77,11 @@ export function useGlobalSearch(place: 'header' | 'content' = 'content') {
})
}
- const updateUrlQuery = debounce(updateUrlQueryImpl, 250)
+ const updateUrlQuery = debounce(updateUrlQueryImpl, SEARCH_DEBOUNCE_MS)
function flushUpdateUrlQuery() {
// Commit the current query when explicitly submitted (Enter pressed)
+ commitSearchQuery.cancel()
committedSearchQuery.value = searchQuery.value
// When instant search is off the debounce queue is empty, so call directly
if (!settings.value.instantSearch) {
diff --git a/app/pages/search.vue b/app/pages/search.vue
index a19565977..3b2b47892 100644
--- a/app/pages/search.vue
+++ b/app/pages/search.vue
@@ -350,13 +350,19 @@ const canPublishToScope = computed(() => {
// Show claim prompt when valid name, available, either not connected or connected and has permission
const showClaimPrompt = computed(() => {
- return (
- isValidPackageName.value &&
- packageAvailability.value?.available === true &&
- packageAvailability.value.name === query.value.trim() &&
- (!isConnected.value || (isConnected.value && canPublishToScope.value)) &&
- status.value !== 'pending'
- )
+ if (!isValidPackageName.value) return false
+ if (isConnected.value && !canPublishToScope.value) return false
+
+ const avail = packageAvailability.value
+
+ // Confirmed: availability result matches current committed query
+ if (avail?.available === true && avail.name === committedQuery.value.trim()) return true
+
+ // Pending: a new fetch is in flight — keep the claim visible if the last known
+ // result was "available" so it doesn't flicker until new data arrives
+ if (status.value === 'pending' && avail?.available === true) return true
+
+ return false
})
const claimPackageModalRef = useTemplateRef('claimPackageModalRef')
@@ -707,22 +713,28 @@ onBeforeUnmount(() => {
status === 'success'
"
>
-
-
-
+
+
+
+
{
|