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 packageName: string
@@ -14,9 +14,27 @@ const emit = defineEmits<{
1414 addNoDep: []
1515}>()
1616
17- const docUrl = computed (() => {
18- if (props .replacement .type !== ' documented' || ! props .replacement .docPath ) return null
19- return ` https://e18e.dev/docs/replacements/${props .replacement .docPath }.html `
17+ const resolveUrl = (url ? : KnownUrl ) => {
18+ if (! url ) return null
19+ if (typeof url === ' string' ) return url
20+
21+ switch (url .type ) {
22+ case ' mdn' :
23+ return ` https://developer.mozilla.org/en-US/docs/${url .id } `
24+ case ' node' :
25+ return ` https://nodejs.org/${url .id } `
26+ case ' e18e' :
27+ return ` https://e18e.dev/docs/replacements/${url .id } `
28+ default :
29+ return null
30+ }
31+ }
32+
33+ const docUrl = computed (() => resolveUrl (props .replacement .url ))
34+
35+ const nodeVersion = computed (() => {
36+ const nodeEngine = props .replacement .engines ?.find (e => e .engine === ' nodejs' )
37+ return nodeEngine ?.minVersion || null
2038})
2139 </script >
2240
@@ -39,30 +57,34 @@ const docUrl = computed(() => {
3957 <template v-if =" replacement .type === ' native' " >
4058 {{
4159 $t('package.replacement.native', {
42- replacement: replacement.replacement,
43- nodeVersion: replacement.nodeVersion,
60+ replacement:
61+ replacement.nodeFeatureId?.moduleName || replacement.description || replacement.id,
62+ nodeVersion: nodeVersion || 'unknown',
4463 })
4564 }}
4665 </template >
4766 <template v-else-if =" replacement .type === ' simple' " >
4867 {{
4968 $t('package.replacement.simple', {
50- replacement: replacement.replacement ,
69+ replacement: replacement.description ,
5170 community: $t('package.replacement.community'),
5271 })
5372 }}
5473 </template >
5574 <template v-else-if =" replacement .type === ' documented' " >
5675 {{
5776 $t('package.replacement.documented', {
77+ replacement: replacement.replacementModule,
5878 community: $t('package.replacement.community'),
5979 })
6080 }}
6181 </template >
82+ <template v-else-if =" replacement .type === ' removal' " >
83+ {{ replacement.description }}
84+ </template >
6285 </p >
6386 </div >
6487
65- <!-- No dependency action button -->
6688 <ButtonBase
6789 v-if =" variant === 'nodep' && showAction !== false"
6890 size =" small"
@@ -72,8 +94,13 @@ const docUrl = computed(() => {
7294 {{ $t('package.replacement.consider_no_dep') }}
7395 </ButtonBase >
7496
75- <!-- Info link -->
76- <LinkBase v-else-if =" docUrl" :to =" docUrl" variant =" button-secondary" size =" small" >
97+ <LinkBase
98+ v-else-if =" docUrl"
99+ :to =" docUrl"
100+ variant =" button-secondary"
101+ size =" small"
102+ target =" _blank"
103+ >
77104 {{ $t('package.replacement.learn_more') }}
78105 </LinkBase >
79106 </div >
0 commit comments