11<script setup lang="ts">
2- import type { ModuleReplacement } from ' module-replacements'
2+ import type { ModuleReplacement , KnownUrl } from ' module-replacements'
33
44const props = defineProps <{
55 replacement: ModuleReplacement
66}>()
77
8- const mdnUrl = computed (() => {
9- if (props .replacement .type !== ' native' || ! props .replacement .mdnPath ) return null
10- return ` https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/${props .replacement .mdnPath } `
11- })
8+ const resolveUrl = (url ? : KnownUrl ) => {
9+ if (! url ) return null
10+ if (typeof url === ' string' ) return url
11+
12+ switch (url .type ) {
13+ case ' mdn' :
14+ case ' node' :
15+ return ` https://nodejs.org/${url .id } `
16+ case ' e18e' :
17+ return ` https://e18e.dev/docs/replacements/${url .id } `
18+ default :
19+ return null
20+ }
21+ }
1222
13- const docPath = computed (() => {
14- if (props .replacement .type !== ' documented' || ! props .replacement .docPath ) return null
15- return ` https://e18e.dev/docs/replacements/${props .replacement .docPath }.html `
23+ const externalUrl = computed (() => resolveUrl (props .replacement .url ))
24+
25+ const nodeVersion = computed (() => {
26+ const nodeEngine = props .replacement .engines ?.find (e => e .engine === ' node' )
27+ return nodeEngine ?.minVersion || null
1628})
1729 </script >
1830
@@ -31,10 +43,11 @@ const docPath = computed(() => {
3143 scope =" global"
3244 >
3345 <template #replacement >
34- {{ replacement.replacement }}
46+ <code v-if =" replacement.nodeFeatureId" >{{ replacement.nodeFeatureId.moduleName }}</code >
47+ <span v-else >{{ replacement.id }}</span >
3548 </template >
3649 <template #nodeVersion >
37- {{ replacement. nodeVersion }}
50+ {{ nodeVersion || 'unknown' }}
3851 </template >
3952 </i18n-t >
4053 <i18n-t
@@ -54,14 +67,17 @@ const docPath = computed(() => {
5467 </a >
5568 </template >
5669 <template #replacement >
57- {{ replacement.replacement }}
70+ {{ replacement.id }}
5871 </template >
5972 </i18n-t >
6073 <i18n-t
6174 v-else-if =" replacement.type === 'documented'"
6275 keypath =" package.replacement.documented"
6376 scope =" global"
6477 >
78+ <template #replacement >
79+ {{ replacement.replacementModule }}
80+ </template >
6581 <template #community >
6682 <a
6783 href =" https://e18e.dev/docs/replacements/"
@@ -74,22 +90,15 @@ const docPath = computed(() => {
7490 </a >
7591 </template >
7692 </i18n-t >
93+ <template v-else-if =" replacement .type === ' removal' " >
94+ {{ replacement.description }}
95+ </template >
7796 <template v-else >
7897 {{ $t('package.replacement.none') }}
7998 </template >
8099 <a
81- v-if =" mdnUrl"
82- :href =" mdnUrl"
83- target =" _blank"
84- rel =" noopener noreferrer"
85- class =" inline-flex items-center gap-1 ms-1 underline underline-offset-4 decoration-amber-600/60 dark:decoration-amber-400/50 hover:decoration-fg transition-colors"
86- >
87- {{ $t('package.replacement.mdn') }}
88- <span class =" i-lucide:external-link w-3 h-3" aria-hidden =" true" />
89- </a >
90- <a
91- v-if =" docPath"
92- :href =" docPath"
100+ v-if =" externalUrl"
101+ :href =" externalUrl"
93102 target =" _blank"
94103 rel =" noopener noreferrer"
95104 class =" inline-flex items-center gap-1 ms-1 underline underline-offset-4 decoration-amber-600/60 dark:decoration-amber-400/50 hover:decoration-fg transition-colors"
0 commit comments