// @ts-check const translations = require('@verdaccio/crowdin-translations/build/progress_lang.json'); const lgnMapping = { 'de-DE': 'de', 'pl-PL': 'pl', 'cs-CZ': 'cs', 'fr-FR': 'fr', 'it-IT': 'it' , 'ru-RU': 'ru', 'vi-VN': 'vi', 'yo-NG': 'yo', }; // @ts-ignore const progress = translations; const limitLngIncluded = 19; console.log('limit translation is on %s%', limitLngIncluded) const isDeployPreview = process.env.CONTEXT === "deploy-preview"; const isProductionDeployment = process.env.CONTEXT === "production"; const filterByProgress = (items) => { const originLng = Object.keys(translations); return items.filter((lgn => { if(lgn === 'en') { return true; } const _lgn = lgnMapping[lgn] ? lgnMapping[lgn] : lgn; if(!originLng.includes(_lgn)) { console.log(`language ${_lgn} excluded, does not exist in origin`); return false; } if (translations[_lgn].approvalProgress <= limitLngIncluded) { console.log('language %s is being excluded due does not met limit of translation, current: %s%', _lgn, translations[_lgn].approvalProgress); return false; } return true; })) } const i18nConfig = { defaultLocale: 'en', locales: isDeployPreview ? ['en'] : filterByProgress([ "en", "cs-CZ", "de-DE", "es-ES", "fr-FR", "it-IT", "pl-PL", "pt-BR", "ru-RU", "sr-CS", "vi-VN", "yo-NG", "zh-TW", "zh-CN" ]), localeConfigs: { en: { label: "English" }, 'it-IT': { label: `Italiano (${progress["it"].translationProgress}%)` }, 'es-ES': { label: `Español (${progress["es-ES"].translationProgress}%)` }, 'de-DE': { label: `Deutsch (${progress["de"].translationProgress}%)` }, 'cs-CZ': { label: `Čeština (Česko) (${progress["cs"].translationProgress}%)` }, 'fr-FR': { label: `Français (${progress["fr"].translationProgress}%)` }, 'pl-PL': { label: `Polski (Polska) (${progress["pl"].translationProgress}%)` }, 'pt-BR': { label: `Português (Brasil) (${progress["pt-BR"].translationProgress}%)` }, 'ru-RU': { label: `Русский (Россия) (${progress["ru"].translationProgress}%)` }, 'zh-CN': { label: `中文(中国)(${progress["zh-CN"].translationProgress}%)` }, 'zh-TW': { label: `中文(台灣)(${progress["zh-TW"].translationProgress}%)` }, 'yo-NG': { label: `Èdè Yorùbá (Nàìjíríà) (${progress["yo"].translationProgress}%)` }, 'sr-CS': { label: `Српски (Србија) (${progress["sr-CS"].translationProgress}%)` }, 'vi-VN': { label: `Tiếng Việt (Việt Nam) (${progress["vi"].translationProgress}%)` }, } } const pkgJson = require('./package.json') /** @type {import('@docusaurus/types').DocusaurusConfig} */ module.exports = { title: 'Verdaccio', tagline: 'A lightweight Node.js private proxy registry', organizationName: 'verdaccio', projectName: 'verdaccio', url: 'https://verdaccio.org', baseUrl: '/', onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', favicon: "img/logo/uk/verdaccio-tiny-uk-no-bg.svg", i18n: i18nConfig, scripts: [ "https://buttons.github.io/buttons.js", ], plugins: [ 'docusaurus-plugin-sass', "docusaurus-plugin-contributors", isProductionDeployment && typeof process.env.SENTRY_KEY === 'string' && ['docusaurus-plugin-sentry', { DSN: process.env.SENTRY_KEY }], [ 'docusaurus-plugin-typedoc', { entryPoints: ['../packages/node-api/src/index.ts'], tsconfig: '../packages/node-api/tsconfig.build.json', id: 'api/node-api', out: 'api/node-api', // theme: 'default', excludePrivate: false, excludeProtected: true, categorizeByGroup: false, excludeInternal: true, sidebar: { categoryLabel: '@verdaccio/node-api', // position: 1, fullNames: true }, }, ], [ 'content-docs', ({ id: 'community', path: 'community', routeBasePath: 'community', sidebarPath: require.resolve('./sidebarsCommunity.js'), showLastUpdateTime: true, }), ], [ 'docusaurus-plugin-typedoc', { entryPoints: ['../packages/config/src/index.ts'], tsconfig: '../packages/config/tsconfig.build.json', id: 'api/config', out: 'api/config', sidebar: { categoryLabel: '@verdaccio/config', fullNames: true }, }, ], [ 'docusaurus-plugin-typedoc', { entryPoints: ['../packages/core/core/src/index.ts'], tsconfig: '../packages/core/core/tsconfig.build.json', id: 'api/core', out: 'api/core', sidebar: { categoryLabel: '@verdaccio/core', fullNames: true }, }, ], [ 'docusaurus-plugin-typedoc', { entryPoints: ['../packages/core/types/src/types.ts'], tsconfig: '../packages/core/types/tsconfig.build.json', id: 'api/types', out: 'api/types', categorizeByGroup: false, includeVersion: true, sidebar: { categoryLabel: '@verdaccio/types', fullNames: true }, }, ], ], webpack: { jsLoader: (isServer) => ({ loader: require.resolve('esbuild-loader'), options: { loader: 'tsx', format: isServer ? 'cjs' : undefined, target: isServer ? 'node12' : 'es2017', }, }), }, customFields: { description: 'A lightweight Node.js private proxy registry' }, themeConfig: { announcementBar: { id: 'announcementBar', content: 'Help provide humanitarian support to Ukraine refugees!', isCloseable: false, backgroundColor: '#1595de', textColor: '#ffffff', }, algolia: { appId: 'B3TG5CBF5H', apiKey: 'ed054733cb03418e9af25b7beb82c924', indexName: 'verdaccio', contextualSearch: true }, docs: { sidebar: { hideable: true, autoCollapseCategories: true, }, }, navbar: { title: `Verdaccio - v${pkgJson.version}`, logo: { alt: 'Verdaccio Logo', src: "img/logo/uk/verdaccio-tiny-uk-no-bg.svg", }, items: [ { type: 'doc', docId: 'what-is-verdaccio', position: 'left', label: 'Docs', }, { type: 'doc', docId: 'api/node-api/index', position: 'left', label: 'API' }, { to: '/blog', label: 'Blog', position: 'left' }, { type: 'docsVersionDropdown', "position": "right", }, { href: 'https://opencollective.com/verdaccio', label: 'Sponsor us', position: 'right', }, { href: '/community', label: 'Community', position: 'left', }, { type: 'localeDropdown', position: 'right', dropdownItemsAfter: [ { href: 'https://crowdin.com/project/verdaccio', label: 'Help Us Translate', }, ], }, { href: 'https://github.com/verdaccio/verdaccio', position: 'right', className: 'header-github-link', 'aria-label': 'GitHub repository', }, ], }, footer: { style: 'dark', links: [ { title: 'Docs', items: [ { label: 'Getting Started', to: '/docs/what-is-verdaccio', }, { label: 'Docker', to: '/docs/docker', }, { label: 'Configuration', to: '/docs/configuration', }, { label: 'Logos', to: '/docs/logo', }, ], }, { title: 'Community', items: [ { label: 'Stack Overflow', href: 'https://stackoverflow.com/questions/tagged/verdaccio', }, { label: 'Discord', href: 'https://discord.gg/7qWJxBf', }, { label: 'Twitter', href: 'https://twitter.com/verdaccio_npm', }, ], }, { title: 'More', items: [ { label: 'Blog', to: '/blog', }, { label: 'GitHub', href: 'https://github.com/verdaccio/verdaccio', }, { label: 'Twitter', href: 'https://twitter.com/verdaccio_npm', }, { html: ` Deploys by Netlify `, }, ], }, ], copyright: `Copyright © ${new Date().getFullYear()} Verdaccio community. Built with Docusaurus.`, }, colorMode: { defaultMode: 'light', disableSwitch: false, respectPrefersColorScheme: true, }, prism: { theme: require('prism-react-renderer/themes/github'), darkTheme: require('prism-react-renderer/themes/nightOwl'), }, }, presets: [ [ '@docusaurus/preset-classic', { docs: { sidebarPath: require.resolve('./sidebars.js'), showLastUpdateAuthor: true, showLastUpdateTime: true, sidebarCollapsible: true, remarkPlugins: [ [require('@docusaurus/remark-plugin-npm2yarn'), {sync: true}], ], editUrl: ({ locale, docPath }) => { if (locale !== 'en') { return `https://crowdin.com/project/verdaccio/${locale}`; } return `https://github.com/verdaccio/verdaccio/edit/master/website/docs/${docPath}`; }, lastVersion : '5.x', versions: { current: { label: `6.x`, }, '5.x': { label: `5.x (Latest)`, }, }, }, googleAnalytics: { // trackingID: 'UA-2527438-21' trackingID: 'G-PCYM9FYJZT' }, gtag: { trackingID: 'G-PCYM9FYJZT' }, blog: { blogTitle: 'Verdaccio Official Blog', blogDescription: 'The official Verdaccio Node.js proxy registry blog', showReadingTime: true, postsPerPage: 3, feedOptions: { type: 'all', }, blogSidebarCount: 'ALL', blogSidebarTitle: 'All our posts', editUrl: ({ locale, blogDirPath, blogPath }) => { if (locale !== 'en') { return `https://crowdin.com/project/verdaccio/${locale}`; } return `https://github.com/verdaccio/verdaccio/edit/master/website/${blogDirPath}/${blogPath}`; }, }, theme: { customCss: require.resolve('./src/css/custom.scss'), }, }, ], ], };