Skip to content

Commit 59ac18c

Browse files
committed
wip
1 parent ad27978 commit 59ac18c

2 files changed

Lines changed: 35 additions & 26 deletions

File tree

app/components/Package/Replacement.vue

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,30 @@
11
<script setup lang="ts">
2-
import type { ModuleReplacement } from 'module-replacements'
2+
import type { ModuleReplacement, KnownUrl } from 'module-replacements'
33
44
const 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"

server/api/replacements/[...pkg].get.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export default defineEventHandler((event): ModuleReplacement | null => {
55
if (!pkg) return null
66
const mapping = all.mappings[pkg]
77
if (!mapping) return null
8-
const replacement = mapping.replacements[0]
9-
if (!replacement) return null
10-
return all.replacements[replacement] ?? null
8+
const replacementId = mapping.replacements[0]
9+
if (!replacementId) return null
10+
return all.replacements[replacementId] ?? null
1111
})

0 commit comments

Comments
 (0)