Skip to content

Commit ed19aab

Browse files
authored
Merge branch 'main' into fix-compare-deps
2 parents 4164058 + 75d1bf2 commit ed19aab

File tree

10 files changed

+90
-5
lines changed

10 files changed

+90
-5
lines changed

app/pages/search.vue

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -581,12 +581,21 @@ function handleResultsKeydown(e: KeyboardEvent) {
581581
onKeyDown(['ArrowDown', 'ArrowUp', 'Enter'], handleResultsKeydown)
582582
583583
useSeoMeta({
584-
title: () => (query.value ? `Search: ${query.value} - npmx` : 'Search Packages - npmx'),
584+
title: () =>
585+
`${query.value ? $t('search.title_search', { search: query.value }) : $t('search.title_packages')} - npmx`,
586+
description: () =>
587+
query.value
588+
? $t('search.meta_description', { search: query.value })
589+
: $t('search.meta_description_packages'),
585590
})
586591
587592
defineOgImageComponent('Default', {
588-
title: 'npmx',
589-
description: () => (query.value ? `Search results for "${query.value}"` : 'Search npm packages'),
593+
title: () =>
594+
`${query.value ? $t('search.title_search', { search: query.value }) : $t('search.title_packages')} - npmx`,
595+
description: () =>
596+
query.value
597+
? $t('search.meta_description', { search: query.value })
598+
: $t('search.meta_description_packages'),
590599
primaryColor: '#60a5fa',
591600
})
592601
</script>

app/plugins/fix.client.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export default defineNuxtPlugin({
2+
enforce: 'pre',
3+
setup(nuxtApp) {
4+
// TODO: investigate why this is needed
5+
nuxtApp.payload.data ||= {}
6+
},
7+
})

i18n/locales/en.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828
"updating": "(updating...)",
2929
"no_results": "No packages found for \"{query}\"",
3030
"title": "search",
31+
"title_search": "search: {search}",
32+
"title_packages": "search packages",
33+
"meta_description": "Search results for '{search}'",
34+
"meta_description_packages": "Search npm packages",
3135
"not_taken": "{name} is not taken",
3236
"claim_prompt": "Claim this package name on npm",
3337
"claim_button": "Claim \"{name}\"",

i18n/locales/es.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828
"updating": "(actualizando...)",
2929
"no_results": "No se encontraron paquetes para \"{query}\"",
3030
"title": "búsqueda",
31+
"title_search": "búsqueda: {search}",
32+
"title_packages": "búsqueda de paquetes",
33+
"meta_description": "Resultado de la búsqueda para '{search}'",
34+
"meta_description_packages": "Búsqueda de paquetes npm",
3135
"not_taken": "{name} no está ocupado",
3236
"claim_prompt": "Reclamar este nombre de paquete en npm",
3337
"claim_button": "Reclamar \"{name}\"",

lunaria/files/en-GB.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828
"updating": "(updating...)",
2929
"no_results": "No packages found for \"{query}\"",
3030
"title": "search",
31+
"title_search": "search: {search}",
32+
"title_packages": "search packages",
33+
"meta_description": "Search results for '{search}'",
34+
"meta_description_packages": "Search npm packages",
3135
"not_taken": "{name} is not taken",
3236
"claim_prompt": "Claim this package name on npm",
3337
"claim_button": "Claim \"{name}\"",

lunaria/files/en-US.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828
"updating": "(updating...)",
2929
"no_results": "No packages found for \"{query}\"",
3030
"title": "search",
31+
"title_search": "search: {search}",
32+
"title_packages": "search packages",
33+
"meta_description": "Search results for '{search}'",
34+
"meta_description_packages": "Search npm packages",
3135
"not_taken": "{name} is not taken",
3236
"claim_prompt": "Claim this package name on npm",
3337
"claim_button": "Claim \"{name}\"",

lunaria/files/es-419.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828
"updating": "(actualizando...)",
2929
"no_results": "No se encontraron paquetes para \"{query}\"",
3030
"title": "búsqueda",
31+
"title_search": "búsqueda: {search}",
32+
"title_packages": "búsqueda de paquetes",
33+
"meta_description": "Resultado de la búsqueda para '{search}'",
34+
"meta_description_packages": "Búsqueda de paquetes npm",
3135
"not_taken": "{name} no está ocupado",
3236
"claim_prompt": "Reclamar este nombre de paquete en npm",
3337
"claim_button": "Reclamar \"{name}\"",

lunaria/files/es-ES.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828
"updating": "(actualizando...)",
2929
"no_results": "No se encontraron paquetes para \"{query}\"",
3030
"title": "búsqueda",
31+
"title_search": "búsqueda: {search}",
32+
"title_packages": "búsqueda de paquetes",
33+
"meta_description": "Resultado de la búsqueda para '{search}'",
34+
"meta_description_packages": "Búsqueda de paquetes npm",
3135
"not_taken": "{name} no está ocupado",
3236
"claim_prompt": "Reclamar este nombre de paquete en npm",
3337
"claim_button": "Reclamar \"{name}\"",

modules/isr-fallback.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { readFileSync, writeFileSync } from 'node:fs'
2+
import { resolve } from 'node:path'
3+
import { defineNuxtModule } from 'nuxt/kit'
4+
import { provider } from 'std-env'
5+
6+
export default defineNuxtModule({
7+
meta: {
8+
name: 'isr-fallback',
9+
},
10+
setup(_, nuxt) {
11+
if (provider !== 'vercel') {
12+
return
13+
}
14+
15+
nuxt.hook('nitro:init', nitro => {
16+
nitro.hooks.hook('compiled', () => {
17+
const spaTemplate = readFileSync(nitro.options.output.publicDir + '/200.html', 'utf-8')
18+
for (const path of ['package', '']) {
19+
const outputPath = resolve(
20+
nitro.options.output.serverDir,
21+
'..',
22+
path,
23+
'spa.prerender-fallback.html',
24+
)
25+
writeFileSync(outputPath, spaTemplate)
26+
}
27+
})
28+
})
29+
},
30+
})

nuxt.config.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ export default defineNuxtConfig({
5959
app: {
6060
head: {
6161
htmlAttrs: { lang: 'en-US' },
62+
title: 'npmx',
6263
link: [
6364
{
6465
rel: 'search',
@@ -85,8 +86,10 @@ export default defineNuxtConfig({
8586
routeRules: {
8687
'/': { prerender: true },
8788
'/opensearch.xml': { isr: true },
88-
'/**': { isr: 60 },
89-
'/package/**': { isr: 60 },
89+
'/**': { isr: getISRConfig(60, true) },
90+
'/api/**': { isr: 60 },
91+
'/200.html': { prerender: true },
92+
'/package/**': { isr: getISRConfig(60, true) },
9093
'/:pkg/.well-known/skills/**': { isr: 3600 },
9194
'/:scope/:pkg/.well-known/skills/**': { isr: 3600 },
9295
// never cache
@@ -279,3 +282,15 @@ export default defineNuxtConfig({
279282
dirs: ['~/composables', '~/composables/*/*.ts'],
280283
},
281284
})
285+
286+
function getISRConfig(expirationSeconds: number, fallback = false) {
287+
if (fallback) {
288+
return {
289+
expiration: expirationSeconds,
290+
fallback: 'spa.prerender-fallback.html',
291+
} as { expiration: number }
292+
}
293+
return {
294+
expiration: expirationSeconds,
295+
}
296+
}

0 commit comments

Comments
 (0)