From 5ee39275e14324ae81eca19ebba227a444cee9e6 Mon Sep 17 00:00:00 2001
From: Roman
Date: Fri, 13 Mar 2026 21:00:25 +0000
Subject: [PATCH 01/42] Update module-replacements dependency to 3.0.0-beta.0
---
package.json | 2 +-
pnpm-lock.yaml | 9 +++++++--
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/package.json b/package.json
index 0da01a9a4..5af6dcd02 100644
--- a/package.json
+++ b/package.json
@@ -97,7 +97,7 @@
"gray-matter": "4.0.3",
"ipaddr.js": "2.3.0",
"marked": "17.0.3",
- "module-replacements": "2.11.0",
+ "module-replacements": "3.0.0-beta.0",
"nuxt": "4.3.1",
"nuxt-og-image": "5.1.13",
"ofetch": "1.5.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8ee4f8f65..540eda662 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -170,8 +170,8 @@ importers:
specifier: 17.0.3
version: 17.0.3
module-replacements:
- specifier: 2.11.0
- version: 2.11.0
+ specifier: 3.0.0-beta.0
+ version: 3.0.0-beta.0
nuxt:
specifier: 4.3.1
version: 4.3.1(@parcel/watcher@2.5.4)(@types/node@24.11.0)(@upstash/redis@1.36.3)(@vue/compiler-sfc@3.5.30)(better-sqlite3@12.6.2)(cac@6.7.14)(db0@0.3.4(better-sqlite3@12.6.2))(encoding@0.1.13)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.9.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.51.0(oxlint-tsgolint@0.15.0))(rolldown@1.0.0-rc.5)(rollup@4.56.0)(terser@5.46.0)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.10(@types/node@24.11.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.2.5(typescript@5.9.3))(yaml@2.8.2)
@@ -8302,6 +8302,9 @@ packages:
module-replacements@2.11.0:
resolution: {integrity: sha512-j5sNQm3VCpQQ7nTqGeOZtoJtV3uKERgCBm9QRhmGRiXiqkf7iRFOkfxdJRZWLkqYY8PNf4cDQF/WfXUYLENrRA==}
+ module-replacements@3.0.0-beta.0:
+ resolution: {integrity: sha512-T/REIieQTHKscHccdxRd5A2mYIPPIVuKq652gyAZK1D2hmRCWUi7whDskKiA87knsoCWDDMzjcJHqsCXNWr0Qw==}
+
motion-dom@12.34.3:
resolution: {integrity: sha512-sYgFe+pR9aIM7o4fhs2aXtOI+oqlUd33N9Yoxcgo1Fv7M20sRkHtCmzE/VRNIcq7uNJ+qio+Xubt1FXH3pQ+eQ==}
@@ -20060,6 +20063,8 @@ snapshots:
module-replacements@2.11.0: {}
+ module-replacements@3.0.0-beta.0: {}
+
motion-dom@12.34.3:
dependencies:
motion-utils: 12.29.2
From 49dd770b8b8f87600aab39ff2ea08b2b7f7a73e8 Mon Sep 17 00:00:00 2001
From: Roman
Date: Fri, 13 Mar 2026 21:18:01 +0000
Subject: [PATCH 02/42] Update [...pkg].get.ts
---
server/api/replacements/[...pkg].get.ts | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/server/api/replacements/[...pkg].get.ts b/server/api/replacements/[...pkg].get.ts
index c2531fd64..d7270b7cc 100644
--- a/server/api/replacements/[...pkg].get.ts
+++ b/server/api/replacements/[...pkg].get.ts
@@ -1,11 +1,11 @@
import { all, type ModuleReplacement } from 'module-replacements'
-const replacementMap = new Map(
- all.moduleReplacements.map(r => [r.moduleName, r]),
-)
-
-export default defineEventHandler((event): ModuleReplacement | null => {
+export default defineEventHandler((event): ModuleReplacement[] | null => {
const pkg = getRouterParam(event, 'pkg')
if (!pkg) return null
- return replacementMap.get(pkg) ?? null
+ const mapping = all.mappings[pkg]
+ if (!mapping) return null
+ const replacements = mapping.replacements.map(r => all.replacements[r]!)
+ if (!replacements.length) return null
+ return replacements
})
From f276037597dc0ce4a3acddfbee82009b7dabd604 Mon Sep 17 00:00:00 2001
From: Roman
Date: Fri, 13 Mar 2026 21:24:31 +0000
Subject: [PATCH 03/42] wip
---
app/components/Package/Replacement.vue | 44 ++++++++++++------------
app/composables/useModuleReplacement.ts | 5 ---
app/composables/useModuleReplacements.ts | 5 +++
app/pages/package/[[org]]/[name].vue | 4 +--
4 files changed, 29 insertions(+), 29 deletions(-)
delete mode 100644 app/composables/useModuleReplacement.ts
create mode 100644 app/composables/useModuleReplacements.ts
diff --git a/app/components/Package/Replacement.vue b/app/components/Package/Replacement.vue
index f54eb17b2..8e1ad3ce6 100644
--- a/app/components/Package/Replacement.vue
+++ b/app/components/Package/Replacement.vue
@@ -2,17 +2,17 @@
import type { ModuleReplacement } from 'module-replacements'
const props = defineProps<{
- replacement: ModuleReplacement
+ replacements: ModuleReplacement
}>()
const mdnUrl = computed(() => {
- if (props.replacement.type !== 'native' || !props.replacement.mdnPath) return null
- return `https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/${props.replacement.mdnPath}`
+ if (props.replacements.type !== 'native' || !props.replacements.mdnPath) return null
+ return `https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/${props.replacements.mdnPath}`
})
const docPath = computed(() => {
- if (props.replacement.type !== 'documented' || !props.replacement.docPath) return null
- return `https://e18e.dev/docs/replacements/${props.replacement.docPath}.html`
+ if (props.replacements.type !== 'documented' || !props.replacements.docPath) return null
+ return `https://e18e.dev/docs/replacements/${props.replacements.docPath}.html`
})
@@ -22,24 +22,24 @@ const docPath = computed(() => {
>
- {{ $t('package.replacement.title') }}
+ {{ $t('package.replacements.title') }}
-
- {{ replacement.replacement }}
+
+ {{ replacements.replacements }}
- {{ replacement.nodeVersion }}
+ {{ replacements.nodeVersion }}
@@ -49,17 +49,17 @@ const docPath = computed(() => {
rel="noopener noreferrer"
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"
>
- {{ $t('package.replacement.community') }}
+ {{ $t('package.replacements.community') }}
-
- {{ replacement.replacement }}
+
+ {{ replacements.replacements }}
@@ -69,13 +69,13 @@ const docPath = computed(() => {
rel="noopener noreferrer"
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"
>
- {{ $t('package.replacement.community') }}
+ {{ $t('package.replacements.community') }}
- {{ $t('package.replacement.none') }}
+ {{ $t('package.replacements.none') }}
{
rel="noopener noreferrer"
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"
>
- {{ $t('package.replacement.mdn') }}
+ {{ $t('package.replacements.mdn') }}
{
rel="noopener noreferrer"
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"
>
- {{ $t('package.replacement.learn_more') }}
+ {{ $t('package.replacements.learn_more') }}
diff --git a/app/composables/useModuleReplacement.ts b/app/composables/useModuleReplacement.ts
deleted file mode 100644
index cd89061c5..000000000
--- a/app/composables/useModuleReplacement.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import type { ModuleReplacement } from 'module-replacements'
-
-export function useModuleReplacement(packageName: MaybeRefOrGetter) {
- return useLazyFetch(() => `/api/replacements/${toValue(packageName)}`)
-}
diff --git a/app/composables/useModuleReplacements.ts b/app/composables/useModuleReplacements.ts
new file mode 100644
index 000000000..48977f0b7
--- /dev/null
+++ b/app/composables/useModuleReplacements.ts
@@ -0,0 +1,5 @@
+import type { ModuleReplacement } from 'module-replacements'
+
+export function useModuleReplacements(packageName: MaybeRefOrGetter) {
+ return useLazyFetch(() => `/api/replacements/${toValue(packageName)}`)
+}
diff --git a/app/pages/package/[[org]]/[name].vue b/app/pages/package/[[org]]/[name].vue
index 3af5415e5..012894da5 100644
--- a/app/pages/package/[[org]]/[name].vue
+++ b/app/pages/package/[[org]]/[name].vue
@@ -161,7 +161,7 @@ const { data: skillsData } = useLazyFetch(
)
const { data: packageAnalysis } = usePackageAnalysis(packageName, requestedVersion)
-const { data: moduleReplacement } = useModuleReplacement(packageName)
+const { data: moduleReplacements } = useModuleReplacements(packageName)
if (
import.meta.server &&
@@ -963,7 +963,7 @@ const showSkeleton = shallowRef(false)
-
+
From e528c904bdec56693f4395cbf4e9c98cee0f5d3e Mon Sep 17 00:00:00 2001
From: Roman
Date: Fri, 13 Mar 2026 21:32:04 +0000
Subject: [PATCH 04/42] use a simpler approach
---
app/components/Package/Replacement.vue | 40 ++++++++++++------------
app/composables/useModuleReplacement.ts | 5 +++
app/composables/useModuleReplacements.ts | 5 ---
app/pages/package/[[org]]/[name].vue | 2 +-
server/api/replacements/[...pkg].get.ts | 8 ++---
5 files changed, 30 insertions(+), 30 deletions(-)
create mode 100644 app/composables/useModuleReplacement.ts
delete mode 100644 app/composables/useModuleReplacements.ts
diff --git a/app/components/Package/Replacement.vue b/app/components/Package/Replacement.vue
index 8e1ad3ce6..3b9052028 100644
--- a/app/components/Package/Replacement.vue
+++ b/app/components/Package/Replacement.vue
@@ -2,17 +2,17 @@
import type { ModuleReplacement } from 'module-replacements'
const props = defineProps<{
- replacements: ModuleReplacement
+ replacement: ModuleReplacement
}>()
const mdnUrl = computed(() => {
- if (props.replacements.type !== 'native' || !props.replacements.mdnPath) return null
- return `https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/${props.replacements.mdnPath}`
+ if (props.replacement.type !== 'native' || !props.replacement.mdnPath) return null
+ return `https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/${props.replacement.mdnPath}`
})
const docPath = computed(() => {
- if (props.replacements.type !== 'documented' || !props.replacements.docPath) return null
- return `https://e18e.dev/docs/replacements/${props.replacements.docPath}.html`
+ if (props.replacement.type !== 'documented' || !props.replacement.docPath) return null
+ return `https://e18e.dev/docs/replacements/${props.replacement.docPath}.html`
})
@@ -22,24 +22,24 @@ const docPath = computed(() => {
>
- {{ $t('package.replacements.title') }}
+ {{ $t('package.replacement.title') }}
- {{ replacements.replacements }}
+ {{ replacement.replacements }}
- {{ replacements.nodeVersion }}
+ {{ replacement.nodeVersion }}
@@ -49,17 +49,17 @@ const docPath = computed(() => {
rel="noopener noreferrer"
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"
>
- {{ $t('package.replacements.community') }}
+ {{ $t('package.replacement.community') }}
- {{ replacements.replacements }}
+ {{ replacement.replacements }}
@@ -69,13 +69,13 @@ const docPath = computed(() => {
rel="noopener noreferrer"
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"
>
- {{ $t('package.replacements.community') }}
+ {{ $t('package.replacement.community') }}
- {{ $t('package.replacements.none') }}
+ {{ $t('package.replacement.none') }}
{
rel="noopener noreferrer"
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"
>
- {{ $t('package.replacements.mdn') }}
+ {{ $t('package.replacement.mdn') }}
{
rel="noopener noreferrer"
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"
>
- {{ $t('package.replacements.learn_more') }}
+ {{ $t('package.replacement.learn_more') }}
diff --git a/app/composables/useModuleReplacement.ts b/app/composables/useModuleReplacement.ts
new file mode 100644
index 000000000..cd89061c5
--- /dev/null
+++ b/app/composables/useModuleReplacement.ts
@@ -0,0 +1,5 @@
+import type { ModuleReplacement } from 'module-replacements'
+
+export function useModuleReplacement(packageName: MaybeRefOrGetter) {
+ return useLazyFetch(() => `/api/replacements/${toValue(packageName)}`)
+}
diff --git a/app/composables/useModuleReplacements.ts b/app/composables/useModuleReplacements.ts
deleted file mode 100644
index 48977f0b7..000000000
--- a/app/composables/useModuleReplacements.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import type { ModuleReplacement } from 'module-replacements'
-
-export function useModuleReplacements(packageName: MaybeRefOrGetter) {
- return useLazyFetch(() => `/api/replacements/${toValue(packageName)}`)
-}
diff --git a/app/pages/package/[[org]]/[name].vue b/app/pages/package/[[org]]/[name].vue
index 012894da5..ef3309e54 100644
--- a/app/pages/package/[[org]]/[name].vue
+++ b/app/pages/package/[[org]]/[name].vue
@@ -963,7 +963,7 @@ const showSkeleton = shallowRef(false)
From d6f4b0b34ca7b364863a08283894ef2789704291 Mon Sep 17 00:00:00 2001
From: Roman
Date: Fri, 13 Mar 2026 23:18:51 +0000
Subject: [PATCH 16/42] update tests
---
.../use-compare-replacements.spec.ts | 68 ++++++++-----------
.../use-replacement-dependencies.spec.ts | 2 +-
2 files changed, 28 insertions(+), 42 deletions(-)
diff --git a/test/nuxt/composables/use-compare-replacements.spec.ts b/test/nuxt/composables/use-compare-replacements.spec.ts
index 4c9f98a91..2863cafc2 100644
--- a/test/nuxt/composables/use-compare-replacements.spec.ts
+++ b/test/nuxt/composables/use-compare-replacements.spec.ts
@@ -1,3 +1,4 @@
+import { ref, watchEffect, h, defineComponent } from 'vue'
import { afterEach, describe, expect, it, vi } from 'vitest'
import { mountSuspended } from '@nuxt/test-utils/runtime'
import type { ModuleReplacement } from 'module-replacements'
@@ -50,12 +51,13 @@ describe('useCompareReplacements', () => {
vi.fn().mockImplementation((url: string) => {
if (url.includes('/api/replacements/array-includes')) {
return Promise.resolve({
+ id: 'array-includes',
type: 'native',
- moduleName: 'array-includes',
- nodeVersion: '6.0.0',
- replacement: 'Array.prototype.includes',
- mdnPath: 'Global_Objects/Array/includes',
- category: 'native',
+ url: { type: 'mdn', id: 'Global_Objects/Array/includes' },
+ engines: [{ engine: 'nodejs', minVersion: '6.0.0' }],
+ nodeFeatureId: {
+ moduleName: 'Array.prototype.includes',
+ },
} satisfies ModuleReplacement)
}
return Promise.resolve(null)
@@ -70,6 +72,7 @@ describe('useCompareReplacements', () => {
expect(noDepSuggestions.value).toHaveLength(1)
})
+ // Note: forPackage likely maps to the 'id' in the new schema or the original query
expect(noDepSuggestions.value[0]?.forPackage).toBe('array-includes')
expect(noDepSuggestions.value[0]?.replacement.type).toBe('native')
expect(infoSuggestions.value).toHaveLength(0)
@@ -81,10 +84,9 @@ describe('useCompareReplacements', () => {
vi.fn().mockImplementation((url: string) => {
if (url.includes('/api/replacements/is-even')) {
return Promise.resolve({
+ id: 'is-even',
type: 'simple',
- moduleName: 'is-even',
- replacement: 'Use (n % 2) === 0',
- category: 'micro-utilities',
+ description: 'Use (n % 2) === 0',
} satisfies ModuleReplacement)
}
return Promise.resolve(null)
@@ -110,10 +112,11 @@ describe('useCompareReplacements', () => {
vi.fn().mockImplementation((url: string) => {
if (url.includes('/api/replacements/moment')) {
return Promise.resolve({
+ id: 'moment',
type: 'documented',
- moduleName: 'moment',
- docPath: 'moment',
- category: 'preferred',
+ url: 'https://momentjs.com/docs/#/use-it/built-in-alternatives/',
+ replacementModule: 'date-fns',
+ preferred: true,
} satisfies ModuleReplacement)
}
return Promise.resolve(null)
@@ -139,28 +142,25 @@ describe('useCompareReplacements', () => {
vi.fn().mockImplementation((url: string) => {
if (url.includes('/api/replacements/is-odd')) {
return Promise.resolve({
+ id: 'is-odd',
type: 'simple',
- moduleName: 'is-odd',
- replacement: 'Use (n % 2) !== 0',
- category: 'micro-utilities',
+ description: 'Use (n % 2) !== 0',
} satisfies ModuleReplacement)
}
if (url.includes('/api/replacements/lodash')) {
return Promise.resolve({
+ id: 'lodash',
type: 'documented',
- moduleName: 'lodash',
- docPath: 'lodash-underscore',
- category: 'preferred',
+ url: 'https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore',
+ replacementModule: 'native',
} satisfies ModuleReplacement)
}
if (url.includes('/api/replacements/array-map')) {
return Promise.resolve({
+ id: 'array-map',
type: 'native',
- moduleName: 'array-map',
- nodeVersion: '0.10.0',
- replacement: 'Array.prototype.map',
- mdnPath: 'Global_Objects/Array/map',
- category: 'native',
+ url: { type: 'mdn', id: 'Global_Objects/Array/map' },
+ engines: [{ engine: 'nodejs', minVersion: '0.10.0' }],
} satisfies ModuleReplacement)
}
return Promise.resolve(null)
@@ -178,12 +178,9 @@ describe('useCompareReplacements', () => {
expect(infoSuggestions.value).toHaveLength(1)
})
- // no dep should have simple and native
const noDepTypes = noDepSuggestions.value.map(s => s.replacement.type)
expect(noDepTypes).toContain('simple')
expect(noDepTypes).toContain('native')
-
- // Info should have documented
expect(infoSuggestions.value[0]?.replacement.type).toBe('documented')
})
})
@@ -192,12 +189,7 @@ describe('useCompareReplacements', () => {
it('does not include packages with no replacement data', async () => {
vi.stubGlobal(
'$fetch',
- vi.fn().mockImplementation((url: string) => {
- if (url.includes('/api/replacements/react')) {
- return Promise.resolve(null) // No replacement for react
- }
- return Promise.resolve(null)
- }),
+ vi.fn().mockImplementation(() => Promise.resolve(null)),
)
const { noDepSuggestions, infoSuggestions, replacements } =
@@ -214,21 +206,16 @@ describe('useCompareReplacements', () => {
it('handles fetch errors gracefully', async () => {
vi.stubGlobal(
'$fetch',
- vi.fn().mockImplementation(() => {
- return Promise.reject(new Error('Network error'))
- }),
+ vi.fn().mockImplementation(() => Promise.reject(new Error('Network error'))),
)
- const { noDepSuggestions, infoSuggestions, replacements } =
- await useCompareReplacementsInComponent(['some-package'])
+ const { replacements } = await useCompareReplacementsInComponent(['some-package'])
await vi.waitFor(() => {
expect(replacements.value.has('some-package')).toBe(true)
})
expect(replacements.value.get('some-package')).toBeNull()
- expect(noDepSuggestions.value).toHaveLength(0)
- expect(infoSuggestions.value).toHaveLength(0)
})
})
@@ -237,10 +224,9 @@ describe('useCompareReplacements', () => {
const fetchMock = vi.fn().mockImplementation((url: string) => {
if (url.includes('/api/replacements/is-even')) {
return Promise.resolve({
+ id: 'is-even',
type: 'simple',
- moduleName: 'is-even',
- replacement: 'Use (n % 2) === 0',
- category: 'micro-utilities',
+ description: 'Use (n % 2) === 0',
} satisfies ModuleReplacement)
}
return Promise.resolve(null)
diff --git a/test/nuxt/composables/use-replacement-dependencies.spec.ts b/test/nuxt/composables/use-replacement-dependencies.spec.ts
index a1cc6d054..f81096b5c 100644
--- a/test/nuxt/composables/use-replacement-dependencies.spec.ts
+++ b/test/nuxt/composables/use-replacement-dependencies.spec.ts
@@ -114,7 +114,7 @@ describe('useReplacementDependencies', () => {
expect(simple?.type).toBe('simple')
expect(native?.type).toBe('native')
- expect(native?.url?.type).toBe('mdn')
+ expect(native?.url).toHaveProperty('type', 'mdn')
expect(replacements.value['picoquery']).toBeUndefined()
})
From 83102e3eea8bd5242e57059b7a2564ba311c9a55 Mon Sep 17 00:00:00 2001
From: Roman
Date: Fri, 13 Mar 2026 23:23:27 +0000
Subject: [PATCH 17/42] Update use-compare-replacements.spec.ts
---
.../use-compare-replacements.spec.ts | 48 +++++++++++--------
1 file changed, 28 insertions(+), 20 deletions(-)
diff --git a/test/nuxt/composables/use-compare-replacements.spec.ts b/test/nuxt/composables/use-compare-replacements.spec.ts
index 2863cafc2..f4741ee8d 100644
--- a/test/nuxt/composables/use-compare-replacements.spec.ts
+++ b/test/nuxt/composables/use-compare-replacements.spec.ts
@@ -51,13 +51,17 @@ describe('useCompareReplacements', () => {
vi.fn().mockImplementation((url: string) => {
if (url.includes('/api/replacements/array-includes')) {
return Promise.resolve({
- id: 'array-includes',
+ id: 'Array.prototype.includes',
type: 'native',
- url: { type: 'mdn', id: 'Global_Objects/Array/includes' },
- engines: [{ engine: 'nodejs', minVersion: '6.0.0' }],
- nodeFeatureId: {
- moduleName: 'Array.prototype.includes',
+ url: {
+ type: 'mdn',
+ id: 'Web/JavaScript/Reference/Global_Objects/Array/includes',
+ },
+ webFeatureId: {
+ featureId: 'array-includes',
+ compatKey: 'javascript.builtins.Array.includes',
},
+ engines: [{ engine: 'nodejs', minVersion: '6.0.0' }],
} satisfies ModuleReplacement)
}
return Promise.resolve(null)
@@ -72,7 +76,6 @@ describe('useCompareReplacements', () => {
expect(noDepSuggestions.value).toHaveLength(1)
})
- // Note: forPackage likely maps to the 'id' in the new schema or the original query
expect(noDepSuggestions.value[0]?.forPackage).toBe('array-includes')
expect(noDepSuggestions.value[0]?.replacement.type).toBe('native')
expect(infoSuggestions.value).toHaveLength(0)
@@ -84,9 +87,10 @@ describe('useCompareReplacements', () => {
vi.fn().mockImplementation((url: string) => {
if (url.includes('/api/replacements/is-even')) {
return Promise.resolve({
- id: 'is-even',
+ id: 'snippet::is-even',
type: 'simple',
- description: 'Use (n % 2) === 0',
+ description: 'You can use the modulo operator to check if a number is even.',
+ example: '(n % 2) === 0',
} satisfies ModuleReplacement)
}
return Promise.resolve(null)
@@ -103,7 +107,7 @@ describe('useCompareReplacements', () => {
expect(noDepSuggestions.value[0]?.forPackage).toBe('is-even')
expect(noDepSuggestions.value[0]?.replacement.type).toBe('simple')
- expect(infoSuggestions.value).toHaveLength(0)
+ expect(noDepSuggestions.value[0]?.replacement.example).toBe('(n % 2) === 0')
})
it('categorizes documented replacements as info suggestions', async () => {
@@ -112,11 +116,10 @@ describe('useCompareReplacements', () => {
vi.fn().mockImplementation((url: string) => {
if (url.includes('/api/replacements/moment')) {
return Promise.resolve({
- id: 'moment',
+ id: 'date-fns',
type: 'documented',
- url: 'https://momentjs.com/docs/#/use-it/built-in-alternatives/',
+ url: { type: 'e18e', id: 'moment' },
replacementModule: 'date-fns',
- preferred: true,
} satisfies ModuleReplacement)
}
return Promise.resolve(null)
@@ -142,24 +145,28 @@ describe('useCompareReplacements', () => {
vi.fn().mockImplementation((url: string) => {
if (url.includes('/api/replacements/is-odd')) {
return Promise.resolve({
- id: 'is-odd',
+ id: 'snippet::is-odd',
type: 'simple',
- description: 'Use (n % 2) !== 0',
+ description: 'Check if odd',
+ example: '(n % 2) !== 0',
} satisfies ModuleReplacement)
}
if (url.includes('/api/replacements/lodash')) {
return Promise.resolve({
- id: 'lodash',
+ id: 'native',
type: 'documented',
- url: 'https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore',
+ url: { type: 'e18e', id: 'lodash' },
replacementModule: 'native',
} satisfies ModuleReplacement)
}
if (url.includes('/api/replacements/array-map')) {
return Promise.resolve({
- id: 'array-map',
+ id: 'Array.prototype.map',
type: 'native',
- url: { type: 'mdn', id: 'Global_Objects/Array/map' },
+ url: {
+ type: 'mdn',
+ id: 'Web/JavaScript/Reference/Global_Objects/Array/map',
+ },
engines: [{ engine: 'nodejs', minVersion: '0.10.0' }],
} satisfies ModuleReplacement)
}
@@ -224,9 +231,10 @@ describe('useCompareReplacements', () => {
const fetchMock = vi.fn().mockImplementation((url: string) => {
if (url.includes('/api/replacements/is-even')) {
return Promise.resolve({
- id: 'is-even',
+ id: 'snippet::is-even',
type: 'simple',
- description: 'Use (n % 2) === 0',
+ description: 'Check even',
+ example: '(n % 2) === 0',
} satisfies ModuleReplacement)
}
return Promise.resolve(null)
From 363aa2a99ff2fc5218a055cdb2cbb807d17b9c34 Mon Sep 17 00:00:00 2001
From: Roman
Date: Fri, 13 Mar 2026 23:30:53 +0000
Subject: [PATCH 18/42] Update use-compare-replacements.spec.ts
---
test/nuxt/composables/use-compare-replacements.spec.ts | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/test/nuxt/composables/use-compare-replacements.spec.ts b/test/nuxt/composables/use-compare-replacements.spec.ts
index f4741ee8d..e88d1fdeb 100644
--- a/test/nuxt/composables/use-compare-replacements.spec.ts
+++ b/test/nuxt/composables/use-compare-replacements.spec.ts
@@ -97,9 +97,7 @@ describe('useCompareReplacements', () => {
}),
)
- const { noDepSuggestions, infoSuggestions } = await useCompareReplacementsInComponent([
- 'is-even',
- ])
+ const { noDepSuggestions } = await useCompareReplacementsInComponent(['is-even'])
await vi.waitFor(() => {
expect(noDepSuggestions.value).toHaveLength(1)
From b30c0fd1009d5902912f124433cdcda0c6d6755a Mon Sep 17 00:00:00 2001
From: Roman
Date: Fri, 13 Mar 2026 23:31:39 +0000
Subject: [PATCH 19/42] Update use-compare-replacements.spec.ts
---
test/nuxt/composables/use-compare-replacements.spec.ts | 1 -
1 file changed, 1 deletion(-)
diff --git a/test/nuxt/composables/use-compare-replacements.spec.ts b/test/nuxt/composables/use-compare-replacements.spec.ts
index e88d1fdeb..5f413a051 100644
--- a/test/nuxt/composables/use-compare-replacements.spec.ts
+++ b/test/nuxt/composables/use-compare-replacements.spec.ts
@@ -1,4 +1,3 @@
-import { ref, watchEffect, h, defineComponent } from 'vue'
import { afterEach, describe, expect, it, vi } from 'vitest'
import { mountSuspended } from '@nuxt/test-utils/runtime'
import type { ModuleReplacement } from 'module-replacements'
From c1f52f2a6956fc3e607eb6d4b2fda6cde51437d9 Mon Sep 17 00:00:00 2001
From: Roman
Date: Fri, 13 Mar 2026 23:34:37 +0000
Subject: [PATCH 20/42] Update use-compare-replacements.spec.ts
---
test/nuxt/composables/use-compare-replacements.spec.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/nuxt/composables/use-compare-replacements.spec.ts b/test/nuxt/composables/use-compare-replacements.spec.ts
index 5f413a051..fb1ce317f 100644
--- a/test/nuxt/composables/use-compare-replacements.spec.ts
+++ b/test/nuxt/composables/use-compare-replacements.spec.ts
@@ -104,7 +104,7 @@ describe('useCompareReplacements', () => {
expect(noDepSuggestions.value[0]?.forPackage).toBe('is-even')
expect(noDepSuggestions.value[0]?.replacement.type).toBe('simple')
- expect(noDepSuggestions.value[0]?.replacement.example).toBe('(n % 2) === 0')
+ expect(noDepSuggestions.value[0]?.replacement).toHaveProperty('example', '(n % 2) === 0')
})
it('categorizes documented replacements as info suggestions', async () => {
From e346d83902ace25284313e0df042e7f1bc44d3b3 Mon Sep 17 00:00:00 2001
From: Roman
Date: Fri, 13 Mar 2026 23:54:27 +0000
Subject: [PATCH 21/42] Update a11y.spec.ts
---
test/nuxt/a11y.spec.ts | 63 +++++++++++++++++++++++-------------------
1 file changed, 34 insertions(+), 29 deletions(-)
diff --git a/test/nuxt/a11y.spec.ts b/test/nuxt/a11y.spec.ts
index 28cdabb10..8a1c86af9 100644
--- a/test/nuxt/a11y.spec.ts
+++ b/test/nuxt/a11y.spec.ts
@@ -1944,11 +1944,23 @@ describe('component accessibility audits', () => {
props: {
packageName: 'array-includes',
replacement: {
+ id: 'Array.prototype.includes',
type: 'native',
- moduleName: 'array-includes',
- nodeVersion: '6.0.0',
- replacement: 'Array.prototype.includes',
- mdnPath: 'Global_Objects/Array/includes',
+ url: {
+ type: 'mdn',
+ id: 'Web/JavaScript/Reference/Global_Objects/Array/includes',
+ },
+ webFeatureId: {
+ featureId: 'array-includes',
+ compatKey: 'javascript.builtins.Array.includes',
+ },
+ engines: [
+ { engine: 'chrome', minVersion: '47' },
+ { engine: 'edge', minVersion: '14' },
+ { engine: 'firefox', minVersion: '43' },
+ { engine: 'safari', minVersion: '9' },
+ { engine: 'nodejs', minVersion: '6.0.0' },
+ ],
},
variant: 'nodep',
},
@@ -1962,9 +1974,10 @@ describe('component accessibility audits', () => {
props: {
packageName: 'is-even',
replacement: {
+ id: 'snippet::is-even',
type: 'simple',
- moduleName: 'is-even',
- replacement: 'Use (n % 2) === 0',
+ description: 'You can use the modulo operator to check if a number is even.',
+ example: '(n % 2) === 0',
},
variant: 'nodep',
},
@@ -1978,9 +1991,10 @@ describe('component accessibility audits', () => {
props: {
packageName: 'moment',
replacement: {
+ id: 'day.js',
type: 'documented',
- moduleName: 'moment',
- docPath: 'moment',
+ url: { type: 'e18e', id: 'moment' },
+ replacementModule: 'day.js',
},
variant: 'info',
},
@@ -2403,12 +2417,16 @@ describe('component accessibility audits', () => {
const component = await mountSuspended(PackageReplacement, {
props: {
replacement: {
+ id: 'Array.prototype.every',
type: 'native',
- moduleName: 'array-every',
- nodeVersion: '0.10.0',
- replacement: 'Array.prototype.every',
- mdnPath: 'Global_Objects/Array/every',
- category: 'native',
+ url: {
+ type: 'mdn',
+ id: 'Web/JavaScript/Reference/Global_Objects/Array/every',
+ },
+ engines: [
+ { engine: 'nodejs', minVersion: '0.10.0' },
+ { engine: 'chrome', minVersion: '1' },
+ ],
},
},
})
@@ -2420,23 +2438,10 @@ describe('component accessibility audits', () => {
const component = await mountSuspended(PackageReplacement, {
props: {
replacement: {
+ id: 'snippet::is-even',
type: 'simple',
- moduleName: 'underscore',
- replacement: 'lodash',
- },
- },
- })
- const results = await runAxe(component)
- expect(results.violations).toEqual([])
- })
-
- it('should have no accessibility violations for documented replacement', async () => {
- const component = await mountSuspended(PackageReplacement, {
- props: {
- replacement: {
- type: 'documented',
- moduleName: 'moment',
- docPath: 'moment',
+ description: 'You can use the modulo operator to check if a number is even.',
+ example: '(n % 2) === 0',
},
},
})
From f89546e5eb2a1c8dfef4600e43182f45bac3048a Mon Sep 17 00:00:00 2001
From: Roman
Date: Sat, 14 Mar 2026 00:17:25 +0000
Subject: [PATCH 22/42] wip
---
.../Compare/ReplacementSuggestion.vue | 29 ++++---------
app/components/Package/Replacement.vue | 41 ++++---------------
app/composables/useReplacements.ts | 38 +++++++++++++++++
3 files changed, 55 insertions(+), 53 deletions(-)
create mode 100644 app/composables/useReplacements.ts
diff --git a/app/components/Compare/ReplacementSuggestion.vue b/app/components/Compare/ReplacementSuggestion.vue
index 169c850ec..776bb0bbb 100644
--- a/app/components/Compare/ReplacementSuggestion.vue
+++ b/app/components/Compare/ReplacementSuggestion.vue
@@ -10,14 +10,8 @@ const props = defineProps<{
showAction?: boolean
}>()
-const emit = defineEmits<{
- addNoDep: []
-}>()
-
-const docUrl = computed(() => {
- if (props.replacement.type !== 'documented' || !props.replacement.docPath) return null
- return `https://e18e.dev/docs/replacements/${props.replacement.docPath}.html`
-})
+const emit = defineEmits<{ addNoDep: [] }>()
+const { externalUrl, nodeVersion, replacementName } = useReplacements(props.replacement)
@@ -35,45 +29,40 @@ const docUrl = computed(() => {
/>
{{ packageName }}: {{ $t('package.replacement.title') }}
-
+
{{
$t('package.replacement.native', {
- replacement: replacement.replacement,
- nodeVersion: replacement.nodeVersion,
+ replacement: replacementName,
+ nodeVersion: nodeVersion || 'unknown',
})
}}
{{
$t('package.replacement.simple', {
- replacement: replacement.replacement,
+ replacement: replacementName,
community: $t('package.replacement.community'),
})
}}
{{
- $t('package.replacement.documented', {
- community: $t('package.replacement.community'),
- })
+ $t('package.replacement.documented', { community: $t('package.replacement.community') })
}}
-
+
-
{{ $t('package.replacement.consider_no_dep') }}
-
-
+
{{ $t('package.replacement.learn_more') }}
diff --git a/app/components/Package/Replacement.vue b/app/components/Package/Replacement.vue
index cf810ebcc..23855050c 100644
--- a/app/components/Package/Replacement.vue
+++ b/app/components/Package/Replacement.vue
@@ -1,32 +1,11 @@
@@ -37,24 +16,20 @@ const nodeVersion = computed(() => {
{{ $t('package.replacement.title') }}
+
-
- {{ replacement.nodeFeatureId.moduleName }}
-
-
- {{ replacement.description }}
-
- {{ replacement.id }}
+ {{ replacementName }}
{{ nodeVersion || 'unknown' }}
+
{{ replacement.description }}
@@ -64,6 +39,7 @@ const nodeVersion = computed(() => {
>{{ replacement.example }}
+
{
+
{{ replacement.description }}
-
- {{ $t('package.replacement.none') }}
-
+
{
+ if (!url) return null
+ if (typeof url === 'string') return url
+
+ switch (url.type) {
+ case 'mdn':
+ return `https://developer.mozilla.org/en-US/docs/${url.id}`
+ case 'node':
+ return `https://nodejs.org/${url.id}`
+ case 'e18e':
+ return `https://e18e.dev/docs/replacements/${url.id}`
+ default:
+ return null
+ }
+ }
+
+ const externalUrl = computed(() => resolveUrl(replacement?.url))
+
+ const nodeVersion = computed(() => {
+ const nodeEngine = replacement?.engines?.find(e => e.engine === 'nodejs')
+ return nodeEngine?.minVersion || null
+ })
+
+ const replacementName = computed(() => {
+ if (!replacement) return ''
+ return replacement.nodeFeatureId?.moduleName || replacement.description || replacement.id || ''
+ })
+
+ return {
+ externalUrl,
+ nodeVersion,
+ replacementName,
+ }
+}
From 74eee6674f332073630bf00c17ebaaa521464655 Mon Sep 17 00:00:00 2001
From: Roman
Date: Sat, 14 Mar 2026 00:32:25 +0000
Subject: [PATCH 23/42] Revert "wip"
This reverts commit f89546e5eb2a1c8dfef4600e43182f45bac3048a.
---
.../Compare/ReplacementSuggestion.vue | 29 +++++++++----
app/components/Package/Replacement.vue | 41 +++++++++++++++----
app/composables/useReplacements.ts | 38 -----------------
3 files changed, 53 insertions(+), 55 deletions(-)
delete mode 100644 app/composables/useReplacements.ts
diff --git a/app/components/Compare/ReplacementSuggestion.vue b/app/components/Compare/ReplacementSuggestion.vue
index 776bb0bbb..169c850ec 100644
--- a/app/components/Compare/ReplacementSuggestion.vue
+++ b/app/components/Compare/ReplacementSuggestion.vue
@@ -10,8 +10,14 @@ const props = defineProps<{
showAction?: boolean
}>()
-const emit = defineEmits<{ addNoDep: [] }>()
-const { externalUrl, nodeVersion, replacementName } = useReplacements(props.replacement)
+const emit = defineEmits<{
+ addNoDep: []
+}>()
+
+const docUrl = computed(() => {
+ if (props.replacement.type !== 'documented' || !props.replacement.docPath) return null
+ return `https://e18e.dev/docs/replacements/${props.replacement.docPath}.html`
+})
@@ -29,40 +35,45 @@ const { externalUrl, nodeVersion, replacementName } = useReplacements(props.repl
/>
{{ packageName }}: {{ $t('package.replacement.title') }}
-
+
{{
$t('package.replacement.native', {
- replacement: replacementName,
- nodeVersion: nodeVersion || 'unknown',
+ replacement: replacement.replacement,
+ nodeVersion: replacement.nodeVersion,
})
}}
{{
$t('package.replacement.simple', {
- replacement: replacementName,
+ replacement: replacement.replacement,
community: $t('package.replacement.community'),
})
}}
{{
- $t('package.replacement.documented', { community: $t('package.replacement.community') })
+ $t('package.replacement.documented', {
+ community: $t('package.replacement.community'),
+ })
}}
-
+
+
{{ $t('package.replacement.consider_no_dep') }}
-
+
+
{{ $t('package.replacement.learn_more') }}
diff --git a/app/components/Package/Replacement.vue b/app/components/Package/Replacement.vue
index 23855050c..cf810ebcc 100644
--- a/app/components/Package/Replacement.vue
+++ b/app/components/Package/Replacement.vue
@@ -1,11 +1,32 @@
@@ -16,20 +37,24 @@ const { externalUrl, nodeVersion, replacementName } = useReplacements(props.repl
{{ $t('package.replacement.title') }}
-
- {{ replacementName }}
+
+ {{ replacement.nodeFeatureId.moduleName }}
+
+
+ {{ replacement.description }}
+
+ {{ replacement.id }}
{{ nodeVersion || 'unknown' }}
-
{{ replacement.description }}
@@ -39,7 +64,6 @@ const { externalUrl, nodeVersion, replacementName } = useReplacements(props.repl
>{{ replacement.example }}
-
-
{{ replacement.description }}
-
+
+ {{ $t('package.replacement.none') }}
+
{
- if (!url) return null
- if (typeof url === 'string') return url
-
- switch (url.type) {
- case 'mdn':
- return `https://developer.mozilla.org/en-US/docs/${url.id}`
- case 'node':
- return `https://nodejs.org/${url.id}`
- case 'e18e':
- return `https://e18e.dev/docs/replacements/${url.id}`
- default:
- return null
- }
- }
-
- const externalUrl = computed(() => resolveUrl(replacement?.url))
-
- const nodeVersion = computed(() => {
- const nodeEngine = replacement?.engines?.find(e => e.engine === 'nodejs')
- return nodeEngine?.minVersion || null
- })
-
- const replacementName = computed(() => {
- if (!replacement) return ''
- return replacement.nodeFeatureId?.moduleName || replacement.description || replacement.id || ''
- })
-
- return {
- externalUrl,
- nodeVersion,
- replacementName,
- }
-}
From a95b7a04c897a4e97d84ee789ac140cb829f674f Mon Sep 17 00:00:00 2001
From: Roman
Date: Sat, 14 Mar 2026 00:40:31 +0000
Subject: [PATCH 24/42] Update ReplacementSuggestion.vue
---
.../Compare/ReplacementSuggestion.vue | 47 +++++++++++++++----
1 file changed, 37 insertions(+), 10 deletions(-)
diff --git a/app/components/Compare/ReplacementSuggestion.vue b/app/components/Compare/ReplacementSuggestion.vue
index 169c850ec..c487c9122 100644
--- a/app/components/Compare/ReplacementSuggestion.vue
+++ b/app/components/Compare/ReplacementSuggestion.vue
@@ -1,5 +1,5 @@
@@ -39,15 +57,16 @@ const docUrl = computed(() => {
{{
$t('package.replacement.native', {
- replacement: replacement.replacement,
- nodeVersion: replacement.nodeVersion,
+ replacement:
+ replacement.nodeFeatureId?.moduleName || replacement.description || replacement.id,
+ nodeVersion: nodeVersion || 'unknown',
})
}}
{{
$t('package.replacement.simple', {
- replacement: replacement.replacement,
+ replacement: replacement.description,
community: $t('package.replacement.community'),
})
}}
@@ -55,14 +74,17 @@ const docUrl = computed(() => {
{{
$t('package.replacement.documented', {
+ replacement: replacement.replacementModule,
community: $t('package.replacement.community'),
})
}}
+
+ {{ replacement.description }}
+
-
{
{{ $t('package.replacement.consider_no_dep') }}
-
-
+
{{ $t('package.replacement.learn_more') }}
From b60b23457ed873fdd644b1b79ba37b48bd39f692 Mon Sep 17 00:00:00 2001
From: Roman
Date: Sat, 14 Mar 2026 00:48:26 +0000
Subject: [PATCH 25/42] Update ReplacementSuggestion.vue
---
app/components/Compare/ReplacementSuggestion.vue | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/app/components/Compare/ReplacementSuggestion.vue b/app/components/Compare/ReplacementSuggestion.vue
index c487c9122..87298251c 100644
--- a/app/components/Compare/ReplacementSuggestion.vue
+++ b/app/components/Compare/ReplacementSuggestion.vue
@@ -94,13 +94,7 @@ const nodeVersion = computed(() => {
{{ $t('package.replacement.consider_no_dep') }}
-
+
{{ $t('package.replacement.learn_more') }}
From 7207e50f9d1920df18006a2bb0ffdf48722fa720 Mon Sep 17 00:00:00 2001
From: Roman
Date: Sat, 14 Mar 2026 00:50:22 +0000
Subject: [PATCH 26/42] Update en.json
---
i18n/locales/en.json | 1 -
1 file changed, 1 deletion(-)
diff --git a/i18n/locales/en.json b/i18n/locales/en.json
index 1734b7495..1212c284f 100644
--- a/i18n/locales/en.json
+++ b/i18n/locales/en.json
@@ -251,7 +251,6 @@
"none": "This package has been flagged as no longer needed, and its functionality is likely available natively in all engines.",
"learn_more": "Learn more",
"learn_more_above": "Learn more above.",
- "mdn": "MDN",
"community": "community",
"consider_no_dep": "+ Consider no dep?"
},
From 9e742ab4fdb57aaac7b9f3dde9f72bc96f787cb4 Mon Sep 17 00:00:00 2001
From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com>
Date: Sat, 14 Mar 2026 00:51:44 +0000
Subject: [PATCH 27/42] [autofix.ci] apply automated fixes
---
i18n/locales/ar.json | 28 ++++++++++++++++++++----
i18n/locales/az-AZ.json | 1 -
i18n/locales/bg-BG.json | 1 -
i18n/locales/bn-IN.json | 28 ++++++++++++++++++++----
i18n/locales/cs-CZ.json | 1 -
i18n/locales/de-DE.json | 1 -
i18n/locales/es.json | 1 -
i18n/locales/fr-FR.json | 1 -
i18n/locales/hi-IN.json | 28 ++++++++++++++++++++----
i18n/locales/hu-HU.json | 1 -
i18n/locales/id-ID.json | 1 -
i18n/locales/it-IT.json | 31 ++++++++++++++++++++------
i18n/locales/ja-JP.json | 1 -
i18n/locales/kn-IN.json | 28 ++++++++++++++++++++----
i18n/locales/mr-IN.json | 48 ++++++++++++++++++++++++++++++++++++-----
i18n/locales/nb-NO.json | 28 ++++++++++++++++++++----
i18n/locales/ne-NP.json | 28 ++++++++++++++++++++----
i18n/locales/pl-PL.json | 1 -
i18n/locales/pt-BR.json | 28 ++++++++++++++++++++----
i18n/locales/ru-RU.json | 1 -
i18n/locales/ta-IN.json | 28 ++++++++++++++++++++----
i18n/locales/te-IN.json | 28 ++++++++++++++++++++----
i18n/locales/tr-TR.json | 1 -
i18n/locales/uk-UA.json | 1 -
i18n/locales/zh-CN.json | 1 -
i18n/locales/zh-TW.json | 1 -
26 files changed, 284 insertions(+), 62 deletions(-)
diff --git a/i18n/locales/ar.json b/i18n/locales/ar.json
index 1e34d310d..6d01accdd 100644
--- a/i18n/locales/ar.json
+++ b/i18n/locales/ar.json
@@ -76,6 +76,10 @@
"links": "روابط",
"tap_to_search": "اضغط للبحث"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "الإعدادات",
"tagline": "تخصيص تجربتك على npmx",
@@ -118,6 +122,7 @@
"edit_on_github": "تعديل على GitHub",
"view_guide": "دليل الترجمة"
},
+ "error": {},
"common": {
"loading": "جارٍ التحميل…",
"loading_more": "جارٍ تحميل المزيد…",
@@ -145,6 +150,9 @@
"github": "عرض على GitHub"
}
},
+ "profile": {
+ "invite": {}
+ },
"package": {
"not_found": "لم يتم العثور على الحزمة",
"not_found_message": "تعذّر العثور على الحزمة.",
@@ -157,6 +165,7 @@
"version": "تم إهمال هذا الإصدار.",
"no_reason": "لم يتم تقديم سبب"
},
+ "size_increase": {},
"replacement": {
"title": "قد لا تحتاج إلى هذه التبعية.",
"native": "يمكن استبدالها بـ {replacement}، المتوفرة منذ Node {nodeVersion}.",
@@ -165,7 +174,6 @@
"none": "تم وضع علامة على هذه الحزمة بأنها لم تعد مطلوبة، ومن المرجح أن وظيفتها متاحة أصلًا في جميع المحركات.",
"learn_more": "اعرف المزيد",
"learn_more_above": "اعرف المزيد أعلاه.",
- "mdn": "MDN",
"community": "المجتمع",
"consider_no_dep": "+ هل تريد خيار «بدون تبعية»؟"
},
@@ -303,7 +311,8 @@
"filter_help": "مساعدة فلتر نطاق semver",
"filter_tooltip": "فلترة الإصدارات باستخدام {link}. مثلاً ^3.0.0 يعرض كل إصدارات 3.x.",
"filter_tooltip_link": "نطاق semver",
- "no_matches": "لا توجد إصدارات تطابق هذا النطاق"
+ "no_matches": "لا توجد إصدارات تطابق هذا النطاق",
+ "copy_alt": {}
},
"dependencies": {
"title": "التبعيات ({count})",
@@ -363,7 +372,8 @@
"downloads": "التنزيلات",
"likes": "الإعجابات",
"contributors": "المساهمون"
- }
+ },
+ "copy_alt": {}
},
"downloads": {
"title": "التنزيلات الأسبوعية",
@@ -810,6 +820,8 @@
"managers": "مديري"
}
},
+ "sponsors": {},
+ "oss_partners": {},
"team": {
"title": "الفريق",
"governance": "الحوكمة",
@@ -837,6 +849,7 @@
"description": "تحدث، اطرح الأسئلة، وشارك الأفكار.",
"cta": "انضم إلى Discord"
},
+ "builders": {},
"follow": {
"title": "ابقَ على اطلاع",
"description": "اكتشف آخر الأخبار عن npmx.",
@@ -1009,7 +1022,14 @@
"trends": {
"title": "مقارنة التوجهات"
}
- }
+ },
+ "file_filter_option": {},
+ "filter": {}
+ },
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
},
"privacy_policy": {
"title": "سياسة الخصوصية",
diff --git a/i18n/locales/az-AZ.json b/i18n/locales/az-AZ.json
index 1341675d9..c9e8b032c 100644
--- a/i18n/locales/az-AZ.json
+++ b/i18n/locales/az-AZ.json
@@ -239,7 +239,6 @@
"none": "Bu paket artıq lazımsız olaraq qeyd edilib və funksionallığı bütün mühərriklərdə yerli olaraq mövcuddur.",
"learn_more": "Ətraflı öyrən",
"learn_more_above": "Yuxarıda ətraflı öyrənin.",
- "mdn": "MDN",
"community": "icma",
"consider_no_dep": "+ Asılılıqsız düşünün?"
},
diff --git a/i18n/locales/bg-BG.json b/i18n/locales/bg-BG.json
index 08738ef1b..bc07968d6 100644
--- a/i18n/locales/bg-BG.json
+++ b/i18n/locales/bg-BG.json
@@ -202,7 +202,6 @@
"none": "Този пакет е отбелязан като вече ненужен и функционалността му вероятно е налична нативно във всички двигатели.",
"learn_more": "Научете повече",
"learn_more_above": "Научете повече по-горе.",
- "mdn": "MDN",
"community": "общност",
"consider_no_dep": "+ Обмислете без зависимости?"
},
diff --git a/i18n/locales/bn-IN.json b/i18n/locales/bn-IN.json
index 3888c49de..d4a1f5ccb 100644
--- a/i18n/locales/bn-IN.json
+++ b/i18n/locales/bn-IN.json
@@ -53,6 +53,10 @@
"links": "লিংকগুলি",
"tap_to_search": "অনুসন্ধানের জন্য ট্যাপ করুন"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "সেটিংস",
"tagline": "আপনার npmx অভিজ্ঞতা কাস্টমাইজ করুন",
@@ -86,6 +90,7 @@
"edit_on_github": "GitHub এ সম্পাদনা করুন",
"view_guide": "অনুবাদ গাইড"
},
+ "error": {},
"common": {
"loading": "লোড হচ্ছে...",
"loading_more": "আরো লোড হচ্ছে...",
@@ -112,6 +117,9 @@
"github": "GitHub এ দেখুন"
}
},
+ "profile": {
+ "invite": {}
+ },
"package": {
"not_found": "প্যাকেজ পাওয়া যায়নি",
"not_found_message": "প্যাকেজ পাওয়া যায়নি।",
@@ -124,6 +132,7 @@
"version": "এই ভার্সনটি নিষ্ক্রিয় করা হয়েছে।",
"no_reason": "কোনো কারণ দেওয়া হয়নি"
},
+ "size_increase": {},
"replacement": {
"title": "আপনার এই ডিপেনডেন্সির প্রয়োজন নাও হতে পারে।",
"native": "এটিকে {replacement} দিয়ে প্রতিস্থাপন করা যেতে পারে, যা Node {nodeVersion} থেকে উপলব্ধ।",
@@ -131,7 +140,6 @@
"documented": "{community} এই প্যাকেজটিকে আরো ভাল পারফরম্যান্স অপশন হিসাবে চিহ্নিত করেছে।",
"none": "এই প্যাকেজটি এখন অনাবশ্যক হিসাবে চিহ্নিত, এবং এর কার্যকরিতা সমস্ত ইঞ্জিনে নেটিভভাবে উপলব্ধ হওয়ার সম্ভাবনা আছে।",
"learn_more": "আরো জানুন",
- "mdn": "MDN",
"community": "কমিউনিটি"
},
"stats": {
@@ -219,7 +227,8 @@
"more_tagged": "{count}টি আরো ট্যাগ করা",
"all_covered": "সব ভার্সন উপরের ট্যাগ দ্বারা আবৃত",
"deprecated_title": "{version} (নিষ্ক্রিয়)",
- "view_all": "{count}টি ভার্সন দেখুন | সব {count}টি ভার্সন দেখুন"
+ "view_all": "{count}টি ভার্সন দেখুন | সব {count}টি ভার্সন দেখুন",
+ "copy_alt": {}
},
"dependencies": {
"title": "নির্ভরতা ({count})",
@@ -268,7 +277,8 @@
"date_range_multiline": "{start}\nথেকে {end}",
"download_file": "{fileType} ডাউনলোড করুন",
"toggle_annotator": "অ্যানোটেটর টগল করুন",
- "items": {}
+ "items": {},
+ "copy_alt": {}
},
"downloads": {
"title": "সাপ্তাহিক ডাউনলোড"
@@ -697,6 +707,8 @@
"managers": "ম্যানেজার"
}
},
+ "sponsors": {},
+ "oss_partners": {},
"team": {},
"contributors": {
"title": "অবদানকারী",
@@ -717,6 +729,7 @@
"description": "চ্যাট করুন, প্রশ্ন জিজ্ঞাসা করুন এবং ধারণা শেয়ার করুন।",
"cta": "Discord এ যোগ দিন"
},
+ "builders": {},
"follow": {
"title": "আপডেট পান",
"description": "npmx এর সর্বশেষ তথ্য পান।",
@@ -828,7 +841,14 @@
},
"values": {},
"trends": {}
- }
+ },
+ "file_filter_option": {},
+ "filter": {}
+ },
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
},
"privacy_policy": {
"cookies": {
diff --git a/i18n/locales/cs-CZ.json b/i18n/locales/cs-CZ.json
index 040004c76..c6c11c787 100644
--- a/i18n/locales/cs-CZ.json
+++ b/i18n/locales/cs-CZ.json
@@ -249,7 +249,6 @@
"none": "Tento balíček byl označen jako již nepotřebný a jeho funkčnost je pravděpodobně dostupná nativně ve všech enginech.",
"learn_more": "Zjistit více",
"learn_more_above": "Zjistit více výše.",
- "mdn": "MDN",
"community": "komunita",
"consider_no_dep": "+ Zvážit žádnou závislost?"
},
diff --git a/i18n/locales/de-DE.json b/i18n/locales/de-DE.json
index b7f7e7c8f..c4dd52670 100644
--- a/i18n/locales/de-DE.json
+++ b/i18n/locales/de-DE.json
@@ -239,7 +239,6 @@
"none": "Dieses Paket wurde als nicht mehr nötig markiert, und seine Funktionalität ist wahrscheinlich in allen Engines nativ verfügbar.",
"learn_more": "Mehr erfahren",
"learn_more_above": "Erfahre oben mehr.",
- "mdn": "MDN",
"community": "Community",
"consider_no_dep": "+ Ohne Abhängigkeit lösen?"
},
diff --git a/i18n/locales/es.json b/i18n/locales/es.json
index 248932ded..dc8471667 100644
--- a/i18n/locales/es.json
+++ b/i18n/locales/es.json
@@ -202,7 +202,6 @@
"none": "Este paquete se ha marcado como ya no necesario y es probable que su funcionalidad esté disponible de forma nativa en todos los motores.",
"learn_more": "Más información",
"learn_more_above": "Más información arriba.",
- "mdn": "MDN",
"community": "comunidad",
"consider_no_dep": "+ ¿Considerar sin dependencia?"
},
diff --git a/i18n/locales/fr-FR.json b/i18n/locales/fr-FR.json
index 1bf5ff4cb..b5307a89f 100644
--- a/i18n/locales/fr-FR.json
+++ b/i18n/locales/fr-FR.json
@@ -239,7 +239,6 @@
"none": "Ce paquet a été signalé comme n'étant plus nécessaire, et sa fonctionnalité est probablement disponible nativement dans tous les moteurs.",
"learn_more": "En savoir plus",
"learn_more_above": "En savoir plus ci-dessus.",
- "mdn": "MDN",
"community": "communauté",
"consider_no_dep": "+ Envisager sans dépendance ?"
},
diff --git a/i18n/locales/hi-IN.json b/i18n/locales/hi-IN.json
index cd1660e06..fea3e6889 100644
--- a/i18n/locales/hi-IN.json
+++ b/i18n/locales/hi-IN.json
@@ -54,6 +54,10 @@
"links": "लिंक",
"tap_to_search": "खोजने के लिए टैप करें"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "सेटिंग्स",
"tagline": "अपने npmx अनुभव को अनुकूलित करें",
@@ -87,6 +91,7 @@
"edit_on_github": "GitHub पर संपादित करें",
"view_guide": "अनुवाद गाइड"
},
+ "error": {},
"common": {
"loading": "लोड हो रहा है...",
"loading_more": "और लोड हो रहा है...",
@@ -113,6 +118,9 @@
"github": "GitHub पर देखें"
}
},
+ "profile": {
+ "invite": {}
+ },
"package": {
"not_found": "पैकेज नहीं मिला",
"not_found_message": "पैकेज नहीं मिल सका।",
@@ -125,6 +133,7 @@
"version": "यह संस्करण डेप्रीकेट कर दिया गया है।",
"no_reason": "कोई कारण प्रदान नहीं किया गया"
},
+ "size_increase": {},
"replacement": {
"title": "आपको इस निर्भरता की आवश्यकता नहीं हो सकती।",
"native": "इसे {replacement} से बदला जा सकता है, जो Node {nodeVersion} से उपलब्ध है।",
@@ -132,7 +141,6 @@
"documented": "{community} ने इस पैकेज को अधिक प्रदर्शनकारी विकल्पों के रूप में फ़्लैग किया है।",
"none": "यह पैकेज अब आवश्यक नहीं होने के रूप में फ़्लैग किया गया है, और इसकी कार्यक्षमता सभी इंजनों में नेटिवली उपलब्ध होने की संभावना है।",
"learn_more": "और जानें",
- "mdn": "MDN",
"community": "समुदाय"
},
"stats": {
@@ -220,7 +228,8 @@
"more_tagged": "{count} और टैग किए गए",
"all_covered": "सभी संस्करण ऊपर के टैग्स द्वारा कवर किए गए हैं",
"deprecated_title": "{version} (डेप्रीकेटेड)",
- "view_all": "{count} संस्करण देखें | सभी {count} संस्करण देखें"
+ "view_all": "{count} संस्करण देखें | सभी {count} संस्करण देखें",
+ "copy_alt": {}
},
"dependencies": {
"title": "निर्भरताएँ ({count})",
@@ -269,7 +278,8 @@
"date_range_multiline": "{start}\nसे {end}",
"download_file": "{fileType} डाउनलोड करें",
"toggle_annotator": "एनोटेटर टॉगल करें",
- "items": {}
+ "items": {},
+ "copy_alt": {}
},
"downloads": {
"title": "साप्ताहिक डाउनलोड्स"
@@ -698,6 +708,8 @@
"managers": "मैनेजर"
}
},
+ "sponsors": {},
+ "oss_partners": {},
"team": {},
"contributors": {
"title": "योगदानकर्ता",
@@ -718,6 +730,7 @@
"description": "चैट करें, प्रश्न पूछें, और विचार साझा करें।",
"cta": "Discord से जुड़ें"
},
+ "builders": {},
"follow": {
"title": "अद्यतन रहें",
"description": "npmx पर नवीनतम जानकारी प्राप्त करें।",
@@ -829,7 +842,14 @@
},
"values": {},
"trends": {}
- }
+ },
+ "file_filter_option": {},
+ "filter": {}
+ },
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
},
"privacy_policy": {
"cookies": {
diff --git a/i18n/locales/hu-HU.json b/i18n/locales/hu-HU.json
index 602fb8fc8..f757e6ca7 100644
--- a/i18n/locales/hu-HU.json
+++ b/i18n/locales/hu-HU.json
@@ -202,7 +202,6 @@
"none": "Ez a csomag feleslegesnek lett jelölve, a funkció valószínűleg natívan elérhető.",
"learn_more": "Tudj meg többet",
"learn_more_above": "Tudj meg többet fentebb.",
- "mdn": "MDN",
"community": "közösség",
"consider_no_dep": "+ Fontold meg a függőség nélkülözést?"
},
diff --git a/i18n/locales/id-ID.json b/i18n/locales/id-ID.json
index 8f0cba734..868d5badb 100644
--- a/i18n/locales/id-ID.json
+++ b/i18n/locales/id-ID.json
@@ -251,7 +251,6 @@
"none": "Paket ini ditandai sudah tidak diperlukan, fungsinya kemungkinan sudah tersedia secara bawaan (native).",
"learn_more": "Pelajari lebih lanjut",
"learn_more_above": "Pelajari selengkapnya di atas.",
- "mdn": "MDN",
"community": "komunitas",
"consider_no_dep": "+ Pertimbangkan tanpa dependensi?"
},
diff --git a/i18n/locales/it-IT.json b/i18n/locales/it-IT.json
index 515540080..5e55a4465 100644
--- a/i18n/locales/it-IT.json
+++ b/i18n/locales/it-IT.json
@@ -76,6 +76,10 @@
"links": "Link",
"tap_to_search": "Tocca per cercare"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "impostazioni",
"tagline": "personalizza la tua esperienza npmx",
@@ -118,6 +122,7 @@
"edit_on_github": "Modifica su GitHub",
"view_guide": "Guida alla traduzione"
},
+ "error": {},
"common": {
"loading": "Caricando...",
"loading_more": "Caricando altri...",
@@ -145,6 +150,9 @@
"github": "Vedi su GitHub"
}
},
+ "profile": {
+ "invite": {}
+ },
"package": {
"not_found": "Pacchetto Non Trovato",
"not_found_message": "Impossibile trovare il pacchetto.",
@@ -172,7 +180,6 @@
"none": "Questo pacchetto è stato segnalato come non più necessario, e la sua funzionalità è probabilmente disponibile nativamente in tutti i motori.",
"learn_more": "Scopri di più",
"learn_more_above": "Scopri di più sopra",
- "mdn": "MDN",
"community": "comunità",
"consider_no_dep": "Considera nessuna dipendenza?"
},
@@ -229,9 +236,9 @@
"title": "Inizia",
"pm_label": "Gestore di pacchetti",
"copy_command": "Copia comando di installazione",
- "view_types": "Vedi {package}",
"copy_dev_command": "Copia comando di installazione dev",
- "dev_dependency_hint": "Di solito installato come dev dependency"
+ "dev_dependency_hint": "Di solito installato come dev dependency",
+ "view_types": "Vedi {package}"
},
"create": {
"title": "Crea nuovo progetto",
@@ -297,7 +304,8 @@
"more_tagged": "{count} altri taggati",
"all_covered": "Tutte le versioni sono coperte dai tag sopra",
"deprecated_title": "{version} (deprecato)",
- "view_all": "Visualizza {count} versione | Visualizza tutte le {count} versioni"
+ "view_all": "Visualizza {count} versione | Visualizza tutte le {count} versioni",
+ "copy_alt": {}
},
"dependencies": {
"title": "Dipendenza ({count}) | Dipendenze ({count})",
@@ -351,7 +359,8 @@
"y_axis_label": "{granularity} {facet}",
"items": {
"downloads": "Download"
- }
+ },
+ "copy_alt": {}
},
"downloads": {
"title": "Download settimanali",
@@ -794,6 +803,8 @@
"managers": "gestori di pacchetti"
}
},
+ "sponsors": {},
+ "oss_partners": {},
"team": {},
"contributors": {
"title": "{count} Collaboratore | {count} Collaboratori",
@@ -814,6 +825,7 @@
"description": "Chatta, fai domande e condividi idee.",
"cta": "Unisciti a Discord"
},
+ "builders": {},
"follow": {
"title": "Rimani aggiornato",
"description": "Scopri le ultime novità su npmx.",
@@ -984,7 +996,14 @@
"up_to_you": "A tua scelta!"
},
"trends": {}
- }
+ },
+ "file_filter_option": {},
+ "filter": {}
+ },
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
},
"privacy_policy": {
"title": "Informativa sulla privacy",
diff --git a/i18n/locales/ja-JP.json b/i18n/locales/ja-JP.json
index 6de3a8773..0effbd06d 100644
--- a/i18n/locales/ja-JP.json
+++ b/i18n/locales/ja-JP.json
@@ -249,7 +249,6 @@
"none": "このパッケージは不要になったとフラグが立てられています。その機能はすべてのエンジンでネイティブに利用できる可能性があります。",
"learn_more": "詳細はこちら",
"learn_more_above": "詳細は上記を確認してください。",
- "mdn": "MDN",
"community": "コミュニティ",
"consider_no_dep": "+ 依存関係なしを検討しますか?"
},
diff --git a/i18n/locales/kn-IN.json b/i18n/locales/kn-IN.json
index 23ac3c680..4cea53f1a 100644
--- a/i18n/locales/kn-IN.json
+++ b/i18n/locales/kn-IN.json
@@ -54,6 +54,10 @@
"links": "ಲಿಂಕ್ಗಳು",
"tap_to_search": "ಹುಡುಕಲು ಟ್ಯಾಪ್ ಮಾಡಿ"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "ಸೆಟ್ಟಿಂಗ್ಗಳು",
"tagline": "ನಿಮ್ಮ npmx ಅನುಭವವನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ",
@@ -87,6 +91,7 @@
"edit_on_github": "GitHub ನಲ್ಲಿ ಸಂಪಾದಿಸಿ",
"view_guide": "ಅನುವಾದ ಮಾರ್ಗದರ್ಶಿ"
},
+ "error": {},
"common": {
"loading": "ಲೋಡ್ ಆಗುತ್ತಿದೆ...",
"loading_more": "ಇನ್ನಷ್ಟು ಲೋಡ್ ಆಗುತ್ತಿದೆ...",
@@ -113,6 +118,9 @@
"github": "GitHub ನಲ್ಲಿ ನೋಡಿ"
}
},
+ "profile": {
+ "invite": {}
+ },
"package": {
"not_found": "ಪ್ಯಾಕೇಜ್ ಕಂಡುಬಂದಿಲ್ಲ",
"not_found_message": "ಪ್ಯಾಕೇಜ್ ಕಂಡುಬಂದಿಲ್ಲ.",
@@ -125,6 +133,7 @@
"version": "ಈ ಆವೃತ್ತಿ ಅಮಾನ್ಯಗೊಳಿಸಲಾಗಿದೆ.",
"no_reason": "ಕಾರಣ ನೀಡಲಾಗಿಲ್ಲ"
},
+ "size_increase": {},
"replacement": {
"title": "ನಿಮಗೆ ಈ ಅವಲಂಬನೆ ಅಗತ್ಯವಿಲ್ಲದಿರಬಹುದು.",
"native": "ಇದನ್ನು {replacement} ಮೂಲಕ ಬದಲಾಯಿಸಬಹುದು, ಇದು Node {nodeVersion} ರಿಂದ ಲಭ್ಯವಿದೆ.",
@@ -132,7 +141,6 @@
"documented": "{community} ಈ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಉತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆಯ ಆಯ್ಕೆಯೆಂದು ಗುರುತಿಸಿದೆ.",
"none": "ಈ ಪ್ಯಾಕೇಜ್ ಈಗ ಅನಾವಶ್ಯಕವೆಂದು ಗುರುತಿಸಲಾಗಿದೆ ಮತ್ತು ಇದರ ಕಾರ್ಯಕ್ಷಮತೆ ಎಲ್ಲಾ ಎಂಜಿನ್ಗಳಲ್ಲಿ ನೆಟಿವ್ ಆಗಿ ಲಭ್ಯವಿರಬಹುದು.",
"learn_more": "ಇನ್ನಷ್ಟು ತಿಳಿದುಕೊಳ್ಳಿ",
- "mdn": "MDN",
"community": "ಸಮುದಾಯ"
},
"stats": {
@@ -220,7 +228,8 @@
"more_tagged": "{count} ಇನ್ನಷ್ಟು ಟ್ಯಾಗ್ ಮಾಡಲಾಗಿದೆ",
"all_covered": "ಎಲ್ಲಾ ಆವೃತ್ತಿಗಳು ಮೇಲಿನ ಟ್ಯಾಗ್ಗಳಿಂದ ಒಳಗೊಂಡಿವೆ",
"deprecated_title": "{version} (ಅಮಾನ್ಯಗೊಳಿಸಲಾಗಿದೆ)",
- "view_all": "{count} ಆವೃತ್ತಿ ನೋಡಿ | ಎಲ್ಲಾ {count} ಆವೃತ್ತಿಗಳನ್ನು ನೋಡಿ"
+ "view_all": "{count} ಆವೃತ್ತಿ ನೋಡಿ | ಎಲ್ಲಾ {count} ಆವೃತ್ತಿಗಳನ್ನು ನೋಡಿ",
+ "copy_alt": {}
},
"dependencies": {
"title": "ಅವಲಂಬನೆಗಳು ({count})",
@@ -269,7 +278,8 @@
"date_range_multiline": "{start}\nರಿಂದ {end}",
"download_file": "{fileType} ಡೌನ್ಲೋಡ್ ಮಾಡಿ",
"toggle_annotator": "ಅನೋಟೇಟರ್ ಟಾಗಲ್ ಮಾಡಿ",
- "items": {}
+ "items": {},
+ "copy_alt": {}
},
"downloads": {
"title": "ವಾರದ ಡೌನ್ಲೋಡ್ಗಳು"
@@ -698,6 +708,8 @@
"managers": "ನಿರ್ವಾಹಕರು"
}
},
+ "sponsors": {},
+ "oss_partners": {},
"team": {},
"contributors": {
"title": "ಸಹಯೋಗಿಗಳು",
@@ -718,6 +730,7 @@
"description": "ಚಾಟ್ ಮಾಡಿ, ಪ್ರಶ್ನೆಗಳು ಕೇಳಿ ಮತ್ತು ಆಲೋಚನೆಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳಿ.",
"cta": "Discord ನಲ್ಲಿ ಸೇರಿ"
},
+ "builders": {},
"follow": {
"title": "ನವೀಕರಣಗಳನ್ನು ಪಡೆಯಿರಿ",
"description": "npmx ಬಗ್ಗೆ ಇತ್ತೀಚಿನ ಮಾಹಿತಿ ಪಡೆಯಿರಿ.",
@@ -829,7 +842,14 @@
},
"values": {},
"trends": {}
- }
+ },
+ "file_filter_option": {},
+ "filter": {}
+ },
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
},
"privacy_policy": {
"cookies": {
diff --git a/i18n/locales/mr-IN.json b/i18n/locales/mr-IN.json
index 5c1692f0d..509f1a3d6 100644
--- a/i18n/locales/mr-IN.json
+++ b/i18n/locales/mr-IN.json
@@ -18,6 +18,9 @@
"social": "सोशल",
"chat": "चॅट"
},
+ "shortcuts": {
+ "section": {}
+ },
"search": {
"label": "npm पॅकेजेस शोधा",
"placeholder": "पॅकेजेस शोधा...",
@@ -52,6 +55,10 @@
"links": "लिंक",
"tap_to_search": "शोधण्यासाठी टॅप करा"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "सेटिंग्ज",
"tagline": "तुमचा npmx अनुभव सानुकूलित करा",
@@ -61,6 +68,7 @@
"display": "प्रदर्शन",
"language": "भाषा"
},
+ "data_source": {},
"relative_dates": "सापेक्ष तारखा",
"include_types": "स्थापनेत {'@'}types समाविष्ट करा",
"include_types_description": "अनटाइप केलेल्या पॅकेजसाठी स्थापना आदेशात {'@'}types पॅकेज जोडा",
@@ -85,6 +93,7 @@
"edit_on_github": "GitHub वर संपादित करा",
"view_guide": "भाषांतर मार्गदर्शक"
},
+ "error": {},
"common": {
"loading": "लोड करत आहे...",
"loading_more": "अधिक लोड करत आहे...",
@@ -110,6 +119,9 @@
"npm": "npm वर पहा"
}
},
+ "profile": {
+ "invite": {}
+ },
"package": {
"not_found": "पॅकेज सापडले नाही",
"not_found_message": "पॅकेज सापडले नाही.",
@@ -122,6 +134,7 @@
"version": "ही आवृत्ती नापसंत केली गेली आहे.",
"no_reason": "कोणतेही कारण प्रदान केलेले नाही"
},
+ "size_increase": {},
"replacement": {
"title": "तुम्हाला या निर्भरतेची गरज नसू शकते.",
"native": "हे {replacement} सह बदलले जाऊ शकते, Node {nodeVersion} पासून उपलब्ध आहे.",
@@ -129,7 +142,6 @@
"documented": "{community} ने या पॅकेजला अधिक कार्यक्षम पर्याय असल्याने चिन्हांकित केले आहे.",
"none": "हे पॅकेज यापुढे आवश्यक नाही असे चिन्हांकित केले गेले आहे, आणि त्याची कार्यक्षमता सर्व इंजिनांमध्ये मूळतः उपलब्ध असू शकते.",
"learn_more": "अधिक जाणून घ्या",
- "mdn": "MDN",
"community": "समुदाय"
},
"stats": {
@@ -197,14 +209,21 @@
"callout": {}
},
"provenance_section": {},
+ "security_downgrade": {},
"keywords_title": "कीवर्ड",
"compatibility": "सुसंगतता",
"card": {},
- "versions": {},
+ "versions": {
+ "copy_alt": {}
+ },
"dependencies": {},
"peer_dependencies": {},
"optional_dependencies": {},
"maintainers": {},
+ "trends": {
+ "items": {},
+ "copy_alt": {}
+ },
"downloads": {},
"install_scripts": {},
"playgrounds": {},
@@ -219,7 +238,8 @@
},
"list": {},
"skeleton": {},
- "sort": {}
+ "sort": {},
+ "size": {}
},
"connector": {
"modal": {}
@@ -271,10 +291,14 @@
"what_we_are_not": {
"words": {}
},
+ "sponsors": {},
+ "oss_partners": {},
+ "team": {},
"contributors": {},
"get_involved": {
"contribute": {},
"community": {},
+ "builders": {},
"follow": {}
}
},
@@ -309,8 +333,16 @@
"license": {},
"vulnerabilities": {}
},
- "values": {}
- }
+ "values": {},
+ "trends": {}
+ },
+ "file_filter_option": {},
+ "filter": {}
+ },
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
},
"privacy_policy": {
"cookies": {
@@ -325,5 +357,11 @@
"your_rights": {},
"contact": {},
"changes": {}
+ },
+ "a11y": {
+ "approach": {},
+ "measures": {},
+ "limitations": {},
+ "contact": {}
}
}
diff --git a/i18n/locales/nb-NO.json b/i18n/locales/nb-NO.json
index 94658e4eb..1dcfeaf99 100644
--- a/i18n/locales/nb-NO.json
+++ b/i18n/locales/nb-NO.json
@@ -76,6 +76,10 @@
"links": "Lenker",
"tap_to_search": "Trykk for å søke"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "innstillinger",
"tagline": "tilpass din npmx-opplevelse",
@@ -118,6 +122,7 @@
"edit_on_github": "Rediger på GitHub",
"view_guide": "Oversettelsesguide"
},
+ "error": {},
"common": {
"loading": "Laster...",
"loading_more": "Laster mer...",
@@ -144,6 +149,9 @@
"github": "Vis på GitHub"
}
},
+ "profile": {
+ "invite": {}
+ },
"package": {
"not_found": "Pakke ikke funnet",
"not_found_message": "Pakken kunne ikke finnes.",
@@ -156,6 +164,7 @@
"version": "Denne versjonen er utfaset.",
"no_reason": "Ingen årsak oppgitt"
},
+ "size_increase": {},
"replacement": {
"title": "Du trenger kanskje ikke denne avhengigheten.",
"native": "Denne kan erstattes med {replacement}, tilgjengelig siden Node {nodeVersion}.",
@@ -164,7 +173,6 @@
"none": "Denne pakken er flagget som ikke lenger nødvendig, og funksjonaliteten er sannsynligvis tilgjengelig innebygd i alle motorer.",
"learn_more": "Lær mer",
"learn_more_above": "Lær mer ovenfor.",
- "mdn": "MDN",
"community": "fellesskapet",
"consider_no_dep": "+ Vurdere ingen avhengighet?"
},
@@ -268,7 +276,8 @@
"more_tagged": "{count} flere tagget",
"all_covered": "Alle versjoner dekkes av taggene over",
"deprecated_title": "{version} (utfaset)",
- "view_all": "Vis {count} versjon | Vis alle {count} versjoner"
+ "view_all": "Vis {count} versjon | Vis alle {count} versjoner",
+ "copy_alt": {}
},
"dependencies": {
"title": "Avhengighet ({count}) | Avhengigheter ({count})",
@@ -322,7 +331,8 @@
"y_axis_label": "{granularity} {facet}",
"items": {
"downloads": "Nedlastinger"
- }
+ },
+ "copy_alt": {}
},
"downloads": {
"title": "Ukentlige nedlastinger",
@@ -765,6 +775,8 @@
"managers": "pakkebehandlere"
}
},
+ "sponsors": {},
+ "oss_partners": {},
"team": {},
"contributors": {
"title": "{count} Bidragsyter | {count} Bidragsytere",
@@ -785,6 +797,7 @@
"description": "Chat, still spørsmål og del ideer.",
"cta": "Bli med på Discord"
},
+ "builders": {},
"follow": {
"title": "Hold deg oppdatert",
"description": "Få med deg det siste om npmx.",
@@ -957,7 +970,14 @@
"trends": {
"title": "Ukentlige nedlastinger"
}
- }
+ },
+ "file_filter_option": {},
+ "filter": {}
+ },
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
},
"privacy_policy": {
"cookies": {
diff --git a/i18n/locales/ne-NP.json b/i18n/locales/ne-NP.json
index dc1e7710d..94e6a6c30 100644
--- a/i18n/locales/ne-NP.json
+++ b/i18n/locales/ne-NP.json
@@ -54,6 +54,10 @@
"links": "लिङ्कहरू",
"tap_to_search": "खोज्न ट्याप गर्नुहोस्"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "सेटिङ्स",
"tagline": "आफ्नो npmx अनुभव अनुकूल बनाउनुहोस्",
@@ -87,6 +91,7 @@
"edit_on_github": "GitHub मा सम्पादन गर्नुहोस्",
"view_guide": "अनुवाद मार्गदर्शन"
},
+ "error": {},
"common": {
"loading": "लोड हुँदैछ...",
"loading_more": "अझै लोड हुँदैछ...",
@@ -113,6 +118,9 @@
"github": "GitHub मा हेर्नुहोस्"
}
},
+ "profile": {
+ "invite": {}
+ },
"package": {
"not_found": "प्याकेज फेला परेन",
"not_found_message": "प्याकेज फेला पार्न सकिएन।",
@@ -125,6 +133,7 @@
"version": "यो संस्करण अप्रचलित (deprecated) गरिएको छ।",
"no_reason": "कारण दिइएको छैन"
},
+ "size_increase": {},
"replacement": {
"title": "तपाईंलाई यो डिपेन्डेन्सी आवश्यक नपर्न सक्छ।",
"native": "Node {nodeVersion} देखि उपलब्ध {replacement} ले यसलाई प्रतिस्थापन गर्न सक्छ।",
@@ -132,7 +141,6 @@
"documented": "{community} ले यो प्याकेजका थप उच्च प्रदर्शन भएका विकल्पहरू छन् भनेर चिन्ह लगाएको छ।",
"none": "यो प्याकेज अब आवश्यक छैन भनेर चिन्ह लगाइएको छ, र यसको कार्यक्षमता सम्भवतः सबै इन्जिनहरूमा नै बिल्ट-इन रूपमा उपलब्ध छ।",
"learn_more": "थप जान्नुहोस्",
- "mdn": "MDN",
"community": "समुदाय"
},
"stats": {
@@ -206,7 +214,8 @@
"more_tagged": "{count} थप ट्याग गरिएको",
"all_covered": "माथिका ट्यागले सबै संस्करणहरू कभर गर्छन्",
"deprecated_title": "{version} (deprecated)",
- "view_all": "{count} संस्करण हेर्नुहोस् | सबै {count} संस्करणहरू हेर्नुहोस्"
+ "view_all": "{count} संस्करण हेर्नुहोस् | सबै {count} संस्करणहरू हेर्नुहोस्",
+ "copy_alt": {}
},
"dependencies": {
"title": "डिपेन्डेन्सीहरू ({count})",
@@ -255,7 +264,8 @@
"date_range_multiline": "{start}\nदेखि {end}",
"download_file": "{fileType} डाउनलोड गर्नुहोस्",
"toggle_annotator": "एनोटेटर टगल गर्नुहोस्",
- "items": {}
+ "items": {},
+ "copy_alt": {}
},
"downloads": {
"title": "साप्ताहिक डाउनलोड"
@@ -683,6 +693,8 @@
"managers": "म्यानेजरहरू बनाइरहेका छन्"
}
},
+ "sponsors": {},
+ "oss_partners": {},
"team": {},
"contributors": {
"title": "कन्ट्रिब्युटरहरू",
@@ -703,6 +715,7 @@
"description": "च्याट गर्नुहोस्, प्रश्न सोध्नुहोस्, र विचार साझा गर्नुहोस्।",
"cta": "Discord मा जोडिनुहोस्"
},
+ "builders": {},
"follow": {
"title": "अपडेट रहनुहोस्",
"description": "npmx का ताजा अपडेटहरू जान्नुहोस्।",
@@ -814,7 +827,14 @@
},
"values": {},
"trends": {}
- }
+ },
+ "file_filter_option": {},
+ "filter": {}
+ },
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
},
"privacy_policy": {
"cookies": {
diff --git a/i18n/locales/pl-PL.json b/i18n/locales/pl-PL.json
index eaf990fc5..a12ff1ebc 100644
--- a/i18n/locales/pl-PL.json
+++ b/i18n/locales/pl-PL.json
@@ -249,7 +249,6 @@
"none": "Ten pakiet został oznaczony jako zbędny, a jego funkcjonalność jest prawdopodobnie dostępna natywnie we wszystkich środowiskach.",
"learn_more": "Dowiedz się więcej",
"learn_more_above": "Dowiedz się więcej powyżej",
- "mdn": "MDN",
"community": "Społeczność",
"consider_no_dep": "+ Rozważ brak zależności?"
},
diff --git a/i18n/locales/pt-BR.json b/i18n/locales/pt-BR.json
index cd9a3793f..284159463 100644
--- a/i18n/locales/pt-BR.json
+++ b/i18n/locales/pt-BR.json
@@ -55,6 +55,10 @@
"links": "Links",
"tap_to_search": "Toque para pesquisar"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "configurações",
"tagline": "personalize sua experiência npmx",
@@ -88,6 +92,7 @@
"edit_on_github": "Editar no GitHub",
"view_guide": "Guia de tradução"
},
+ "error": {},
"common": {
"loading": "Carregando...",
"loading_more": "Carregando mais...",
@@ -114,6 +119,9 @@
"github": "Ver no GitHub"
}
},
+ "profile": {
+ "invite": {}
+ },
"package": {
"not_found": "Pacote não encontrado",
"not_found_message": "O pacote não pôde ser encontrado.",
@@ -126,6 +134,7 @@
"version": "Esta versão foi descontinuada.",
"no_reason": "Nenhum motivo fornecido"
},
+ "size_increase": {},
"replacement": {
"title": "Você pode não precisar desta dependência.",
"native": "Isso pode ser substituído por {replacement}, disponível desde Node {nodeVersion}.",
@@ -133,7 +142,6 @@
"documented": "A {community} marcou este pacote como tendo alternativas mais performáticas.",
"none": "Este pacote foi marcado como não mais necessário, e sua funcionalidade provavelmente está disponível nativamente em todas as engines.",
"learn_more": "Saiba mais",
- "mdn": "MDN",
"community": "comunidade"
},
"stats": {
@@ -221,7 +229,8 @@
"more_tagged": "{count} mais marcadas",
"all_covered": "Todas as versões estão cobertas pelas tags acima",
"deprecated_title": "{version} (descontinuada)",
- "view_all": "Ver {count} versão | Ver todas as {count} versões"
+ "view_all": "Ver {count} versão | Ver todas as {count} versões",
+ "copy_alt": {}
},
"dependencies": {
"title": "Dependências ({count})",
@@ -270,7 +279,8 @@
"date_range_multiline": "{start}\npara {end}",
"download_file": "Baixar {fileType}",
"toggle_annotator": "Alternar anotador",
- "items": {}
+ "items": {},
+ "copy_alt": {}
},
"downloads": {
"title": "Downloads Semanais"
@@ -699,6 +709,8 @@
"managers": "gerenciadores de pacotes"
}
},
+ "sponsors": {},
+ "oss_partners": {},
"team": {},
"contributors": {
"title": "Contribuidores",
@@ -719,6 +731,7 @@
"description": "Converse, faça perguntas e compartilhe ideias.",
"cta": "Junte-se ao Discord"
},
+ "builders": {},
"follow": {
"title": "Mantenha-se atualizado",
"description": "Descubra as novidades sobre npmx.",
@@ -830,7 +843,14 @@
},
"values": {},
"trends": {}
- }
+ },
+ "file_filter_option": {},
+ "filter": {}
+ },
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
},
"privacy_policy": {
"cookies": {
diff --git a/i18n/locales/ru-RU.json b/i18n/locales/ru-RU.json
index fa486ef7c..12ed7887a 100644
--- a/i18n/locales/ru-RU.json
+++ b/i18n/locales/ru-RU.json
@@ -239,7 +239,6 @@
"none": "Этот пакет был отмечен как ненужный, так как его функциональность, вероятно, доступна нативно во всех движках.",
"learn_more": "Подробнее",
"learn_more_above": "Узнайте больше выше.",
- "mdn": "MDN",
"community": "сообщество",
"consider_no_dep": "+ Рассмотреть вариант без зависимости?"
},
diff --git a/i18n/locales/ta-IN.json b/i18n/locales/ta-IN.json
index 0eb176818..9321b9f5c 100644
--- a/i18n/locales/ta-IN.json
+++ b/i18n/locales/ta-IN.json
@@ -76,6 +76,10 @@
"links": "இணைப்புகள்",
"tap_to_search": "தேட தட்டவும்"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "அமைப்புகள்",
"tagline": "உங்கள் npmx அனுபவத்தைத் தனிப்பயனாக்கு",
@@ -118,6 +122,7 @@
"edit_on_github": "GitHub-ல் திருத்து",
"view_guide": "மொழிபெயர்ப்பு வழிகாட்டி"
},
+ "error": {},
"common": {
"loading": "ஏற்றுகிறது...",
"loading_more": "மேலும் ஏற்றுகிறது...",
@@ -144,6 +149,9 @@
"github": "GitHub-ல் காண்க"
}
},
+ "profile": {
+ "invite": {}
+ },
"package": {
"not_found": "தொகுப்பு கிடைக்கவில்லை",
"not_found_message": "தொகுப்பைக் கண்டுபிடிக்க இயலவில்லை.",
@@ -156,6 +164,7 @@
"version": "இந்தப் பதிப்பு நிறுத்தப்பட்டது.",
"no_reason": "காரணம் வழங்கப்படவில்லை"
},
+ "size_increase": {},
"replacement": {
"title": "இந்த சார்பு உங்களுக்குத் தேவைப்படாமல் இருக்கலாம்.",
"native": "இதை {replacement} மூலம் மாற்றலாம், Node {nodeVersion} முதல் கிடைக்கிறது.",
@@ -164,7 +173,6 @@
"none": "இந்த தொகுப்பு இனி தேவையில்லை என்று கொடியிடப்பட்டுள்ளது, அதன் செயல்பாடு அனைத்து இயந்திரங்களிலும் நேரடியாகக் கிடைக்கிறது.",
"learn_more": "மேலும் அறிக",
"learn_more_above": "மேலே மேலும் அறிக.",
- "mdn": "MDN",
"community": "சமூகம்",
"consider_no_dep": "+ சார்பு வேண்டாமா?"
},
@@ -287,7 +295,8 @@
"more_tagged": "{count} மேலும் குறியிடப்பட்டவை",
"all_covered": "அனைத்து பதிப்புகளும் மேலே உள்ள குறிச்சொற்களால் உள்ளடக்கப்பட்டுள்ளன",
"deprecated_title": "{version} (நிறுத்தப்பட்டது)",
- "view_all": "{count} பதிப்பைக் காண்க | அனைத்து {count} பதிப்புகளையும் காண்க"
+ "view_all": "{count} பதிப்பைக் காண்க | அனைத்து {count} பதிப்புகளையும் காண்க",
+ "copy_alt": {}
},
"dependencies": {
"title": "சார்பு ({count}) | சார்புகள் ({count})",
@@ -341,7 +350,8 @@
"y_axis_label": "{granularity} {facet}",
"items": {
"downloads": "பதிவிறக்கங்கள்"
- }
+ },
+ "copy_alt": {}
},
"downloads": {
"title": "வாராந்திர பதிவிறக்கங்கள்",
@@ -785,6 +795,8 @@
"managers": "மேலாளர்கள்"
}
},
+ "sponsors": {},
+ "oss_partners": {},
"team": {},
"contributors": {
"title": "{count} பங்களிப்பாளர் | {count} பங்களிப்பாளர்கள்",
@@ -805,6 +817,7 @@
"description": "அரட்டையடிக்கவும், கேள்விகள் கேட்கவும், யோசனைகளைப் பகிரவும்.",
"cta": "Discord-ல் சேரவும்"
},
+ "builders": {},
"follow": {
"title": "புதுப்பிப்புகளைப் பெறுங்கள்",
"description": "npmx பற்றிய சமீபத்திய தகவல்களைக் கண்டறியுங்கள்.",
@@ -977,7 +990,14 @@
"trends": {
"title": "வாராந்திர பதிவிறக்கங்கள்"
}
- }
+ },
+ "file_filter_option": {},
+ "filter": {}
+ },
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
},
"privacy_policy": {
"title": "தனியுரிமைக் கொள்கை",
diff --git a/i18n/locales/te-IN.json b/i18n/locales/te-IN.json
index c2d82b8d3..fb0691b1a 100644
--- a/i18n/locales/te-IN.json
+++ b/i18n/locales/te-IN.json
@@ -54,6 +54,10 @@
"links": "లింక్లు",
"tap_to_search": "శోధించడానికి టాప్ చేయండి"
},
+ "blog": {
+ "author": {},
+ "atproto": {}
+ },
"settings": {
"title": "సెట్టింగ్లు",
"tagline": "మీ npmx అనుభవాన్ని అనుకూలీకరించండి",
@@ -87,6 +91,7 @@
"edit_on_github": "GitHub లో సవరించండి",
"view_guide": "అనువాద గైడ్"
},
+ "error": {},
"common": {
"loading": "లోడ్ అవుతున్నది...",
"loading_more": "మరిన్ని లోడ్ అవుతున్నది...",
@@ -113,6 +118,9 @@
"github": "GitHub లో వీక్షించండి"
}
},
+ "profile": {
+ "invite": {}
+ },
"package": {
"not_found": "ప్యాకేజ్ కనుగొనబడలేదు",
"not_found_message": "ప్యాకేజ్ కనుగొనబడలేదు.",
@@ -125,6 +133,7 @@
"version": "ఈ వెర్షన్ డిప్రికేట్ చేయబడింది.",
"no_reason": "కారణం అందించబడలేదు"
},
+ "size_increase": {},
"replacement": {
"title": "మీకు ఈ డిపెండెన్సీ అవసరం లేకపోవచ్చు.",
"native": "దీనిని {replacement} తో భర్తీ చేయవచ్చు, ఇది Node {nodeVersion} నుండి అందుబాటులో ఉంది.",
@@ -132,7 +141,6 @@
"documented": "{community} ఈ ప్యాకేజ్ను మరింత పనితీరు ఎంపికలుగా ఫ్లాగ్ చేసింది.",
"none": "ఈ ప్యాకేజ్ ఇప్పుడు అవసరం లేనిదిగా ఫ్లాగ్ చేయబడింది, మరియు దీని కార్యాచరణ అన్ని ఇంజిన్లలో నేటివ్గా అందుబాటులో ఉండే అవకాశం ఉంది.",
"learn_more": "మరిన్ని తెలుసుకోండి",
- "mdn": "MDN",
"community": "కమ్యూనిటీ"
},
"stats": {
@@ -220,7 +228,8 @@
"more_tagged": "{count} మరిన్ని ట్యాగ్ చేయబడ్డాయి",
"all_covered": "అన్ని వెర్షన్లు పైన ఉన్న ట్యాగ్ల ద్వారా కవర్ చేయబడ్డాయి",
"deprecated_title": "{version} (డిప్రికేటెడ్)",
- "view_all": "{count} వెర్షన్లను వీక్షించండి | అన్ని {count} వెర్షన్లను వీక్షించండి"
+ "view_all": "{count} వెర్షన్లను వీక్షించండి | అన్ని {count} వెర్షన్లను వీక్షించండి",
+ "copy_alt": {}
},
"dependencies": {
"title": "డిపెండెన్సీలు ({count})",
@@ -269,7 +278,8 @@
"date_range_multiline": "{start}\nనుండి {end}",
"download_file": "{fileType} డౌన్లోడ్ చేయండి",
"toggle_annotator": "అనోటేటర్ను టాగుల్ చేయండి",
- "items": {}
+ "items": {},
+ "copy_alt": {}
},
"downloads": {
"title": "వారపు డౌన్లోడ్లు"
@@ -698,6 +708,8 @@
"managers": "మేనేజర్లు"
}
},
+ "sponsors": {},
+ "oss_partners": {},
"team": {},
"contributors": {
"title": "కంట్రిబ్యూటర్లు",
@@ -718,6 +730,7 @@
"description": "చాట్ చేయండి, ప్రశ్నలు అడగండి, మరియు ఆలోచనలను పంచుకోండి.",
"cta": "Discord లో చేరండి"
},
+ "builders": {},
"follow": {
"title": "నవీకరణలతో ఉండండి",
"description": "npmx లో తాజా సమాచారాన్ని పొందండి.",
@@ -829,7 +842,14 @@
},
"values": {},
"trends": {}
- }
+ },
+ "file_filter_option": {},
+ "filter": {}
+ },
+ "pds": {
+ "join": {},
+ "server": {},
+ "community": {}
},
"privacy_policy": {
"cookies": {
diff --git a/i18n/locales/tr-TR.json b/i18n/locales/tr-TR.json
index 3e74fd6ef..bdfb47296 100644
--- a/i18n/locales/tr-TR.json
+++ b/i18n/locales/tr-TR.json
@@ -239,7 +239,6 @@
"none": "Bu paket artık gereksiz olarak işaretlendi ve işlevselliği tüm motorlarda yerel olarak mevcuttur.",
"learn_more": "Daha fazla bilgi",
"learn_more_above": "Yukarıda daha fazla bilgi edinin.",
- "mdn": "MDN",
"community": "topluluk",
"consider_no_dep": "+ Bağımlılıksız düşünün?"
},
diff --git a/i18n/locales/uk-UA.json b/i18n/locales/uk-UA.json
index 357da5cb7..977846946 100644
--- a/i18n/locales/uk-UA.json
+++ b/i18n/locales/uk-UA.json
@@ -239,7 +239,6 @@
"none": "Цей пакет було позначено як більше не необхідний, і його функціональність, ймовірно, доступна в усіх системах.",
"learn_more": "Дізнатися більше",
"learn_more_above": "Дізнатися більше вище.",
- "mdn": "MDN",
"community": "спільнота",
"consider_no_dep": "+ Думаєте позбавитися пакету?"
},
diff --git a/i18n/locales/zh-CN.json b/i18n/locales/zh-CN.json
index 766c05626..8ba132fef 100644
--- a/i18n/locales/zh-CN.json
+++ b/i18n/locales/zh-CN.json
@@ -239,7 +239,6 @@
"none": "此包已被标记为不再需要,其功能很可能已由所有引擎原生提供。",
"learn_more": "了解更多",
"learn_more_above": "在上方了解更多。",
- "mdn": "MDN",
"community": "社区",
"consider_no_dep": "+ 不使用依赖?"
},
diff --git a/i18n/locales/zh-TW.json b/i18n/locales/zh-TW.json
index 4b6fd68ee..34c3fc755 100644
--- a/i18n/locales/zh-TW.json
+++ b/i18n/locales/zh-TW.json
@@ -202,7 +202,6 @@
"none": "此套件已被標記為不再需要,其功能很可能已由所有引擎原生提供。",
"learn_more": "了解更多",
"learn_more_above": "參閱上方說明",
- "mdn": "MDN",
"community": "社群",
"consider_no_dep": "+ 考慮不使用相依套件?"
},
From e365d7eb8af47eb9098c76a3d6e18b10901285ba Mon Sep 17 00:00:00 2001
From: Roman
Date: Sat, 14 Mar 2026 00:54:47 +0000
Subject: [PATCH 28/42] Update schema.json
---
i18n/schema.json | 3 ---
1 file changed, 3 deletions(-)
diff --git a/i18n/schema.json b/i18n/schema.json
index fb0cc69fb..ab10aa20c 100644
--- a/i18n/schema.json
+++ b/i18n/schema.json
@@ -757,9 +757,6 @@
"learn_more_above": {
"type": "string"
},
- "mdn": {
- "type": "string"
- },
"community": {
"type": "string"
},
From 63417bf67cd39121ae04f715ee07aaf1ddbca451 Mon Sep 17 00:00:00 2001
From: Roman
Date: Sat, 14 Mar 2026 01:34:38 +0000
Subject: [PATCH 29/42] create resolveReplacementUrl util
---
.../Compare/ReplacementSuggestion.vue | 19 ++-------------
app/components/Package/Replacement.vue | 24 +++----------------
app/utils/resolve-replacement-url.ts | 17 +++++++++++++
3 files changed, 22 insertions(+), 38 deletions(-)
create mode 100644 app/utils/resolve-replacement-url.ts
diff --git a/app/components/Compare/ReplacementSuggestion.vue b/app/components/Compare/ReplacementSuggestion.vue
index 87298251c..e152550f8 100644
--- a/app/components/Compare/ReplacementSuggestion.vue
+++ b/app/components/Compare/ReplacementSuggestion.vue
@@ -1,5 +1,6 @@