0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2025-01-13 22:48:31 -05:00

feat: align with v5 ui endpoints and ui small bugfix (#2913)

* fix: language switch position issue

* align with v5 endpoints for web

* fix: endpoints

* add changeset

* fix test

* fix test
This commit is contained in:
Juan Picado 2022-01-15 20:12:28 +01:00 committed by GitHub
parent 91fff48cb1
commit 048ac95e8b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
34 changed files with 85 additions and 2241 deletions

View file

@ -0,0 +1,7 @@
---
'@verdaccio/ui-theme': minor
'@verdaccio/server': minor
'@verdaccio/web': minor
---
feat: align with v5 ui endpoints and ui small bugfix

View file

@ -3,7 +3,7 @@ import { rest } from 'msw';
const packagesPayload = require('./api/packages.json');
export const handlers = [
rest.get('http://localhost:9000/-/verdaccio/packages', (req, res, ctx) => {
rest.get('http://localhost:9000/-/verdaccio/data/packages', (req, res, ctx) => {
return res(ctx.json(packagesPayload));
}),
];

View file

@ -290,9 +290,11 @@ const Option = styled('div')<{ isSelected: boolean }>(({ isSelected }) => ({
const StyledPaper = withStyles((theme: Theme) => ({
root: {
marginTop: theme?.spacing(0.5),
position: 'absolute',
borderRadius: 3,
maxHeight: 165,
overflowY: 'scroll',
zIndex: 10000,
overflowX: 'hidden',
},
}))(Paper);

View file

@ -1,168 +0,0 @@
{
"copy-to-clipboard": "Zkopírovat do schránky",
"author-anonymous": "Anonymní",
"author-unknown": "Neznámý",
"action-bar-action": {
"visit-home-page": "Navštívit domovskou stránku",
"open-an-issue": "Otevřít otázku",
"download-tarball": "Stáhnout archív (Tar)"
},
"dialog": {
"registry-info": {
"title": "Informace o registru"
}
},
"header": {
"documentation": "Dokumentace",
"registry-info": "Informace o registru",
"greetings": "Ahoj "
},
"search": {
"packages": "Hledat balíčky"
},
"autoComplete": {
"loading": "Načítání...",
"no-results-found": "Nebyly nalezeny žádné výsledky",
"clear": "Vyčistit",
"expand": "Otevřít",
"collapse": "Zavřít"
},
"tab": {
"uplinks": "Uplinky",
"versions": "Verze",
"dependencies": "Závislosti",
"readme": "Přečti si mě"
},
"uplinks": {
"title": "Uplinky",
"no-items": "{{name}} nemá žádné uplinky."
},
"versions": {
"current-tags": "Aktuální značky",
"version-history": "Historie verzí",
"not-available": "Nedostupné"
},
"package": {
"published-on": "Zveřejněno v {{time}} •",
"version": "v{{version}}",
"visit-home-page": "Navštívit domovskou stránku",
"homepage": "Domovská stránka",
"open-an-issue": "Otevřít otázku",
"bugs": "Chyby",
"download": "Stáhnout {{what}}",
"the-tar-file": "tar soubor",
"tarball": "Archív (Tar)"
},
"dependencies": {
"has-no-dependencies": "{{package}} nemá žádné závislosti.",
"dependency-block": "{{package}}@{{version}}"
},
"form": {
"username": "Uživatelské jméno",
"password": "Heslo"
},
"form-placeholder": {
"username": "Vaše uživatelské jméno",
"password": "Vaše silné heslo"
},
"form-validation": {
"required-field": "Toto pole je povinné",
"required-min-length": "Toto pole vyžaduje zadání alespoň {{length}} znaků",
"unable-to-sign-in": "Přihlášení se nezdařilo",
"username-or-password-cant-be-empty": "Uživatelské jméno nebo heslo nemohou být prázdné!"
},
"help": {
"title": "Zatím nebyl zveřejně žádný balíček.",
"sub-title": "Pro zveřejnění vašeho prvního balíčku proveďte následující:",
"first-step": "1. Přihlašte se",
"first-step-command-line": "npm adduser --registry {{registryUrl}}",
"second-step": "2. Zveřejněte balíček",
"second-step-command-line": "npm publish --registry {{registryUrl}}",
"third-step": "3. Obnovte tuto stránku."
},
"sidebar": {
"detail": {
"latest-version": "Nejnovější v{{version}}",
"version": "v{{version}}"
},
"installation": {
"title": "Instalace",
"install-using-yarn": "Instalace pomocí yarn",
"install-using-yarn-command": "yarn add {{packageName}}",
"install-using-npm": "Instalace pomocí npm",
"install-using-npm-command": "npm install {{packageName}}",
"install-using-pnpm": "Instalace pomocí pnpm",
"install-using-pnpm-command": "pnpm install {{packageName}}"
},
"repository": {
"title": "Repozitář"
},
"author": {
"title": "Autor"
},
"distribution": {
"title": "Nejnovější distribuce",
"license": "Licence",
"size": "Velikost",
"file-count": "počet souborů"
},
"maintainers": {
"title": "Správci"
},
"contributors": {
"title": "Přispěvatelé"
},
"engines": {
"npm-version": "NPM verze",
"node-js": "NODE JS"
}
},
"footer": {
"powered-by": "Pohání",
"made-with-love-on": "Tvořeno s <0>♥</0> na"
},
"button": {
"close": "Zavřít",
"cancel": "Zrušit",
"login": "Přihlásit se",
"logout": "Odhlásit se",
"go-to-the-home-page": "Přejít na domovskou stránku",
"learn-more": "Více informací",
"fund-this-package": "<0>Sponzorovat</0> tento balíček"
},
"error": {
"unspecific": "Něco se pokazilo.",
"404": {
"page-not-found": "404 - Stránka nebyla nalezena",
"sorry-we-could-not-find-it": "Omlouváme se, ale nepodařilo se nám to najít..."
},
"app-context-not-correct-used": "Kontext aplikace nebyl použit správným způsobem",
"theme-context-not-correct-used": "Kontext šablony nebyl použit správným způsobem",
"package-meta-is-required-at-detail-context": "packageMeta je vyžadováno v DetailContext"
},
"lng": {
"english": "Angličtina",
"czech": "Čeština",
"japanese": "Japonština",
"portuguese": "Portugalština",
"spanish": "Španělština",
"german": "Němčina",
"chinese": "Čínština",
"chineseTraditional": "Čínština (tradiční)",
"french": "Francouzština",
"russian": "Ruský",
"turkish": "Turečtina",
"ukraine": "Ukrajinština",
"khmer": "Khmerština"
},
"flag": {
"austria": "Rakousko",
"brazil": "Brazílie",
"spain": "Španělsko",
"nicaragua": "Nikaragua",
"india": "Indie",
"china": "Čína",
"germany": "Německo",
"taiwan": "Tchaj-wan"
}
}

View file

@ -1,168 +0,0 @@
{
"copy-to-clipboard": "In die Zwischenablage kopieren",
"author-anonymous": "Anonymus",
"author-unknown": "Unbekannt",
"action-bar-action": {
"visit-home-page": "Zur Homepage",
"open-an-issue": "Einen Fehler melden",
"download-tarball": "Archiv (Tarball) herunterladen"
},
"dialog": {
"registry-info": {
"title": "Registrierungsinformationen"
}
},
"header": {
"documentation": "Dokumentation",
"registry-info": "Registrierungsinformationen",
"greetings": "Hallo "
},
"search": {
"packages": "Pakete suchen"
},
"autoComplete": {
"loading": "wird geladen...",
"no-results-found": "Kein Ergebnis gefunden",
"clear": "Löschen",
"expand": "Erweitern",
"collapse": "Zurückziehen"
},
"tab": {
"uplinks": "Uplinks",
"versions": "Versionen",
"dependencies": "Abhängigkeiten",
"readme": "Liesmich"
},
"uplinks": {
"title": "Uplinks",
"no-items": "{{name}} hat keine Uplinks."
},
"versions": {
"current-tags": "Aktuelle Tags",
"version-history": "Versionsgeschichte",
"not-available": "Nicht verfügbar"
},
"package": {
"published-on": "Veröffentlicht am {{time}} •",
"version": "v{{version}}",
"visit-home-page": "Zur Homepage",
"homepage": "Homepage",
"open-an-issue": "Einen Fehler melden",
"bugs": "Fehler",
"download": "{{what}} herunterladen",
"the-tar-file": "die tar-Datei",
"tarball": "Archiv (Tarball)"
},
"dependencies": {
"has-no-dependencies": "{{package}} hat keine Abhängigkeiten",
"dependency-block": "{{package}}@{{version}}"
},
"form": {
"username": "Benutzername",
"password": "Passwort"
},
"form-placeholder": {
"username": "Dein Benutzername",
"password": "Dein sicheres Passwort"
},
"form-validation": {
"required-field": "Dieses Feld ist erforderlich",
"required-min-length": "Dieses Feld erfordert eine Mindestlänge von {{length}}",
"unable-to-sign-in": "Anmeldung nicht möglich",
"username-or-password-cant-be-empty": "Benutzername und Passwort dürfen nicht leer sein!"
},
"help": {
"title": "Noch kein Paket publiziert.",
"sub-title": "Um dein erstes Paket einfach zu publizieren:",
"first-step": "1. Einloggen",
"first-step-command-line": "npm adduser --registry {{registryUrl}}",
"second-step": "2. Publizieren",
"second-step-command-line": "npm publish --registry {{registryUrl}}",
"third-step": "3. Diese Seite aktualisieren."
},
"sidebar": {
"detail": {
"latest-version": "Letzte v{{version}}",
"version": "v{{version}}"
},
"installation": {
"title": "Installierung",
"install-using-yarn": "Mit yarn installieren",
"install-using-yarn-command": "yarn add {{packageName}}",
"install-using-npm": "Mit npm installieren",
"install-using-npm-command": "npm install {{packageName}}",
"install-using-pnpm": "Mit pnpm installieren",
"install-using-pnpm-command": "pnpm install {{packageName}}"
},
"repository": {
"title": "Repository"
},
"author": {
"title": "Autor(in)"
},
"distribution": {
"title": "Neueste Distribution",
"license": "Lizenz",
"size": "Größe",
"file-count": "Anzahl der Dateien"
},
"maintainers": {
"title": "Maintainer"
},
"contributors": {
"title": "Contributor"
},
"engines": {
"npm-version": "NPM Version",
"node-js": "NODE JS"
}
},
"footer": {
"powered-by": "Unterstützt von",
"made-with-love-on": "Gemacht mit <0>♥</0> in"
},
"button": {
"close": "Schließen",
"cancel": "Abbrechen",
"login": "Einloggen",
"logout": "Ausloggen",
"go-to-the-home-page": "Zur Homepage",
"learn-more": "Mehr erfahren",
"fund-this-package": "Dieses Paket <0>finanzieren</0>"
},
"error": {
"unspecific": "Etwas ist schief gelaufen.",
"404": {
"page-not-found": "404 - Seite nicht gefunden",
"sorry-we-could-not-find-it": "Entschuldigung, wir konnten es nicht finden..."
},
"app-context-not-correct-used": "Der App-Kontext wurde nicht korrekt verwendet",
"theme-context-not-correct-used": "Der Theme-Kontext wurde nicht korrekt verwendet",
"package-meta-is-required-at-detail-context": "packageMeta wird bei DetailContext benötigt"
},
"lng": {
"english": "Englisch",
"czech": "Tschechisch",
"japanese": "Japanisch",
"portuguese": "Portugiesisch",
"spanish": "Spanisch",
"german": "Deutsch",
"chinese": "Chinesisch",
"chineseTraditional": "Chinesisch (Traditionell)",
"french": "Französisch",
"russian": "Russisch",
"turkish": "Türkisch",
"ukraine": "Ukrainisch",
"khmer": "Khmer"
},
"flag": {
"austria": "Österreich",
"brazil": "Brasilien",
"spain": "Spanien",
"nicaragua": "Nicaragua",
"india": "Indien",
"china": "China",
"germany": "Deutschland",
"taiwan": "Taiwan"
}
}

View file

@ -1,170 +0,0 @@
{
"copy-to-clipboard": "Copy to clipboard",
"author-anonymous": "Anonymous",
"author-unknown": "Unknown",
"action-bar-action": {
"visit-home-page": "Visit homepage",
"open-an-issue": "Open an issue",
"download-tarball": "Download tarball"
},
"dialog": {
"registry-info": {
"title": "Registry Info"
}
},
"header": {
"documentation": "Documentation",
"registry-info": "Registry Information",
"registry-info-link": "Learn more",
"registry-no-conf": "No configurations available",
"greetings": "Hi "
},
"search": {
"packages": "Search Packages"
},
"autoComplete": {
"loading": "Loading...",
"no-results-found": "No results found",
"clear": "Clear",
"expand": "Expand",
"collapse": "Collapse"
},
"tab": {
"uplinks": "Uplinks",
"versions": "Versions",
"dependencies": "Dependencies",
"readme": "Readme"
},
"uplinks": {
"title": "Uplinks",
"no-items": "{{name}} has no uplinks."
},
"versions": {
"current-tags": "Current Tags",
"version-history": "Version history",
"not-available": "Not available"
},
"package": {
"published-on": "Published on {{time}} •",
"version": "v{{version}}",
"visit-home-page": "Visit homepage",
"homepage": "Homepage",
"open-an-issue": "Open an issue",
"bugs": "Bugs",
"download": "Download {{what}}",
"the-tar-file": "the tar file",
"tarball": "Tarball"
},
"dependencies": {
"has-no-dependencies": "{{package}} has no dependencies.",
"dependency-block": "{{package}}@{{version}}"
},
"form": {
"username": "Username",
"password": "Password"
},
"form-placeholder": {
"username": "Your username",
"password": "Your strong password"
},
"form-validation": {
"required-field": "This field is required",
"required-min-length": "This field required the min length of {{length}}",
"unable-to-sign-in": "Unable to sign in",
"username-or-password-cant-be-empty": "Username or password can't be empty!"
},
"help": {
"title": "No Package Published Yet.",
"sub-title": "To publish your first package just:",
"first-step": "1. Login",
"first-step-command-line": "npm adduser --registry {{registryUrl}}",
"second-step": "2. Publish",
"second-step-command-line": "npm publish --registry {{registryUrl}}",
"third-step": "3. Refresh this page."
},
"sidebar": {
"detail": {
"latest-version": "Latest v{{version}}",
"version": "v{{version}}"
},
"installation": {
"title": "Installation",
"install-using-yarn": "Install using yarn",
"install-using-yarn-command": "yarn add {{packageName}}",
"install-using-npm": "Install using npm",
"install-using-npm-command": "npm install {{packageName}}",
"install-using-pnpm": "Install using pnpm",
"install-using-pnpm-command": "pnpm install {{packageName}}"
},
"repository": {
"title": "Repository"
},
"author": {
"title": "Author"
},
"distribution": {
"title": "Latest Distribution",
"license": "License",
"size": "Size",
"file-count": "file count"
},
"maintainers": {
"title": "Maintainers"
},
"contributors": {
"title": "Contributors"
},
"engines": {
"npm-version": "NPM Version",
"node-js": "NODE JS"
}
},
"footer": {
"powered-by": "Powered by",
"made-with-love-on": "Made with <0>♥</0> on"
},
"button": {
"close": "Close",
"cancel": "Cancel",
"login": "Login",
"logout": "Logout",
"go-to-the-home-page": "Go to the home page",
"learn-more": "Learn More",
"fund-this-package": "<0>Fund</0> this package"
},
"error": {
"unspecific": "Something went wrong.",
"404": {
"page-not-found": "404 - Page not found",
"sorry-we-could-not-find-it": "Sorry, we couldn't find it..."
},
"app-context-not-correct-used": "The app context was not used correctly",
"theme-context-not-correct-used": "The theme context was not used correctly",
"package-meta-is-required-at-detail-context": "packageMeta is required at DetailContext"
},
"lng": {
"english": "English",
"czech": "Czech",
"japanese": "Japanese",
"portuguese": "Portuguese",
"spanish": "Spanish",
"german": "German",
"chinese": "Chinese",
"chineseTraditional": "Chinese (Traditional)",
"french": "French",
"russian": "Russian",
"turkish": "Turkish",
"ukraine": "Ukraine",
"khmer": "Khmer"
},
"flag": {
"austria": "Austria",
"brazil": "Brazil",
"spain": "Spain",
"nicaragua": "Nicaragua",
"india": "India",
"china": "China",
"germany": "Germany",
"taiwan": "Taiwan"
}
}

View file

@ -1,168 +0,0 @@
{
"copy-to-clipboard": "Copiar al portapapeles",
"author-anonymous": "Anónimo",
"author-unknown": "Desconocido",
"action-bar-action": {
"visit-home-page": "Visitar página principal",
"open-an-issue": "Reportar un error",
"download-tarball": "Descargar librería"
},
"dialog": {
"registry-info": {
"title": "Información del Registro"
}
},
"header": {
"documentation": "Documentación",
"registry-info": "Información del Registro",
"greetings": "Hola "
},
"search": {
"packages": "Buscar paquetes"
},
"autoComplete": {
"loading": "Cargando...",
"no-results-found": "No se encontraron resultados",
"clear": "Limpiar",
"expand": "Expandir",
"collapse": "Retraer"
},
"tab": {
"uplinks": "Remoto",
"versions": "Versiones",
"dependencies": "Dependencias",
"readme": "Léeme"
},
"uplinks": {
"title": "Remoto",
"no-items": "{{name}} no tiene remotos."
},
"versions": {
"current-tags": "Etiquetas actuales",
"version-history": "Historial de versiones",
"not-available": "No disponible"
},
"package": {
"published-on": "Publicado en {{time}} •",
"version": "v{{version}}",
"visit-home-page": "Ir a la página principal",
"homepage": "Página pricinpal",
"open-an-issue": "Reportar un problema",
"bugs": "Errores",
"download": "Descargar {{what}}",
"the-tar-file": "el archivo tar",
"tarball": "Librería"
},
"dependencies": {
"has-no-dependencies": "{{package}} no tiene dependencias.",
"dependency-block": "{{package}}@{{version}}"
},
"form": {
"username": "Usuario",
"password": "Contraseña"
},
"form-placeholder": {
"username": "Tu usuario",
"password": "Tu contraseña segura"
},
"form-validation": {
"required-field": "Este campo es requerido",
"required-min-length": "Este campo es requerido y la mínima longitud es {{length}}",
"unable-to-sign-in": "No se pudo iniciar sesión",
"username-or-password-cant-be-empty": "El nombre de usuario o la contraseña no pueden estar vacíos!"
},
"help": {
"title": "Ningún paquete ha sido publicado aún.",
"sub-title": "Para publicar tu primer paquete:",
"first-step": "1. Inicia sesión",
"first-step-command-line": "npm adduser --registry {{registryUrl}}",
"second-step": "2. Publica",
"second-step-command-line": "npm publish --registry {{registryUrl}}",
"third-step": "3. Refresca la página."
},
"sidebar": {
"detail": {
"latest-version": "Última v{{version}}",
"version": "v{{version}}"
},
"installation": {
"title": "Instalación",
"install-using-yarn": "Instala usando yarn",
"install-using-yarn-command": "yarn add {{packageName}}",
"install-using-npm": "Instala usando npm",
"install-using-npm-command": "npm install {{packageName}}",
"install-using-pnpm": "Instala usando pnpm",
"install-using-pnpm-command": "pnpm install {{packageName}}"
},
"repository": {
"title": "Repositorio"
},
"author": {
"title": "Autor"
},
"distribution": {
"title": "Última distribución",
"license": "Licencia",
"size": "Tamaño",
"file-count": "archivo cuenta"
},
"maintainers": {
"title": "Mantenedores"
},
"contributors": {
"title": "Colaboradores"
},
"engines": {
"npm-version": "Versión NPM",
"node-js": "NODE JS"
}
},
"footer": {
"powered-by": "Hecho con",
"made-with-love-on": "Hecho con <0>♥</0> on"
},
"button": {
"close": "Cerrar",
"cancel": "Cancelar",
"login": "Iniciar sesión",
"logout": "Cerrar sesión",
"go-to-the-home-page": "Ir a la página principal",
"learn-more": "Aprender más",
"fund-this-package": "<0>Donar</0> a este paquete"
},
"error": {
"unspecific": "Algo salió mal.",
"404": {
"page-not-found": "404 - Paquete no encontrado",
"sorry-we-could-not-find-it": "Lo siento, no pudimos encontrarlo..."
},
"app-context-not-correct-used": "El contexto de la aplicación no fue correctamente usado",
"theme-context-not-correct-used": "El contexto del tema no fue correctamente usado",
"package-meta-is-required-at-detail-context": "packageMeta es requerido en DetailContext"
},
"lng": {
"english": "Inglés",
"czech": "Checo",
"japanese": "Japonés",
"portuguese": "Portugués",
"spanish": "Español",
"german": "Alemán",
"chinese": "Chino",
"chineseTraditional": "Chino (Tradicional)",
"french": "Francés",
"russian": "Ruso",
"turkish": "Turco",
"ukraine": "Ucraniano",
"khmer": "khmer"
},
"flag": {
"austria": "Austria",
"brazil": "Brasil",
"spain": "España",
"nicaragua": "Nicaragua",
"india": "India",
"china": "China",
"germany": "Alemania",
"taiwan": "Taiwán"
}
}

View file

@ -1,168 +0,0 @@
{
"copy-to-clipboard": "Copier dans le presse-papier",
"author-anonymous": "Anonyme",
"author-unknown": "Inconnue",
"action-bar-action": {
"visit-home-page": "Visiter la page d'accueil",
"open-an-issue": "Ouvrir un ticket",
"download-tarball": "Télécharger l'archive"
},
"dialog": {
"registry-info": {
"title": "Informations du Registry"
}
},
"header": {
"documentation": "Documentation",
"registry-info": "Informations du Registry",
"greetings": "Bonjour "
},
"search": {
"packages": "Rechercher des paquets"
},
"autoComplete": {
"loading": "En cours de chargement...",
"no-results-found": "Aucun resultat trouvé",
"clear": "Nettoyer",
"expand": "Développer",
"collapse": "Se rétracter"
},
"tab": {
"uplinks": "Uplinks",
"versions": "Versions",
"dependencies": "Dépendances",
"readme": "Readme"
},
"uplinks": {
"title": "Uplinks",
"no-items": "{{name}} n'a pas de uplink."
},
"versions": {
"current-tags": "Tags courants",
"version-history": "Historique de version",
"not-available": "Non disponible"
},
"package": {
"published-on": "Publié le {{time}} •",
"version": "v{{version}}",
"visit-home-page": "Visiter la page d'accueil",
"homepage": "Page d'accueil",
"open-an-issue": "Ouvrir un ticket",
"bugs": "Bugs",
"download": "Télécharger {{what}}",
"the-tar-file": "le fichier tar",
"tarball": "Archive"
},
"dependencies": {
"has-no-dependencies": "{{package}} n'a aucune dépendance.",
"dependency-block": "{{package}}@{{version}}"
},
"form": {
"username": "Nom d'utilisateur",
"password": "Mot de passe"
},
"form-placeholder": {
"username": "Votre nom d'utilisateur",
"password": "Votre mot de passe"
},
"form-validation": {
"required-field": "Ce champ est obligatoire",
"required-min-length": "Ce champ doit faire au moins {{length}} caractères",
"unable-to-sign-in": "Connexion impossible",
"username-or-password-cant-be-empty": "Le nom d'utilisateur ou mot de passe ne peut pas être vide!"
},
"help": {
"title": "Aucun paquet publié pour l'instant.",
"sub-title": "Pour publier votre premier paquet:",
"first-step": "1. Se connecter",
"first-step-command-line": "npm adduser --registry {{registryUrl}}",
"second-step": "2. Publier",
"second-step-command-line": "npm publish --registry {{registryUrl}}",
"third-step": "3. Recharger cette page."
},
"sidebar": {
"detail": {
"latest-version": "Dernière v{{version}}",
"version": "v{{version}}"
},
"installation": {
"title": "Installation",
"install-using-yarn": "Installer avec yarn",
"install-using-yarn-command": "yarn add {{packageName}}",
"install-using-npm": "Installer avec npm",
"install-using-npm-command": "npm install {{packageName}}",
"install-using-pnpm": "Installer avec pnpm",
"install-using-pnpm-command": "pnpm install {{packageName}}"
},
"repository": {
"title": "Dépôt"
},
"author": {
"title": "Auteur"
},
"distribution": {
"title": "Dernière distribution",
"license": "Licence",
"size": "Taille",
"file-count": "nombre de fichiers"
},
"maintainers": {
"title": "Mainteneurs"
},
"contributors": {
"title": "Contributeurs"
},
"engines": {
"npm-version": "Version NPM",
"node-js": "NODE JS"
}
},
"footer": {
"powered-by": "Propulsé par",
"made-with-love-on": "Fait avec <0>♥</0> sur"
},
"button": {
"close": "Fermer",
"cancel": "Annuler",
"login": "Se connecter",
"logout": "Se déconnecter",
"go-to-the-home-page": "Aller à la page d'accueil",
"learn-more": "En savoir plus",
"fund-this-package": "<0>Financer</0> ce paquet"
},
"error": {
"unspecific": "Quelque chose a mal tourné.",
"404": {
"page-not-found": "404 - Page non trouvée",
"sorry-we-could-not-find-it": "Desolé, nous n'avons rien retrouvé..."
},
"app-context-not-correct-used": "Le contexte de l'application n'a pas été utilisé correctement",
"theme-context-not-correct-used": "Le contexte du thème n'a pas été utilisé correctement",
"package-meta-is-required-at-detail-context": "packageMeta est obligatoire à DetailContext"
},
"lng": {
"english": "Anglais",
"czech": "Tchèque",
"japanese": "Japonais",
"portuguese": "Portugais",
"spanish": "Espagnol",
"german": "Allemand",
"chinese": "Chinois",
"chineseTraditional": "Chinois (Traditionnel)",
"french": "Français",
"russian": "Russe",
"turkish": "Turc",
"ukraine": "Ukrainien",
"khmer": "Khmer"
},
"flag": {
"austria": "L'Autriche",
"brazil": "Brésil",
"spain": "Espagne",
"nicaragua": "Nicaragua",
"india": "Inde",
"china": "Chine",
"germany": "Allemagne",
"taiwan": "Taïwan"
}
}

View file

@ -1,168 +0,0 @@
{
"copy-to-clipboard": "クリップボードにコピー",
"author-anonymous": "匿名",
"author-unknown": "わからない",
"action-bar-action": {
"visit-home-page": "ホームページへ移動",
"open-an-issue": "課題を開く",
"download-tarball": "tar形式でダウンロード"
},
"dialog": {
"registry-info": {
"title": "レジストリの設定方法"
}
},
"header": {
"documentation": "ドキュメント",
"registry-info": "レジストリ情報",
"greetings": "こんにちは、"
},
"search": {
"packages": "パッケージを検索"
},
"autoComplete": {
"loading": "ロード中...",
"no-results-found": "パッケージが見つかりませんでした",
"clear": "きれいにするため",
"expand": "拡大する",
"collapse": "撤回する"
},
"tab": {
"uplinks": "アップリンク",
"versions": "バージョン情報",
"dependencies": "依存パッケージ",
"readme": "Readme"
},
"uplinks": {
"title": "アップリンク",
"no-items": "{{name}}にアップリンクはありません"
},
"versions": {
"current-tags": "タグ一覧",
"version-history": "バージョン履歴",
"not-available": "利用できません"
},
"package": {
"published-on": "{{time}}に更新されました •",
"version": "v{{version}}",
"visit-home-page": "ホームページへ移動",
"homepage": "ホームページ",
"open-an-issue": "課題を開く",
"bugs": "バグ",
"download": "{{what}}ダウンロード",
"the-tar-file": "tar形式のファイル",
"tarball": "tar形式でダウンロード"
},
"dependencies": {
"has-no-dependencies": "{{package}}に依存パッケージはありません",
"dependency-block": "{{package}}@{{version}}"
},
"form": {
"username": "ユーザ名",
"password": "パスワード"
},
"form-placeholder": {
"username": "あなたのユーザ名",
"password": "あなたのパスワード"
},
"form-validation": {
"required-field": "この項目は必ず入力して下さい",
"required-min-length": "この項目は{{length}}文字以上入力して下さい",
"unable-to-sign-in": "サインインできません",
"username-or-password-cant-be-empty": "ユーザ名とパスワードは空にできません"
},
"help": {
"title": "まだパッケージが登録されていません",
"sub-title": "以下の手順で最初のパッケージを登録しましょう",
"first-step": "1. ログイン",
"first-step-command-line": "npm adduser --registry {{registryUrl}}",
"second-step": "2. 登録",
"second-step-command-line": "npm publish --registry {{registryUrl}}",
"third-step": "3. このページを再読み込みして下さい"
},
"sidebar": {
"detail": {
"latest-version": "最新バージョンは{{version}}です",
"version": "v{{version}}"
},
"installation": {
"title": "インストール方法",
"install-using-yarn": "yarnでインストール",
"install-using-yarn-command": "yarn add {{packageName}}",
"install-using-npm": "npmでインストール",
"install-using-npm-command": "npm install {{packageName}}",
"install-using-pnpm": "pnpmでインストール",
"install-using-pnpm-command": "pnpm install {{packageName}}"
},
"repository": {
"title": "リポジトリ"
},
"author": {
"title": "作者"
},
"distribution": {
"title": "最新の配信内容",
"license": "ライセンス",
"size": "サイズ",
"file-count": "ファイル数"
},
"maintainers": {
"title": "パッケージメンテナ"
},
"contributors": {
"title": "コントリビューター"
},
"engines": {
"npm-version": "NPM Version",
"node-js": "NODE JS"
}
},
"footer": {
"powered-by": "Powered by",
"made-with-love-on": "Made with <0>♥</0> on"
},
"button": {
"close": "閉じる",
"cancel": "キャンセル",
"login": "ログイン",
"logout": "ログアウト",
"go-to-the-home-page": "トップページに戻る",
"learn-more": "もっと知る",
"fund-this-package": "このパッケージに<0>投資</0>"
},
"error": {
"unspecific": "何か問題が発生したようです。",
"404": {
"page-not-found": "404 - Page not found",
"sorry-we-could-not-find-it": "残念ながら、ご指定のページはありませんでした…。"
},
"app-context-not-correct-used": "AppContextが正しく使用されませんでした",
"theme-context-not-correct-used": "ThemeContextが正しく使用されませんでした",
"package-meta-is-required-at-detail-context": "DetailContextではpackageMetaが必要です"
},
"lng": {
"english": "英語",
"czech": "チェコ人",
"japanese": "日本語",
"portuguese": "ポルトガル語",
"spanish": "スペイン語",
"german": "ドイツ語",
"chinese": "中国語",
"chineseTraditional": "繁体字中国語",
"french": "フランス語",
"russian": "ロシア",
"turkish": "トルコ人",
"ukraine": "ウクライナ",
"khmer": "クメール語"
},
"flag": {
"austria": "オーストリア",
"brazil": "ブラジル",
"spain": "スペイン",
"nicaragua": "ニカラグア",
"india": "インド",
"china": "中国",
"germany": "ドイツ",
"taiwan": "台湾"
}
}

View file

@ -1,168 +0,0 @@
{
"copy-to-clipboard": "ចម្លងទៅក្ដារតម្បៀតខ្ទាស់",
"author-anonymous": "គ្មានអត្តសញ្ញាណ",
"author-unknown": "មិនស្គាល់",
"action-bar-action": {
"visit-home-page": "ទស្សនាគេហទំព័រ",
"open-an-issue": "បើកកិច្ចការ",
"download-tarball": "ទាញយកកញ្ចប់ឯកសារ"
},
"dialog": {
"registry-info": {
"title": "ព័ត៌មានការចុះឈ្មោះ"
}
},
"header": {
"documentation": "ឯកសារ",
"registry-info": "ព័ត៌មានការចុះឈ្មោះ",
"greetings": "សួស្តី"
},
"search": {
"packages": "ស្វែងរកកញ្ចប់"
},
"autoComplete": {
"loading": "កំពុងផ្ទុក...",
"no-results-found": "រកមិនឃើញលទ្ធផល",
"clear": "សម្អាត",
"expand": "ពង្រីក",
"collapse": "ដកថយ"
},
"tab": {
"uplinks": "ភ្ជាប់តំណទៅ",
"versions": "កំណែ",
"dependencies": "អាស្រ័យលើ",
"readme": "អានខ្ញុំជាមុនសិន"
},
"uplinks": {
"title": "ភ្ជាប់តំណទៅ",
"no-items": "{{name}} គ្មានភ្ជាប់តំណទៅ។"
},
"versions": {
"current-tags": "ស្លាកបច្ចុប្បន្ន",
"version-history": "ប្រវត្តិសាស្រ្តជំនាន់",
"not-available": "Not available"
},
"package": {
"published-on": "បោះពុម្ភផ្សាយ {{time}}។",
"version": "v{{version}}",
"visit-home-page": "ទស្សនាគេហទំព័រ",
"homepage": "គេហទំព័រ",
"open-an-issue": "បើកកិច្ចការ",
"bugs": "កំហុស",
"download": "ទាញយក {{what}}",
"the-tar-file": "ឯកសាជា tar",
"tarball": "ឯកសារ Tarball"
},
"dependencies": {
"has-no-dependencies": "{{package}} មិនមានភាពអាស្រ័យ។",
"dependency-block": "{{package}}@{{version}}"
},
"form": {
"username": "ឈ្មោះអ្នកប្រើប្រាស់",
"password": "ពាក្យសម្ងាត់"
},
"form-placeholder": {
"username": "ឈ្មោះអ្នកប្រើរបស់អ្នក",
"password": "ពាក្យសម្ងាត់ខ្លាំងរបស់អ្នក"
},
"form-validation": {
"required-field": "ចន្លោះនេះត្រូវតែំពេញ",
"required-min-length": "ប្រអប់នេះទាមទារប្រវែងអប្បបរមា {{length}}",
"unable-to-sign-in": "មិនអាចចូលបានទេ",
"username-or-password-cant-be-empty": "ឈ្មោះអ្នកប្រើឬពាក្យសម្ងាត់មិនអាចទទេ!"
},
"help": {
"title": "មិនទាន់មានការបោះពុម្ពផ្សាយកញ្ចប់នៅឡើយទេ។",
"sub-title": "ដើម្បីផ្សព្វផ្សាយកញ្ចប់ដំបូងរបស់អ្នកគ្រាន់តែ៖",
"first-step": "1. ចូល",
"first-step-command-line": "npm adduser --registry {{registryUrl}}",
"second-step": "2. ផ្សព្វផ្សាយ",
"second-step-command-line": "npm publish --registry {{registryUrl}}",
"third-step": "ផ្ទុកទំព័រនេះឡើងវិញ។"
},
"sidebar": {
"detail": {
"latest-version": "ចុងក្រោយ v{{version}}",
"version": "v{{version}}"
},
"installation": {
"title": "ការដំឡើង",
"install-using-yarn": "ដំឡើងដោយប្រើ yarn",
"install-using-yarn-command": "yarn add {{packageName}}",
"install-using-npm": "ដំឡើងដោយប្រើ npm",
"install-using-npm-command": "npm install {{packageName}}",
"install-using-pnpm": "ដំឡើងដោយប្រើ pnpm",
"install-using-pnpm-command": "pnpm install {{packageName}}"
},
"repository": {
"title": "ឃ្លាំង"
},
"author": {
"title": "អ្នកនិពន្ធ"
},
"distribution": {
"title": "ការចែកចាយចុងក្រោយ",
"license": "អាជ្ញាប័ណ្ណ",
"size": "ទំហំ",
"file-count": "រាប់ឯកសារ"
},
"maintainers": {
"title": "អ្នកថែរក្សា"
},
"contributors": {
"title": "អ្នកចូលរួមអភិវឌ្ឍ"
},
"engines": {
"npm-version": "NPM កំណែ",
"node-js": "NODE JS"
}
},
"footer": {
"powered-by": "ឧបត្ថម្ភដោយ",
"made-with-love-on": "ផលិតជាមួយ <0>♥</0> លើ"
},
"button": {
"close": "បិទ",
"cancel": "បោះបង់",
"login": "ចូល",
"logout": "ចាកចេញ",
"go-to-the-home-page": "ទៅទំព័រដើម",
"learn-more": "ស្វែងយល់បន្ថែម",
"fund-this-package": "<0>Fund</0> កញ្ចប់នេះ"
},
"error": {
"unspecific": "មានអ្វីមួយមិនប្រក្រតី។",
"404": {
"page-not-found": "៤០៤ - រកមិនឃើញទំព័រ",
"sorry-we-could-not-find-it": "សូមទោសយើងមិនអាចរកវាឃើញទេ..."
},
"app-context-not-correct-used": "បរិបទកម្មវិធីមិនត្រូវបានប្រើត្រឹមត្រូវទេ",
"theme-context-not-correct-used": "បរិបទទម្រង់មិនត្រូវបានប្រើត្រឹមត្រូវទេ",
"package-meta-is-required-at-detail-context": "packageMeta ត្រូវបានទាមទារនៅ DetailContext"
},
"lng": {
"english": "អង់គ្លេស",
"czech": "ឆែក",
"japanese": "ជប៉ុន",
"portuguese": "ព័រទុយហ្កាល់",
"spanish": "អេស្ប៉ាញ",
"german": "អាឡឺម៉ង់",
"chinese": "ចិន",
"chineseTraditional": "ជនជាតិចិន (ប្រពៃណី)",
"french": "បារាំង",
"russian": "រុស្ស៊ី",
"turkish": "ទួរគី",
"ukraine": "អ៊ុយក្រែន",
"khmer": "ខ្មែរ"
},
"flag": {
"austria": "អូទ្រីស",
"brazil": "ប្រេស៊ីល",
"spain": "អេស្ប៉ាញ",
"nicaragua": "នីការ៉ាហ្គា",
"india": "ឥណ្ឌា",
"china": "ចិន",
"germany": "ប្រទេសអាល្លឺម៉ង់",
"taiwan": "តៃវ៉ាន់"
}
}

View file

@ -1,168 +0,0 @@
{
"copy-to-clipboard": "Copiar para área de transferência",
"author-anonymous": "Anônimo(a)",
"author-unknown": "Desconhecido",
"action-bar-action": {
"visit-home-page": "Visitar a página inicial",
"open-an-issue": "Criar um incidente",
"download-tarball": "Baixar Tarball"
},
"dialog": {
"registry-info": {
"title": "Informações do Registro"
}
},
"header": {
"documentation": "Documentação",
"registry-info": "Informações do Registro",
"greetings": "Oi "
},
"search": {
"packages": "Pesquisar Pacotes"
},
"autoComplete": {
"loading": "Carregando...",
"no-results-found": "Nenhum resultado encontrado",
"clear": "Limpar",
"expand": "Expandir",
"collapse": "Retrair"
},
"tab": {
"uplinks": "Uplinks",
"versions": "Versões",
"dependencies": "Dependências",
"readme": "Leia-me"
},
"uplinks": {
"title": "Uplinks",
"no-items": "{{name}} não tem uplinks."
},
"versions": {
"current-tags": "Tags atuais",
"version-history": "Histórico de versões",
"not-available": "Não disponível"
},
"package": {
"published-on": "Publicado em {{time}} •",
"version": "v{{version}}",
"visit-home-page": "Visitar a página inicial",
"homepage": "Página inicial",
"open-an-issue": "Criar um incidente",
"bugs": "Erros",
"download": "Baixar {{what}}",
"the-tar-file": "o arquivo tar",
"tarball": "Tarball"
},
"dependencies": {
"has-no-dependencies": "{{package}} não tem dependências.",
"dependency-block": "{{package}}@{{version}}"
},
"form": {
"username": "Nome do usuário",
"password": "Senha"
},
"form-placeholder": {
"username": "O seu nome",
"password": "A sua senha forte"
},
"form-validation": {
"required-field": "Este campo é obrigatório",
"required-min-length": "Este campo requer o mínimo de {{length}} caracteres",
"unable-to-sign-in": "Não foi possível fazer login",
"username-or-password-cant-be-empty": "Nome de usuário ou senha não podem estar vazios!"
},
"help": {
"title": "Nenhum pacote publicado ainda.",
"sub-title": "Para publicar seu primeiro pacote apenas:",
"first-step": "1. Faça login",
"first-step-command-line": "npm adduser --registry {{registryUrl}}",
"second-step": "2. Publique",
"second-step-command-line": "npm publish --registry {{registryUrl}}",
"third-step": "3. Atualize esta página."
},
"sidebar": {
"detail": {
"latest-version": "Última versão: v{{version}}",
"version": "v{{version}}"
},
"installation": {
"title": "Instalação",
"install-using-yarn": "Instale usando yarn",
"install-using-yarn-command": "yarn add {{packageName}}",
"install-using-npm": "Instale usando npm",
"install-using-npm-command": "npm install {{packageName}}",
"install-using-pnpm": "Instale usando pnpm",
"install-using-pnpm-command": "pnpm install {{packageName}}"
},
"repository": {
"title": "Repositório"
},
"author": {
"title": "Autor(a)"
},
"distribution": {
"title": "Distribuição mais recente",
"license": "Licença",
"size": "Tamanho",
"file-count": "Contagem de arquivos"
},
"maintainers": {
"title": "Mantenedores(as)"
},
"contributors": {
"title": "Contribuidores(as)"
},
"engines": {
"npm-version": "Versão NPM",
"node-js": "NODE JS"
}
},
"footer": {
"powered-by": "Feito por",
"made-with-love-on": "Feito com amor <0>♥</0> no(a)"
},
"button": {
"close": "Fechar",
"cancel": "Cancelar",
"login": "Conectar",
"logout": "Desconectar",
"go-to-the-home-page": "Ir para a página inicial",
"learn-more": "Leia mais",
"fund-this-package": "<0>Financie</0> este pacote"
},
"error": {
"unspecific": "Algo deu errado.",
"404": {
"page-not-found": "404 - Página não encontrada",
"sorry-we-could-not-find-it": "Desculpe, não conseguimos encontrar..."
},
"app-context-not-correct-used": "O contexto do aplicativo não foi usado corretamente",
"theme-context-not-correct-used": "O contexto do tema não foi usado corretamente",
"package-meta-is-required-at-detail-context": "packageMeta é requerido em DetailContext"
},
"lng": {
"english": "Inglês",
"czech": "Tcheco",
"japanese": "Japonês",
"portuguese": "Português",
"spanish": "Espanhol",
"german": "Alemão",
"chinese": "Chinês",
"chineseTraditional": "Chinês (Tradicional)",
"french": "Francês",
"russian": "Russo",
"turkish": "Turco",
"ukraine": "Ucraniano",
"khmer": "Khmer"
},
"flag": {
"austria": "Austria",
"brazil": "Brasil",
"spain": "Espanha",
"nicaragua": "Nicaragua",
"india": "India",
"china": "China",
"germany": "Alemanha",
"taiwan": "Taiwan"
}
}

View file

@ -1,168 +0,0 @@
{
"copy-to-clipboard": "Копировать в буфер обмена",
"author-anonymous": "Анонимный",
"author-unknown": "неизвестно",
"action-bar-action": {
"visit-home-page": "Посетить домашнюю страницу",
"open-an-issue": "Открыть вопрос, проблему, ...",
"download-tarball": "Скачать архив"
},
"dialog": {
"registry-info": {
"title": "Информация о реестре"
}
},
"header": {
"documentation": "Документация",
"registry-info": "Информация о реестре",
"greetings": "Привет "
},
"search": {
"packages": "Поиск пакетов"
},
"autoComplete": {
"loading": "Загрузка ...",
"no-results-found": "Ничего не найдено",
"clear": "Очистить",
"expand": "Развернуть",
"collapse": "Свернуть"
},
"tab": {
"uplinks": "Публикации",
"versions": "Версии",
"dependencies": "Зависимости",
"readme": "Описание"
},
"uplinks": {
"title": "Публикации",
"no-items": "{{name}} не опубликован."
},
"versions": {
"current-tags": "Текущие теги",
"version-history": "История версий",
"not-available": "Недоступен"
},
"package": {
"published-on": "Опубликовано {{time}} •",
"version": "v{{version}}",
"visit-home-page": "Посетить домашнюю страницу",
"homepage": "Домашняя страница",
"open-an-issue": "Открыть вопрос, проблему, ...",
"bugs": "Ошибки",
"download": "Скачать {{what}}",
"the-tar-file": "файл tar",
"tarball": "Скачать"
},
"dependencies": {
"has-no-dependencies": "{{package}} не имеет зависимостей.",
"dependency-block": "{{package}}@{{version}}"
},
"form": {
"username": "Имя пользователя",
"password": "Пароль"
},
"form-placeholder": {
"username": "Ваше имя пользователя",
"password": "Ваш надежный пароль"
},
"form-validation": {
"required-field": "Это поле является обязательным",
"required-min-length": "Для этого поля требуется минимальная длина {{length}}",
"unable-to-sign-in": "Невозможно войти",
"username-or-password-cant-be-empty": "Имя пользователя или пароль не могут быть пустыми!"
},
"help": {
"title": "Нет опубликованных пакетов",
"sub-title": "Опубликовать свой первый пакет просто:",
"first-step": "1. Подключитесь",
"first-step-command-line": "npm adduser --registry {{registryUrl}}",
"second-step": "2. Опубликуйте",
"second-step-command-line": "npm publish --registry {{registryUrl}}",
"third-step": "3. Обновите эту страницу."
},
"sidebar": {
"detail": {
"latest-version": "Последняя версия v{{version}}",
"version": "v{{version}}"
},
"installation": {
"title": "Установка",
"install-using-yarn": "Установка с помощью yarn",
"install-using-yarn-command": "yarn add {{packageName}}",
"install-using-npm": "Установка с помощью npm",
"install-using-npm-command": "npm install {{packageName}}",
"install-using-pnpm": "Установка с помощью pnpm",
"install-using-pnpm-command": "pnpm install {{packageName}}"
},
"repository": {
"title": "Хранилище"
},
"author": {
"title": "Автор"
},
"distribution": {
"title": "Условия распространения",
"license": "Лицензия",
"size": "Размер",
"file-count": "количество файлов"
},
"maintainers": {
"title": "Техническое сопровождение"
},
"contributors": {
"title": "Авторы"
},
"engines": {
"npm-version": "Версия NPM",
"node-js": "NODE JS"
}
},
"footer": {
"powered-by": "Работает на",
"made-with-love-on": "Сделано с <0>♥</0> на"
},
"button": {
"close": "Закрыть",
"cancel": "Отмена",
"login": "Войти",
"logout": "Выйти",
"go-to-the-home-page": "Перейдите на главную страницу",
"learn-more": "Изучайте больше",
"fund-this-package": "<0>Поддержать</0> этот пакет"
},
"error": {
"unspecific": "Что-то пошло не так.",
"404": {
"page-not-found": "404 - Страница не найдена",
"sorry-we-could-not-find-it": "К сожалению, мы не смогли его найти ..."
},
"app-context-not-correct-used": "Контекст программы использовался не правильно",
"theme-context-not-correct-used": "Контекст темы использовано неправильно",
"package-meta-is-required-at-detail-context": "packageMeta требуется в DetailContext"
},
"lng": {
"english": "Английский",
"czech": "Чешский",
"japanese": "Японский",
"portuguese": "Португальский",
"spanish": "Испанский",
"german": "Немецкий",
"russian": "Русский",
"chinese": "Китайский",
"chineseTraditional": "Китайский (Традиционный)",
"french": "Французский",
"turkish": "турецкий",
"ukraine": "Украинский",
"khmer": "Кхмерский"
},
"flag": {
"austria": "Австрия",
"brazil": "Бразилия",
"spain": "Испания",
"nicaragua": "Никарагуа",
"india": "Индия",
"china": "Китай",
"germany": "Германия",
"taiwan": "Тайвань"
}
}

View file

@ -1,168 +0,0 @@
{
"copy-to-clipboard": "Panoya kopyala",
"author-anonymous": "Anonim",
"author-unknown": "Bilinmeyen",
"action-bar-action": {
"visit-home-page": "Ana sayfayı ziyaret et",
"open-an-issue": "Sorunları aç",
"download-tarball": "Arşivi indir"
},
"dialog": {
"registry-info": {
"title": "Kayıt Bilgisi"
}
},
"header": {
"documentation": "Dokümantasyon",
"registry-info": "Kayıt Bilgileri",
"greetings": "Merhaba "
},
"search": {
"packages": "Paket Ara"
},
"autoComplete": {
"loading": "Yükleniyor...",
"no-results-found": "Sonuç bulunamadı",
"clear": "Temizle",
"expand": "Genişlet",
"collapse": "Dök"
},
"tab": {
"uplinks": "Bağlantılar",
"versions": "Sürümler",
"dependencies": "Bağımlılıklar",
"readme": "Beni Oku"
},
"uplinks": {
"title": "Bağlantılar",
"no-items": "{{name}} bağlantısı yok"
},
"versions": {
"current-tags": "Mevcut Etiketler",
"version-history": "Sürüm Tarihçesi",
"not-available": "Mevcut değil"
},
"package": {
"published-on": "{{time}}'de yayınlandı •",
"version": "v{{version}}",
"visit-home-page": "Ana sayfayı ziyaret et",
"homepage": "Ana sayfa",
"open-an-issue": "Sorunları aç",
"bugs": "Hatalar",
"download": "İndir {{what}}",
"the-tar-file": "arşiv dosyası",
"tarball": "Arşiv"
},
"dependencies": {
"has-no-dependencies": "{{package}} bağımlılığı yok.",
"dependency-block": "{{package}}@{{version}}"
},
"form": {
"username": "Kullanıcı Adı",
"password": "Parola"
},
"form-placeholder": {
"username": "Kullanıcı adınız",
"password": "Parolanız"
},
"form-validation": {
"required-field": "Bu alan gereklidir",
"required-min-length": "Bu alan en az {{length}} karakter uzunluğunda olmalıdır",
"unable-to-sign-in": "Oturum açılamıyor",
"username-or-password-cant-be-empty": "Kullanıcı adı veya parola boş olamaz!"
},
"help": {
"title": "Henüz Paket Yayınlanmadı.",
"sub-title": "İlk paketinizi yayınlamak için:",
"first-step": "1. Giriş",
"first-step-command-line": "npm adduser --registry {{registryUrl}}",
"second-step": "2. Yayınla",
"second-step-command-line": "npm publish --registry {{registryUrl}}",
"third-step": "3. Sayfayı yenile."
},
"sidebar": {
"detail": {
"latest-version": "En son sürüm v{{version}}",
"version": "v{{version}}"
},
"installation": {
"title": "Kurulum",
"install-using-yarn": "Yarn kullanarak kurulum",
"install-using-yarn-command": "yarn add {{packageName}}",
"install-using-npm": "NPM kullanarak kurulum",
"install-using-npm-command": "npm install {{packageName}}",
"install-using-pnpm": "pnpm kullanarak kurulum",
"install-using-pnpm-command": "pnpm install {{packageName}}"
},
"repository": {
"title": "Depo"
},
"author": {
"title": "Yazar"
},
"distribution": {
"title": "Son Dağıtım",
"license": "Lisans",
"size": "Boyut",
"file-count": "Dosya adedi"
},
"maintainers": {
"title": "Bakımcılar"
},
"contributors": {
"title": "Katkıda bulunanlar"
},
"engines": {
"npm-version": "NPM Sürümü",
"node-js": "NODE JS"
}
},
"footer": {
"powered-by": "Destekleyen",
"made-with-love-on": "<0>♥</0> ile yapılmıştır"
},
"button": {
"close": "Kapat",
"cancel": "İptal",
"login": "Giriş",
"logout": ıkış",
"go-to-the-home-page": "Ana sayfaya git",
"learn-more": "Daha Fazlasını Öğren",
"fund-this-package": "Bu paketi <0>fonla</0>"
},
"error": {
"unspecific": "Bir şeyler ters gitti.",
"404": {
"page-not-found": "404 - Sayfa bulunamadı",
"sorry-we-could-not-find-it": "Üzgünüz, bunu bulamadık..."
},
"app-context-not-correct-used": "Uygulama kapsamı doğru kullanılmadı",
"theme-context-not-correct-used": "Tema kapsamı doğru kullanılmadı",
"package-meta-is-required-at-detail-context": "DetailContext için packageMeta gereklidir"
},
"lng": {
"english": "İngilizce",
"czech": "Çekçe",
"japanese": "Japonca",
"portuguese": "Portekizce",
"spanish": "İspanyolca",
"german": "Almanca",
"chinese": "Çince",
"chineseTraditional": "Çince (Geleneksel)",
"french": "Fransızca",
"russian": "Rusça",
"turkish": "Türkçe",
"ukraine": "Ukraynaca",
"khmer": "Kmerce"
},
"flag": {
"austria": "Avusturya",
"brazil": "Brezilya",
"spain": "Ispanya",
"nicaragua": "Nikaragua",
"india": "Hindistan",
"china": "Çin",
"germany": "Almanya",
"taiwan": "Tayvan"
}
}

View file

@ -1,168 +0,0 @@
{
"copy-to-clipboard": "Копіювати в буфер обміну",
"author-anonymous": "Анонімний",
"author-unknown": "невідомо",
"action-bar-action": {
"visit-home-page": "Відвідати домашню сторінку",
"open-an-issue": "Відкрити питання, проблему, ...",
"download-tarball": "Завантажити архів"
},
"dialog": {
"registry-info": {
"title": "Інформація про реєстр"
}
},
"header": {
"documentation": "Документація",
"registry-info": "Інформація про реєстр",
"greetings": "Привіт "
},
"search": {
"packages": "Пошук пакетів"
},
"autoComplete": {
"loading": "Завантаження...",
"no-results-found": "Нічого не знайдено",
"clear": "Чистити",
"expand": "Розгорнути",
"collapse": "Відкликати"
},
"tab": {
"uplinks": "Публікації",
"versions": "Версії",
"dependencies": "Залежності",
"readme": "Опис"
},
"uplinks": {
"title": "Публікації",
"no-items": "{{name}} не опубліковано."
},
"versions": {
"current-tags": "Поточні теги",
"version-history": "Історія версій",
"not-available": "Недоступний"
},
"package": {
"published-on": "Опубліковано {{time}} •",
"version": "v{{version}}",
"visit-home-page": "Відвідати домашню сторінку",
"homepage": "Домашня сторінка",
"open-an-issue": "Відкрити питання, проблему, ...",
"bugs": "Помилки",
"download": "Завантажити {{what}}",
"the-tar-file": "файл tar",
"tarball": "Завантажити"
},
"dependencies": {
"has-no-dependencies": "{{package}} не має залежностей.",
"dependency-block": "{{package}}@{{version}}"
},
"form": {
"username": "Ім'я користувача",
"password": "Пароль"
},
"form-placeholder": {
"username": "Ваше ім'я користувача",
"password": "Ваш надійний пароль"
},
"form-validation": {
"required-field": "Це поле є обов'язковим",
"required-min-length": "Для цього поля потрібна мінімальна довжина {{length}}",
"unable-to-sign-in": "Неможливо ввійти",
"username-or-password-cant-be-empty": "Ім'я користувача або пароль не можуть бути порожніми !"
},
"help": {
"title": "Пакети ще не опубліковані",
"sub-title": "Опублікувати свій перший пакет просто:",
"first-step": "1. Підключіться",
"first-step-command-line": "npm adduser --registry {{registryUrl}}",
"second-step": "2. Опублікуйте",
"second-step-command-line": "npm publish --registry {{registryUrl}}",
"third-step": "3. Оновіть цю сторінку."
},
"sidebar": {
"detail": {
"latest-version": "Остання версія v{{version}}",
"version": "v{{version}}"
},
"installation": {
"title": "Встановлення",
"install-using-yarn": "Встановлення за допомогою yarn",
"install-using-yarn-command": "yarn add {{packageName}}",
"install-using-npm": "Встановлення за допомогою npm",
"install-using-npm-command": "npm install {{packageName}}",
"install-using-pnpm": "Встановлення за допомогою pnpm",
"install-using-pnpm-command": "pnpm install {{packageName}}"
},
"repository": {
"title": "Сховище"
},
"author": {
"title": "Автор"
},
"distribution": {
"title": "Умови поширення",
"license": "Ліцензія",
"size": "Розмір",
"file-count": "кількість файлів"
},
"maintainers": {
"title": "Технічне супроводження"
},
"contributors": {
"title": "Автори"
},
"engines": {
"npm-version": "NPM версія",
"node-js": "NODE JS"
}
},
"footer": {
"powered-by": "Працює на",
"made-with-love-on": "Зроблено з <0> ♥ </0> на"
},
"button": {
"close": "Закрити",
"cancel": "Скасувати",
"login": "Вхід",
"logout": "Вийти",
"go-to-the-home-page": "Перейдіть на головну сторінку",
"learn-more": "Вивчайте більше",
"fund-this-package": "<0>Фінансувати</0> цей пакет"
},
"error": {
"unspecific": "Щось пішло не так.",
"404": {
"page-not-found": "404 - Сторінку не знайдено",
"sorry-we-could-not-find-it": "На жаль, ми не змогли його знайти ..."
},
"app-context-not-correct-used": "Контекст програми не використовувався правильно",
"theme-context-not-correct-used": "Контекст теми використано неправильно",
"package-meta-is-required-at-detail-context": "packageMeta is required at DetailContext"
},
"lng": {
"english": "Англійська",
"czech": "Чеська",
"japanese": "Японська",
"portuguese": "Португальська",
"spanish": "Іспанська",
"german": "Німецька",
"chinese": "Китайська",
"chineseTraditional": "Китайці (Традиційні)",
"french": "Французька",
"russian": "Російська",
"turkish": "Турецька",
"ukraine": "Українська",
"khmer": "Khmer"
},
"flag": {
"austria": "Австрія",
"brazil": "Бразилія",
"spain": "Іспанія",
"nicaragua": "Нікарагуа",
"india": "Індія",
"china": "Китай",
"germany": "Німеччина",
"taiwan": "Тайвань"
}
}

View file

@ -1,168 +0,0 @@
{
"copy-to-clipboard": "复制到粘贴板",
"author-anonymous": "匿名",
"author-unknown": "未知",
"action-bar-action": {
"visit-home-page": "访问主页",
"open-an-issue": "提交问题",
"download-tarball": "下载压缩包"
},
"dialog": {
"registry-info": {
"title": "注册信息"
}
},
"header": {
"documentation": "文档",
"registry-info": "登记信息",
"greetings": "您好 "
},
"search": {
"packages": "查找Packages"
},
"autoComplete": {
"loading": "加载中...",
"no-results-found": "没有找到结果",
"clear": "清除",
"expand": "展开",
"collapse": "收回"
},
"tab": {
"uplinks": "Uplinks",
"versions": "版本",
"dependencies": "依赖",
"readme": "Readme"
},
"uplinks": {
"title": "Uplinks",
"no-items": "{{name}} 没有 uplinks."
},
"versions": {
"current-tags": "当前标签",
"version-history": "历史版本",
"not-available": "不可用"
},
"package": {
"published-on": "发布于 {{time}} •",
"version": "v{{version}}",
"visit-home-page": "访问主页",
"homepage": "主页",
"open-an-issue": "提交问题",
"bugs": "Bugs",
"download": "下载 {{what}}",
"the-tar-file": "tar 文件",
"tarball": "压缩包"
},
"dependencies": {
"has-no-dependencies": "{{package}} 没有依赖包.",
"dependency-block": "{{package}}@{{version}}"
},
"form": {
"username": "用户名",
"password": "密码"
},
"form-placeholder": {
"username": "您的用户名",
"password": "您的密码"
},
"form-validation": {
"required-field": "必填项",
"required-min-length": "长度不能小于 {{length}}",
"unable-to-sign-in": "登录失败",
"username-or-password-cant-be-empty": "用户名或密码不能为空!"
},
"help": {
"title": "还没有发布任何 NPM 包.",
"sub-title": "发布第一个 NPM 包:",
"first-step": "1. 登录",
"first-step-command-line": "npm adduser --registry {{registryUrl}}",
"second-step": "2. 发布",
"second-step-command-line": "npm publish --registry {{registryUrl}}",
"third-step": "3. 刷新当前页面."
},
"sidebar": {
"detail": {
"latest-version": "最新版本 v{{version}}",
"version": "v{{version}}"
},
"installation": {
"title": "安装",
"install-using-yarn": "使用 yarn 安装",
"install-using-yarn-command": "yarn add {{packageName}}",
"install-using-npm": "使用 npm 安装",
"install-using-npm-command": "npm install {{packageName}}",
"install-using-pnpm": "使用 pnpm 安装",
"install-using-pnpm-command": "pnpm install {{packageName}}"
},
"repository": {
"title": "仓库"
},
"author": {
"title": "作者"
},
"distribution": {
"title": "发布信息",
"license": "许可",
"size": "大小",
"file-count": "文件数量"
},
"maintainers": {
"title": "维护人"
},
"contributors": {
"title": "贡献者"
},
"engines": {
"npm-version": "NPM 版本",
"node-js": "NODE JS"
}
},
"footer": {
"powered-by": "Powered by",
"made-with-love-on": "Made with <0>♥</0> on"
},
"button": {
"close": "关闭",
"cancel": "取消",
"login": "登录",
"logout": "注销",
"go-to-the-home-page": "跳转到主页",
"learn-more": "了解更多",
"fund-this-package": "<0>捐助</0>这个 package"
},
"error": {
"unspecific": "发生了一些错误",
"404": {
"page-not-found": "404 - 页面不存在",
"sorry-we-could-not-find-it": "对不起, 我们没有找到..."
},
"app-context-not-correct-used": "app context 没有被正确使用",
"theme-context-not-correct-used": "theme context 没有被正确使用",
"package-meta-is-required-at-detail-context": "packageMeta 在 DetailContext 上是必需的"
},
"lng": {
"english": "英语",
"czech": "捷克語",
"japanese": "日语",
"portuguese": "葡萄牙语",
"spanish": "西班牙语",
"german": "德语",
"chinese": "中文",
"chineseTraditional": "正体中文",
"french": "法语",
"russian": "俄语",
"turkish": "土耳其",
"ukraine": "乌克兰",
"khmer": "高棉语"
},
"flag": {
"austria": "奥地利",
"brazil": "巴西",
"spain": "西班牙",
"nicaragua": "尼加拉瓜",
"india": "印度",
"china": "中国",
"germany": "德国",
"taiwan": "台湾"
}
}

View file

@ -1,165 +0,0 @@
{
"copy-to-clipboard": "複製到剪貼簿",
"author-anonymous": "匿名",
"author-unknown": "未知",
"action-bar-action": {
"visit-home-page": "瀏覽首頁",
"open-an-issue": "提交問題",
"download-tarball": "下載 tarball"
},
"dialog": {
"registry-info": {
"title": "註冊資訊"
}
},
"header": {
"documentation": "文件",
"registry-info": "註冊資訊",
"greetings": "你好 "
},
"search": {
"packages": "搜尋套件"
},
"auto-complete": {
"loading": "載入中...",
"no-results-found": "無結果"
},
"tab": {
"uplinks": "Uplinks",
"versions": "版本",
"dependencies": "相依",
"readme": "Readme"
},
"uplinks": {
"title": "Uplinks",
"no-items": "{{name}} has no uplinks."
},
"versions": {
"current-tags": "當前標籤",
"version-history": "歷史版本",
"not-available": "無法取得"
},
"package": {
"published-on": "發布於 {{time}} •",
"version": "v{{version}}",
"visit-home-page": "瀏覽首頁",
"homepage": "首頁",
"open-an-issue": "提交問題",
"bugs": "Bugs",
"download": "下载 {{what}}",
"the-tar-file": "tar 檔案",
"tarball": "Tarball"
},
"dependencies": {
"has-no-dependencies": "{{package}} 沒有相依套件.",
"dependency-block": "{{package}}@{{version}}"
},
"form": {
"username": "使用者名稱",
"password": "密碼"
},
"form-placeholder": {
"username": "你的使用者名稱",
"password": "你的密碼"
},
"form-validation": {
"required-field": "必填欄位",
"required-min-length": "長度不可短於 {{length}}",
"unable-to-sign-in": "無法登入",
"username-or-password-cant-be-empty": "使用者名稱或密碼不可空白!"
},
"help": {
"title": "尚未發布任何 NPM 套件.",
"sub-title": "發布第一個 NPM 套件:",
"first-step": "1. 登入",
"first-step-command-line": "npm adduser --registry {{registryUrl}}",
"second-step": "2. 發布",
"second-step-command-line": "npm publish --registry {{registryUrl}}",
"third-step": "3. 重新整理頁面。"
},
"sidebar": {
"detail": {
"latest-version": "最新版本 v{{version}}",
"version": "v{{version}}"
},
"installation": {
"title": "安装",
"install-using-yarn": "使用 yarn 安装",
"install-using-yarn-command": "yarn add {{packageName}}",
"install-using-npm": "使用 npm 安装",
"install-using-npm-command": "npm install {{packageName}}",
"install-using-pnpm": "使用 pnpm 安装",
"install-using-pnpm-command": "pnpm install {{packageName}}"
},
"repository": {
"title": "儲存庫"
},
"author": {
"title": "作者"
},
"distribution": {
"title": "發布資訊",
"license": "許可",
"size": "大小",
"file-count": "檔案數量"
},
"maintainers": {
"title": "維護人員"
},
"contributors": {
"title": "貢獻人員"
},
"engines": {
"npm-version": "NPM 版本",
"node-js": "NODE JS"
}
},
"footer": {
"powered-by": "Powered by",
"made-with-love-on": "Made with <0>♥</0> on"
},
"button": {
"close": "關閉",
"cancel": "取消",
"login": "登入",
"logout": "登出",
"go-to-the-home-page": "前往首頁",
"learn-more": "了解更多",
"fund-this-package": "<0>Fund</0> this package"
},
"error": {
"unspecific": "發生錯誤。",
"404": {
"page-not-found": "404 - 頁面不存在",
"sorry-we-could-not-find-it": "不好意思, 找不到..."
},
"app-context-not-correct-used": "app context 没有被正確使用",
"theme-context-not-correct-used": "theme context 没有被正確使用",
"package-meta-is-required-at-detail-context": "packageMeta is required at DetailContext"
},
"lng": {
"english": "英文",
"czech": "捷克文",
"japanese": "日文",
"portuguese": "葡萄牙文",
"spanish": "西班牙文",
"german": "德文",
"chinese": "簡體中文",
"chineseTraditional": "正體中文",
"french": "法文",
"russian": "俄文",
"turkish": "土耳其",
"ukraine": "烏克蘭文",
"khmer": "高棉文"
},
"flag": {
"austria": "奧地利",
"brazil": "巴西",
"spain": "西班牙",
"nicaragua": "尼加拉瓜",
"india": "印度",
"china": "中國 ",
"germany": "德國",
"taiwan": "台灣"
}
}

View file

@ -72,13 +72,17 @@ export const login = createModel<RootModel>()({
async getUser({ username, password }, state) {
const basePath = state.configuration.config.base;
try {
const payload: LoginResponse = await API.request(`${basePath}-/verdaccio/login`, 'POST', {
const payload: LoginResponse = await API.request(
`${basePath}-/verdaccio/sec/login`,
'POST',
{
body: JSON.stringify({ username, password }),
headers: {
Accept: HEADERS.JSON,
'Content-Type': HEADERS.JSON,
},
});
}
);
dispatch.login.logInUser(payload);
dispatch.packages.getPackages();
} catch (error: any) {

View file

@ -72,12 +72,12 @@ export const manifest = createModel<RootModel>()({
}
const manifest: Package = await API.request(
`${basePath}-/verdaccio/sidebar/${packageName}${
`${basePath}-/verdaccio/data/sidebar/${packageName}${
packageVersion ? `?v=${packageVersion}` : ''
}`
);
const readme: string = await API.request<string>(
`${basePath}-/verdaccio/package/readme/${packageName}${
`${basePath}-/verdaccio/data/package/readme/${packageName}${
packageVersion ? `?v=${packageVersion}` : ''
}`,
'GET'

View file

@ -21,7 +21,7 @@ export const packages = createModel<RootModel>()({
async getPackages(_payload, state) {
const basePath = state.configuration.config.base;
try {
const payload: Package[] = await API.request(`${basePath}-/verdaccio/packages`, 'GET');
const payload: Package[] = await API.request(`${basePath}-/verdaccio/data/packages`, 'GET');
dispatch.packages.savePackages(payload);
} catch (error: any) {
// eslint-disable-next-line no-console

View file

@ -60,7 +60,7 @@ export const search = createModel<RootModel>()({
// https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API#Browser_compatibility
// FUTURE: signal is not well supported for IE and Samsung Browser
const suggestions: SearchResultWeb[] = await API.request(
`${basePath}-/verdaccio/search/${encodeURIComponent(value)}`,
`${basePath}-/verdaccio/data/search/${encodeURIComponent(value)}`,
'GET',
{
signal,

View file

@ -63,7 +63,7 @@ describe('endpoint web unit test', () => {
test('should display sidebar info', () => {
return new Promise((resolve) => {
request(app)
.get('/-/verdaccio/sidebar/@scope/pk1-test')
.get('/-/verdaccio/data/sidebar/@scope/pk1-test')
.expect(HTTP_STATUS.OK)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.end(function (err, res) {
@ -85,7 +85,7 @@ describe('endpoint web unit test', () => {
test('should display sidebar info by version', () => {
return new Promise((resolve) => {
request(app)
.get('/-/verdaccio/sidebar/@scope/pk1-test?v=1.0.6')
.get('/-/verdaccio/data/sidebar/@scope/pk1-test?v=1.0.6')
.expect(HTTP_STATUS.OK)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.end(function (err, res) {
@ -104,7 +104,7 @@ describe('endpoint web unit test', () => {
test('should display sidebar info 404', () => {
return new Promise((resolve) => {
request(app)
.get('/-/verdaccio/sidebar/@scope/404')
.get('/-/verdaccio/data/sidebar/@scope/404')
.expect(HTTP_STATUS.NOT_FOUND)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.end(function () {
@ -116,7 +116,7 @@ describe('endpoint web unit test', () => {
test('should display sidebar info 404 with version', () => {
return new Promise((resolve) => {
request(app)
.get('/-/verdaccio/sidebar/@scope/pk1-test?v=0.0.0-not-found')
.get('/-/verdaccio/data/sidebar/@scope/pk1-test?v=0.0.0-not-found')
.expect(HTTP_STATUS.NOT_FOUND)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.end(function () {
@ -130,7 +130,7 @@ describe('endpoint web unit test', () => {
test('should find @scope/pk1-test', () => {
return new Promise((resolve) => {
request(app)
.get('/-/verdaccio/search/@scope%2fpk1-test')
.get('/-/verdaccio/data/search/@scope%2fpk1-test')
.expect(HTTP_STATUS.OK)
.end(function (_err, res) {
expect(res.body).toHaveLength(1);
@ -142,7 +142,7 @@ describe('endpoint web unit test', () => {
test('should not find forbidden-place', () => {
return new Promise((resolve) => {
request(app)
.get('/-/verdaccio/search/forbidden-place')
.get('/-/verdaccio/data/search/forbidden-place')
.expect(HTTP_STATUS.OK)
.end(function (err, res) {
// this is expected since we are not logged

View file

@ -21,7 +21,7 @@ export default function (server, server2) {
const matchReadme = (serverRef, pkgName = README_PKG1, readmeMessage = README_MESSAGE) => {
return serverRef
.request({
uri: `/-/verdaccio/package/readme/${pkgName}`,
uri: `/-/verdaccio/data/package/readme/${pkgName}`,
})
.status(HTTP_STATUS.OK)
.then(function (body) {

View file

@ -0,0 +1,20 @@
import { Router } from 'express';
import { hasLogin } from '../utils/web-utils';
import packageApi from './package';
import readme from './readme';
import search from './search';
import sidebar from './sidebar';
import user from './user';
export default (auth, storage, config) => {
const route = Router(); /* eslint new-cap: 0 */
route.use('/data/', packageApi(storage, auth, config));
route.use('/data/', search(storage, auth));
route.use('/data/', sidebar(config, storage, auth));
route.use('/data/', readme(storage, auth));
if (hasLogin(config)) {
route.use('/sec/', user(auth, config));
}
return route;
};

View file

@ -22,8 +22,9 @@ export type PackageExt = Package & { author: AuthorAvatar; dist?: { tarball: str
const debug = buildDebug('verdaccio:web:api:package');
function addPackageWebApi(route: Router, storage: Storage, auth: IAuth, config: Config): void {
function addPackageWebApi(storage: Storage, auth: IAuth, config: Config): Router {
const isLoginEnabled = config?.web?.login === true ?? true;
const pkgRouter = Router(); /* eslint new-cap: 0 */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const anonymousRemoteUser: RemoteUser = {
name: undefined,
@ -50,7 +51,7 @@ function addPackageWebApi(route: Router, storage: Storage, auth: IAuth, config:
});
// Get list of all visible package
route.get(
pkgRouter.get(
'/packages',
function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {
debug('hit package web api %o');
@ -109,6 +110,7 @@ function addPackageWebApi(route: Router, storage: Storage, auth: IAuth, config:
});
}
);
return pkgRouter;
}
export default addPackageWebApi;

View file

@ -18,11 +18,12 @@ const debug = buildDebug('verdaccio:web:api:readme');
export const NOT_README_FOUND = 'ERROR: No README data found!';
function addReadmeWebApi(route: Router, storage: Storage, auth: IAuth): void {
function addReadmeWebApi(storage: Storage, auth: IAuth): Router {
debug('initialized readme web api');
const can = allow(auth);
const pkgRouter = Router(); /* eslint new-cap: 0 */
route.get(
pkgRouter.get(
'/package/readme/(@:scope/)?:package/:version?',
can('access'),
function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {
@ -53,6 +54,7 @@ function addReadmeWebApi(route: Router, storage: Storage, auth: IAuth): void {
});
}
);
return pkgRouter;
}
export default addReadmeWebApi;

View file

@ -11,7 +11,8 @@ import { $NextFunctionVer, $RequestExtend, $ResponseExtend } from './package';
const debug = buildDebug('verdaccio:web:api:search');
function addSearchWebApi(route: Router, storage: Storage, auth: IAuth): void {
function addSearchWebApi(storage: Storage, auth: IAuth): Router {
const router = Router(); /* eslint new-cap: 0 */
const getPackageInfo = async function (name, remoteUser): Promise<any> {
return new Promise((resolve, reject) => {
debug('searching for %o', name);
@ -49,7 +50,7 @@ function addSearchWebApi(route: Router, storage: Storage, auth: IAuth): void {
});
};
route.get(
router.get(
'/search/:anything',
async function (
req: $RequestExtend,
@ -75,6 +76,7 @@ function addSearchWebApi(route: Router, storage: Storage, auth: IAuth): void {
}
}
);
return router;
}
export default addSearchWebApi;

View file

@ -19,11 +19,12 @@ export type PackageExt = Package & { author: AuthorAvatar; dist?: { tarball: str
export type $SidebarPackage = Package & { latest: Version };
const debug = buildDebug('verdaccio:web:api:sidebar');
function addSidebarWebApi(route: Router, config: Config, storage: Storage, auth: IAuth): void {
function addSidebarWebApi(config: Config, storage: Storage, auth: IAuth): Router {
debug('initialized sidebar web api');
const router = Router(); /* eslint new-cap: 0 */
const can = allow(auth);
// Get package readme
route.get(
router.get(
'/sidebar/(@:scope/)?:package',
can('access'),
function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {
@ -65,6 +66,8 @@ function addSidebarWebApi(route: Router, config: Config, storage: Storage, auth:
});
}
);
return router;
}
export default addSidebarWebApi;

View file

@ -11,7 +11,8 @@ import { $NextFunctionVer } from './package';
const debug = buildDebug('verdaccio:web:api:user');
function addUserAuthApi(route: Router, auth: IAuth, config: Config): void {
function addUserAuthApi(auth: IAuth, config: Config): Router {
const route = Router(); /* eslint new-cap: 0 */
route.post('/login', function (req: Request, res: Response, next: $NextFunctionVer): void {
const { username, password } = req.body;
debug('authenticate %o', username);
@ -68,6 +69,8 @@ function addUserAuthApi(route: Router, auth: IAuth, config: Config): void {
}
);
}
return route;
}
export default addUserAuthApi;

View file

@ -7,40 +7,22 @@ import { SearchInstance } from '@verdaccio/store';
import { Storage } from '@verdaccio/store';
import { Config } from '@verdaccio/types';
import addPackageWebApi from '../api/package';
import addReadmeWebApi from '../api/readme';
import addSearchWebApi from '../api/search';
import addSidebarWebApi from '../api/sidebar';
import addUserAuthApi from '../api/user';
import { hasLogin } from '../utils/web-utils';
import webEndpointsApi from '../api';
import { setSecurityWebHeaders } from './security';
export function webAPI(config: Config, auth: IAuth, storage: Storage): Router {
// eslint-disable-next-line new-cap
const route = Router();
SearchInstance.configureStorage(storage);
// validate all of these params as a package name
// this might be too harsh, so ask if it causes trouble=
route.param('package', validatePackage);
route.param('filename', validateName);
route.param('version', validateName);
route.param('anything', match(/.*/));
route.use(bodyParser.urlencoded({ extended: false }));
route.use(auth.webUIJWTmiddleware());
route.use(setSecurityWebHeaders);
addPackageWebApi(route, storage, auth, config);
addReadmeWebApi(route, storage, auth);
addSidebarWebApi(route, config, storage, auth);
addSearchWebApi(route, storage, auth);
if (hasLogin(config)) {
addUserAuthApi(route, auth, config);
}
// What are you looking for? logout? client side will remove token when user click logout,
// or it will auto expire after 24 hours.
// This token is different with the token send to npm client.
// With JWT you will be able to setup expire tokens.
route.use(webEndpointsApi(auth, storage, config));
return route;
}

View file

@ -26,7 +26,7 @@ describe('test web server', () => {
manifest: require('./partials/manifest/manifest.json'),
}));
const response = await supertest(await initializeServer('default-test.yaml'))
.get('/-/verdaccio/packages')
.get('/-/verdaccio/data/packages')
.set('Accept', HEADERS.JSON_CHARSET)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(HTTP_STATUS.OK);

View file

@ -55,7 +55,7 @@ describe('readme api', () => {
test('should fetch readme scoped package', async () => {
const response = await supertest(await initializeServer('default-test.yaml'))
.get('/-/verdaccio/package/readme/@scope/pk1-test')
.get('/-/verdaccio/data/package/readme/@scope/pk1-test')
.set('Accept', HEADERS.TEXT_PLAIN)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.TEXT_PLAIN_UTF8)
.expect(HTTP_STATUS.OK);
@ -64,7 +64,7 @@ describe('readme api', () => {
test('should fetch readme a package', async () => {
const response = await supertest(await initializeServer('default-test.yaml'))
.get('/-/verdaccio/package/readme/pk1-test')
.get('/-/verdaccio/data/package/readme/pk1-test')
.set('Accept', HEADERS.TEXT_PLAIN)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.TEXT_PLAIN_UTF8)
.expect(HTTP_STATUS.OK);

View file

@ -59,7 +59,7 @@ describe('test web server', () => {
test('should OK to search api', async () => {
const response = await supertest(await initializeServer('default-test.yaml'))
.get('/-/verdaccio/search/keyword')
.get('/-/verdaccio/data/search/keyword')
.set('Accept', HEADERS.JSON_CHARSET)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(HTTP_STATUS.OK);
@ -69,7 +69,7 @@ describe('test web server', () => {
test('should 404 to search api', async () => {
mockQuery.mockReturnValue([]);
const response = await supertest(await initializeServer('default-test.yaml'))
.get('/-/verdaccio/search/notFound')
.get('/-/verdaccio/data/search/notFound')
.set('Accept', HEADERS.JSON_CHARSET)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(HTTP_STATUS.OK);
@ -85,7 +85,7 @@ describe('test web server', () => {
];
});
const response = await supertest(await initializeServer('default-test.yaml'))
.get('/-/verdaccio/search/notFound')
.get('/-/verdaccio/data/search/notFound')
.set('Accept', HEADERS.JSON_CHARSET)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(HTTP_STATUS.OK);

View file

@ -55,7 +55,7 @@ describe.skip('sidebar api', () => {
manifest: require('./partials/manifest/manifest.json'),
});
const response = await supertest(await initializeServer('default-test.yaml'))
.get('/-/verdaccio/sidebar/@scope/pk1-test')
.get('/-/verdaccio/data/sidebar/@scope/pk1-test')
.set('Accept', HEADERS.TEXT_PLAIN)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(HTTP_STATUS.OK);

View file

@ -29,7 +29,7 @@ describe('test web server', () => {
test('should get 401', async () => {
return supertest(await initializeServer('default-test.yaml'))
.post('/-/verdaccio/login')
.post('/-/verdaccio/sec/login')
.send(
JSON.stringify({
username: 'test',
@ -46,7 +46,7 @@ describe('test web server', () => {
test('should log in', async () => {
return supertest(await initializeServer('default-test.yaml'))
.post('/-/verdaccio/login')
.post('/-/verdaccio/sec/login')
.send(
JSON.stringify({
username: 'test',
@ -66,7 +66,7 @@ describe('test web server', () => {
test('log in should be disabled', async () => {
return supertest(await initializeServer('login-disabled.yaml'))
.post('/-/verdaccio/login')
.post('/-/verdaccio/sec/login')
.send(
JSON.stringify({
username: 'test',