diff --git a/app/components/PackageReplacement.vue b/app/components/PackageReplacement.vue new file mode 100644 index 000000000..4d0af6382 --- /dev/null +++ b/app/components/PackageReplacement.vue @@ -0,0 +1,71 @@ + + + + + + + {{ $t('package.replacement.title') }} + + + {{ message }} + + {{ $t('package.replacement.mdn') }} + + + + {{ $t('package.replacement.learn_more') }} + + + + + diff --git a/app/composables/useModuleReplacement.ts b/app/composables/useModuleReplacement.ts new file mode 100644 index 000000000..e97645068 --- /dev/null +++ b/app/composables/useModuleReplacement.ts @@ -0,0 +1,6 @@ +import type { ModuleReplacement } from 'module-replacements' + +/** @public */ +export function useModuleReplacement(packageName: MaybeRefOrGetter) { + return useLazyFetch(() => `/api/replacements/${toValue(packageName)}`) +} diff --git a/app/pages/[...package].vue b/app/pages/[...package].vue index 7b48e6fe5..8817a0ca4 100644 --- a/app/pages/[...package].vue +++ b/app/pages/[...package].vue @@ -66,6 +66,7 @@ const { onMounted(() => fetchInstallSize()) const { data: packageAnalysis } = usePackageAnalysis(packageName, requestedVersion) +const { data: moduleReplacement } = useModuleReplacement(packageName) const { data: pkg, status, error } = await usePackage(packageName, requestedVersion) const resolvedVersion = computed(() => pkg.value?.resolvedVersion ?? null) @@ -1201,8 +1202,10 @@ function handleClick(event: MouseEvent) { - - + + + + ( + all.moduleReplacements.map(r => [r.moduleName, r]), +) + +export default defineEventHandler((event): ModuleReplacement | null => { + const pkg = getRouterParam(event, 'pkg') + if (!pkg) return null + return replacementMap.get(pkg) ?? null +})
+ {{ message }} + + {{ $t('package.replacement.mdn') }} + + + + {{ $t('package.replacement.learn_more') }} + + +