Compare commits

..

3 Commits

Author SHA1 Message Date
Juan Picado
28244477d2 changeset 2025-03-16 11:24:35 +01:00
Juan Picado
1b6115f2d6 Update index.spec.ts 2025-03-16 11:17:16 +01:00
Juan Picado
6ade2de358 fix: auth plugin callback types 2025-03-16 11:17:16 +01:00
348 changed files with 4954 additions and 11325 deletions

View File

@@ -1,5 +0,0 @@
---
'@verdaccio/api': patch
---
chore(api): avoid double registration of JSON bodyParser

View File

@@ -1,5 +0,0 @@
---
'@verdaccio/ui-components': patch
---
fix(ui): start storybook on windows

View File

@@ -1,6 +0,0 @@
---
'@verdaccio/ui-theme': patch
'@verdaccio/ui-components': patch
---
chore(ui): update react-json-view

View File

@@ -1,13 +0,0 @@
---
'@verdaccio/local-storage': patch
'@verdaccio/server-fastify': patch
'@verdaccio/middleware': patch
'@verdaccio/core': patch
'@verdaccio/config': patch
'@verdaccio/store': patch
'@verdaccio/utils': patch
'@verdaccio/api': patch
'@verdaccio/web': patch
---
chore: cleanup utils

View File

@@ -1,5 +0,0 @@
---
'@verdaccio/config': patch
---
chore: expose config utils

View File

@@ -0,0 +1,7 @@
---
'verdaccio-auth-memory': minor
'@verdaccio/core': minor
'@verdaccio/auth': minor
---
fix: auth callback types

View File

@@ -1,9 +0,0 @@
---
'@verdaccio/config': patch
'@verdaccio/search': patch
'@verdaccio/proxy': patch
'@verdaccio/store': patch
'@verdaccio/utils': patch
---
fix: uplink processing order

View File

@@ -1,5 +0,0 @@
---
'@verdaccio/e2e-cli-npm10': patch
---
fix(e2e): name for npm10 test

View File

@@ -1,5 +0,0 @@
---
'@verdaccio/auth': patch
---
feat: add legacyMergeConfigs as option

View File

@@ -1,8 +0,0 @@
---
'@verdaccio/server': patch
'@verdaccio/types': patch
'@verdaccio/middleware': patch
'@verdaccio/ui-components': patch
---
chore(config): harmonize configuration options

View File

@@ -1,6 +0,0 @@
---
'@verdaccio/ui-theme': patch
'@verdaccio/ui-components': patch
---
chore(ui): flags import and minor updates

View File

@@ -1,7 +0,0 @@
---
'@verdaccio/core': patch
'@verdaccio/proxy': patch
'@verdaccio/store': patch
---
fix: handling for uplink timeouts

View File

@@ -1,5 +0,0 @@
---
'@verdaccio/middleware': patch
---
fix(middleware): scoped package for allow checks

View File

@@ -1,5 +0,0 @@
---
'verdaccio-memory': patch
---
fix: memory plugin limit error message

View File

@@ -60,8 +60,7 @@
"@verdaccio/e2e-cli-pnpm-common": "1.0.2-next-8.0",
"@verdaccio/e2e-cli-pnpm10": "1.0.0",
"docusaurus-plugin-downloads": "2.0.0",
"@verdaccio/local-publish": "0.0.2",
"@verdaccio/e2e-cli-npm10": "1.0.1"
"@verdaccio/local-publish": "0.0.2"
},
"changesets": [
"angry-doors-tan",
@@ -69,7 +68,6 @@
"blue-paws-cheer",
"breezy-geckos-search",
"bright-bobcats-ring",
"brown-lions-talk",
"brown-planets-approve",
"calm-mangos-compare",
"chatty-apricots-report",
@@ -80,52 +78,34 @@
"curvy-rockets-camp",
"cyan-snakes-kiss",
"early-eyes-float",
"early-trainers-grin",
"eight-countries-think",
"eighty-apes-think",
"eleven-rocks-dream",
"few-ears-deny",
"fifty-falcons-design",
"forty-hounds-matter",
"fresh-owls-hunt",
"funny-fireants-tan",
"gentle-stingrays-repeat",
"gold-files-speak",
"gold-squids-watch",
"green-eagles-boil",
"healthy-ducks-drive",
"healthy-zoos-lie",
"hip-eggs-serve",
"hip-suns-jam",
"hot-crews-live",
"itchy-glasses-end",
"large-turkeys-change",
"long-eyes-drum",
"long-singers-drive",
"lucky-crabs-enjoy",
"nasty-experts-bow",
"nice-garlics-tie",
"nine-countries-remember",
"ninety-geese-do",
"ninety-hotels-dance",
"odd-fishes-cry",
"old-clocks-destroy",
"pink-jeans-lick",
"popular-trees-grin",
"proud-houses-switch",
"purple-planes-do",
"quick-avocados-type",
"quick-seas-deny",
"real-seahorses-change",
"red-dolls-repair",
"rotten-melons-notice",
"rotton-readers-shave",
"rude-birds-design",
"rude-socks-walk",
"serious-apes-rule",
"shiny-buttons-laugh",
"short-mails-smoke",
"short-turkeys-boil",
"silent-bags-listen",
"silent-tips-admire",
"silver-houses-remain",
@@ -134,17 +114,13 @@
"strange-pants-chew",
"stupid-camels-build",
"sweet-crabs-deliver",
"ten-jeans-approve",
"tender-buckets-smoke",
"thirty-comics-trade",
"tricky-impalas-shake",
"tricky-knives-end",
"twelve-games-wonder",
"violet-baboons-beg",
"violet-bobcats-allow",
"violet-boxes-float",
"weak-cherries-serve",
"wet-cats-behave",
"yellow-flies-sniff"
"wet-cats-behave"
]
}

View File

@@ -1,5 +0,0 @@
---
'@verdaccio/ui-components': patch
---
fix(ui): format date distance test

View File

@@ -1,5 +0,0 @@
---
'@verdaccio/loaders': patch
---
chore: debug messages in loader

View File

@@ -1,41 +0,0 @@
---
'generator-verdaccio-plugin': patch
'@verdaccio/logger-prettify': patch
'@verdaccio/logger-commons': patch
'@verdaccio/local-storage': patch
'verdaccio-auth-memory': patch
'@verdaccio/local-publish': patch
'@verdaccio/local-scripts': patch
'@verdaccio/file-locking': patch
'verdaccio-htpasswd': patch
'@verdaccio/ui-theme': patch
'verdaccio-memory': patch
'@verdaccio/search-indexer': patch
'@verdaccio/server': patch
'@verdaccio/server-fastify': patch
'@verdaccio/logger': patch
'verdaccio-audit': patch
'@verdaccio/test-helper': patch
'@verdaccio/ui-components': patch
'@verdaccio/tarball': patch
'@verdaccio/eslint-config': patch
'@verdaccio/types': patch
'@verdaccio/middleware': patch
'@verdaccio/cli-standalone': patch
'@verdaccio/core': patch
'verdaccio': patch
'@verdaccio/url': patch
'@verdaccio/node-api': patch
'@verdaccio/loaders': patch
'@verdaccio/config': patch
'@verdaccio/hooks': patch
'@verdaccio/proxy': patch
'@verdaccio/store': patch
'@verdaccio/utils': patch
'@verdaccio/auth': patch
'@verdaccio/api': patch
'@verdaccio/cli': patch
'@verdaccio/website': patch
---
chore: update readme badges and license files

View File

@@ -1,5 +0,0 @@
---
'@verdaccio/ui-components': patch
---
chore(ui): reduce build size

View File

@@ -1,5 +0,0 @@
---
'@verdaccio/local-storage': patch
---
chore: remove obsolete test data from local-storage

View File

@@ -1,5 +0,0 @@
---
'@verdaccio/ui-components': patch
---
chore: fix ui-component npmignore and readme

View File

@@ -1,5 +0,0 @@
---
'@verdaccio/ui-i18n': patch
---
fix(i18n): avoid fallback for en-us

View File

@@ -1,10 +0,0 @@
---
'@verdaccio/search-indexer': patch
'@verdaccio/server': patch
'@verdaccio/loaders': patch
'@verdaccio/store': patch
'@verdaccio/auth': patch
'@verdaccio/web': patch
---
fix: add legacyMergeConfigs legacy plugins

View File

@@ -68,7 +68,9 @@ jobs:
fail-fast: true
matrix:
os: [ubuntu-latest]
node_version: [18, 20, 21, 22, 23]
## updated according official maintained releases
## https://nodejs.org/en/about/previous-releases
node_version: [18, 20, 22, 23]
name: ${{ matrix.os }} / Node ${{ matrix.node_version }}
runs-on: ${{ matrix.os }}
steps:

View File

@@ -166,4 +166,69 @@ jobs:
yarn add left-pad --registry http://localhost:4873 --verbose
echo "const leftPad = require('left-pad'); it('should resolve a module', () => { expect(typeof leftPad).toBe('function');});" | tee module.test.js
yarn jest module.test.js
pnpm8:
name: 'pnpm8:jest example'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: 'Use Node.js'
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
with:
node-version-file: '.nvmrc'
- name: 'install latest pnpm'
run: npm i -g pnpm@10.5.2
- name: Install Dependencies
run: yarn install
- name: 'Run verdaccio in the background'
run: |
nohup yarn node ./scripts/run-verdaccio.js &
- name: 'Ping to verdaccio'
run: |
pnpm ping --registry http://localhost:4873
- name: 'Running the integration test'
run: |
source scripts/e2e-setup-ci.sh
pnpm init
pnpm install jest@29.5.0 --registry http://localhost:4873 --loglevel info
echo "it('should pass', () => { expect(true).toBeTruthy(); });" | tee pass.test.js
yarn jest pass.test.js
yarn add left-pad --registry http://localhost:4873 --verbose
echo "const leftPad = require('left-pad'); it('should resolve a module', () => { expect(typeof leftPad).toBe('function');});" | tee module.test.js
yarn jest module.test.js
pnpm9:
name: 'pnpm:9:jest example'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: 'Use Node.js'
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
with:
node-version-file: '.nvmrc'
- name: 'install latest pnpm'
run: npm i -g pnpm@10.5.2
- name: Install Dependencies
run: yarn install
- name: 'Run verdaccio in the background'
run: |
yarn node ./scripts/run-verdaccio.js &
- name: 'Ping to verdaccio'
run: |
pnpm ping --registry http://localhost:4873
- name: 'Running the integration test'
run: |
source scripts/e2e-setup-ci.sh
pnpm init
pnpm install jest@29.5.0 --registry http://localhost:4873 --loglevel info
echo "it('should pass', () => { expect(true).toBeTruthy(); });" | tee pass.test.js
yarn jest pass.test.js
yarn add left-pad --registry http://localhost:4873 --verbose
echo "const leftPad = require('left-pad'); it('should resolve a module', () => { expect(typeof leftPad).toBe('function');});" | tee module.test.js
yarn jest module.test.js

View File

@@ -22,20 +22,17 @@ For those looking to extend their storage capabilities, Verdaccio
**supports various community-made plugins to hook into services such as Amazon's s3,
Google Cloud Storage** or create your own plugin.
[![Verdaccio Home](https://img.shields.io/badge/Homepage-Verdaccio-405236?style=flat)](https://verdaccio.org)
[![MIT License](https://img.shields.io/github/license/verdaccio/verdaccio?label=License&color=405236)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
[![Verdaccio Latest](https://img.shields.io/npm/v/verdaccio?label=Latest%20Version&color=405236)](https://github.com/verdaccio/verdaccio)
[![verdaccio (latest)](https://img.shields.io/npm/v/verdaccio/latest.svg)](https://www.npmjs.com/package/verdaccio)
[![verdaccio (downloads)](https://img.shields.io/npm/dy/verdaccio.svg)](https://www.npmjs.com/package/verdaccio)
[![docker pulls](https://img.shields.io/docker/pulls/verdaccio/verdaccio.svg?maxAge=43200)](https://verdaccio.org/docs/en/docker.html)
[![backers](https://opencollective.com/verdaccio/tiers/backer/badge.svg?label=Backer&color=brightgreen)](https://opencollective.com/verdaccio)
[![stackshare](https://img.shields.io/badge/Follow%20on-StackShare-blue.svg?logo=stackshare&style=flat)](https://stackshare.io/verdaccio)
[![Documentation](https://img.shields.io/badge/Help-Verdaccio?style=flat&logo=Verdaccio&label=Verdaccio&color=cd4000)](https://verdaccio.org/docs)
[![Discord](https://img.shields.io/badge/Chat-Discord?style=flat&logo=Discord&label=Discord&color=cd4000)](https://discord.com/channels/388674437219745793)
[![Bluesky](https://img.shields.io/badge/Follow-Bluesky?style=flat&logo=Bluesky&label=Bluesky&color=cd4000)](https://bsky.app/profile/verdaccio.org)
[![Backers](https://img.shields.io/opencollective/backers/verdaccio?style=flat&logo=opencollective&label=Join%20Backers&color=cd4000)](https://opencollective.com/verdaccio/contribute)
[![Sponsors](https://img.shields.io/opencollective/sponsors/verdaccio?style=flat&logo=opencollective&label=Sponsor%20Us&color=cd4000)](https://opencollective.com/verdaccio/contribute)
[![Verdaccio Downloads](https://img.shields.io/npm/dm/verdaccio?style=flat&logo=npm&label=Npm%20Downloads&color=lightgrey)](https://www.npmjs.com/package/verdaccio)
[![Docker Pulls](https://img.shields.io/docker/pulls/verdaccio/verdaccio?style=flat&logo=docker&label=Docker%20Pulls&color=lightgrey)](https://hub.docker.com/r/verdaccio/verdaccio)
[![GitHub Stars](https://img.shields.io/github/stars/verdaccio?style=flat&logo=github&label=GitHub%20Stars%20%E2%AD%90&color=lightgrey)](https://github.com/verdaccio/verdaccio/stargazers)
[![discord](https://img.shields.io/discord/388674437219745793.svg)](http://chat.verdaccio.org/)
[![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/verdaccio/localized.svg)](https://crowdin.com/project/verdaccio)
[![Github](https://img.shields.io/github/stars/verdaccio/verdaccio.svg?style=social&label=Stars)](https://github.com/verdaccio/verdaccio/stargazers)
[![StandWithUkraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://github.com/vshymanskyy/StandWithUkraine/blob/main/docs/README.md)
## Versions
@@ -288,14 +285,14 @@ If you want to report a security vulnerability, please follow the steps which we
Thanks to the following companies to help us to achieve our goals providing free open source licenses. Every company provides enough resources to move this project forward.
| Company | Logo | License |
| ------------ | --------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| JetBrains | [![jetbrain](https://github.com/verdaccio/verdaccio/blob/master/assets/thanks/jetbrains/logo.png?raw=true)](https://www.jetbrains.com/) | JetBrains provides licenses for products for active maintainers, renewable yearly |
| Crowdin | [![crowdin](https://github.com/verdaccio/verdaccio/blob/master/assets/thanks/crowdin/logo.png?raw=true)](https://crowdin.com/) | Crowdin provides platform for translations |
| BrowserStack | [![browserstack](https://cdn.verdaccio.dev/readme/browserstack_logo.png)](https://www.browserstack.com/) | BrowserStack provides plan to run End to End testing for the UI |
| Netlify | [![netlify](https://www.netlify.com/img/global/badges/netlify-color-accent.svg)](https://www.netlify.com/) | Netlify provides pro plan for website deployment |
| Algolia | [![algolia](https://cdn.verdaccio.dev/sponsor/logo/algolia/logo.png)](https://algolia.com/) | Algolia provides search services for the website |
| Docker | [![docker](https://cdn.verdaccio.dev/sponsor/logo/docker/docker.png)](https://www.docker.com/community/open-source/application) | Docker offers unlimited pulls and unlimited egress to any and all users |
| Company | Logo | License |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| JetBrains | [![jetbrain](assets/thanks/jetbrains/logo.png)](https://www.jetbrains.com/) | JetBrains provides licenses for products for active maintainers, renewable yearly |
| Crowdin | [![crowdin](assets/thanks/crowdin/logo.png)](https://crowdin.com/) | Crowdin provides platform for translations |
| BrowserStack | [![browserstack](https://cdn.verdaccio.dev/readme/browserstack_logo.png)](https://www.browserstack.com/) | BrowserStack provides plan to run End to End testing for the UI |
| Netlify | [![netlify](https://www.netlify.com/img/global/badges/netlify-color-accent.svg)](https://www.netlify.com/) | Netlify provides pro plan for website deployment |
| Algolia | [![algolia](https://cdn.verdaccio.dev/sponsor/logo/algolia/logo.png)](https://algolia.com/) | Algolia provides search services for the website |
| Docker | [![docker](https://cdn.verdaccio.dev/sponsor/logo/docker/docker.png)](https://www.docker.com/community/open-source/application) | Docker offers unlimited pulls and unlimited egress to any and all users |
## Maintainers
@@ -334,7 +331,7 @@ You can find and chat with them over Discord, click [here](http://chat.verdaccio
## Open Collective Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio/contribute)]
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio#sponsor)]
[![sponsor](https://opencollective.com/verdaccio/sponsor/0/avatar.svg)](https://opencollective.com/verdaccio/sponsor/0/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/1/avatar.svg)](https://opencollective.com/verdaccio/sponsor/1/website)
@@ -349,32 +346,32 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
## Open Collective Backers
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/verdaccio/contribute)]
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/verdaccio#backer)]
[![backers](https://opencollective.com/verdaccio/backers.svg?width=890)](https://opencollective.com/verdaccio/contributes)
[![backers](https://opencollective.com/verdaccio/backers.svg?width=890)](https://opencollective.com/verdaccio#backers)
## Contributors
This project exists thanks to all the people who contribute. [[Contribute](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md)].
This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
[![contributors](https://opencollective.com/verdaccio/contributors.svg?width=890&button=true)](https://github.com/verdaccio/verdaccio/graphs/contributors)
[![contributors](https://opencollective.com/verdaccio/contributors.svg?width=890&button=true)](../../graphs/contributors)
## FAQ / Contact / Troubleshoot
### FAQ / Contact / Troubleshoot
If you have any issue you can try the following options. Do no hesitate to ask or check our issues database. Perhaps someone has asked already what you are looking for.
- [Blog](https://verdaccio.org/blog/)
- [Donations](https://github.com/sponsors/verdaccio)
- [Reporting an issue](https://github.com/verdaccio/verdaccio/issues/new/choose)
- [Running discussions](https://github.com/orgs/verdaccio/discussions)
- [Running discussions](https://github.com/verdaccio/verdaccio/issues?q=is%3Aissue+is%3Aopen+label%3Adiscuss)
- [Chat](https://discord.gg/7qWJxBf)
- [Logos](https://verdaccio.org/docs/logo)
- [Logos](https://verdaccio.org/docs/en/logo)
- [Docker Examples](https://github.com/verdaccio/verdaccio/tree/master/docker-examples)
- [FAQ](https://github.com/verdaccio/verdaccio/discussions/categories/q-a)
## License
### License
Verdaccio is [MIT licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
The Verdaccio documentation and logos (excluding /thanks, e.g., .md, .png, .sketch files within the /assets folder) are
The Verdaccio documentation and logos (excluding /thanks, e.g., .md, .png, .sketch) files within the /assets folder) is
[Creative Commons licensed](https://creativecommons.org/licenses/by/4.0/).

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -1,6 +1,6 @@
# Verdaccio 6 Examples
> We recommend to have installed the latest docker-compose
> We recommend to have installed [docker-compose >= 1.29.0](https://github.com/docker/compose/releases/tag/1.29.2)
## Mapping Volumes
@@ -20,5 +20,3 @@ Using plugins without `docker-compose` mapping volumes, all withing the `Dockerf
- [Docker + Local Build Auth Plugin (local development)](plugins/docker-build-install-plugin/README.md)
- [Docker + Auth Plugin (from a registry)](plugins/docker-local-plugin/README.md)
- [Docker + Localstack S3 + Verdaccio](amazon-s3-docker-example/README.md)
- [Docker + GitHub OAuth + verdaccio-github-oauth-ui + Verdaccio](verdaccio-github-oauth-ui/README.md)

View File

@@ -1,17 +0,0 @@
# Amazon S3 Bucket (Localstack) and Verdaccio 6.x
This setup runs Verdaccio alongside Localstack, providing a simple test/mocking environment for
developing cloud applications. In this case, we are simulating AWS S3 functionality.
## Usage
> You might need to create bucket manually here
> aws --endpoint-url=http://localhost:4566 s3 mb s3://localstack.s3.plugin.test
```
docker-compose up --force-recreate --build --always-recreate-deps
```
## Articles
- [Set up S3 bucket using Docker / Compose](https://discuss.localstack.cloud/t/set-up-s3-bucket-using-docker-compose/646.html)

View File

@@ -1,29 +0,0 @@
version: '3.8'
services:
localstack-s3:
container_name: '${LOCALSTACK_DOCKER_NAME-localstack-main}'
image: localstack/localstack:s3-latest
ports:
- '127.0.0.1:4566:4566'
volumes:
- './init-s3.py:/etc/localstack/init/ready.d/init-s3.py'
verdaccio:
container_name: verdaccio-s3-plugin
build: s3Plugin/
environment:
- DEBUG=verdaccio:*
- AWS_ACCESS_KEY_ID=foobar
- AWS_SECRET_ACCESS_KEY=foobar
- AWS_DEFAULT_REGION=eu-west-2
- AWS_S3_ENDPOINT=http://localstack-s3:4566
- AWS_S3_PATH_STYLE=true
ports:
- '4874:4873'
depends_on:
- localstack-s3
networks:
- default
networks:
default:
name: verdaccio-network

View File

@@ -1,10 +0,0 @@
import boto3
s3_client = boto3.client(
"s3",
endpoint_url=f"http://localhost:4566",
aws_access_key_id="test",
aws_secret_access_key="test"
)
s3_client.create_bucket(Bucket="localstack.s3.plugin.test")

View File

@@ -1,9 +0,0 @@
FROM verdaccio/verdaccio:6.x-next
LABEL Juan Picado <jotadeveloper@gmail.com>
# Copy the configuration file into the container
ADD config.yaml /verdaccio/conf/config.yaml
USER root
# This is the best way to install a plugin in Verdaccio
RUN npm install --global verdaccio-aws-s3-storage
USER $VERDACCIO_USER_UID

View File

@@ -1,27 +0,0 @@
storage: /verdaccio/storage
store:
aws-s3-storage:
bucket: localstack.s3.plugin.test
keyPrefix: docker-test-prefix
region: eu-west-2
endpoint: http://localstack-s3:4566
uplinks:
npmjs:
url: https://registry.npmjs.org/
packages:
'@*/*':
access: $all
publish: $all
proxy: npmjs
'**':
access: $all
publish: $all
proxy: npmjs
log: { type: stdout, format: pretty, level: trace }
listen:
- 0.0.0.0:4873

View File

@@ -1,18 +0,0 @@
# GitHub OAuth Login with verdaccio-github-oauth-ui plugin and Verdaccio 6.x
This setup runs Verdaccio alongside Localstack, providing a simple test/mocking environment for
developing cloud applications. In this case, we are simulating AWS S3 functionality.
https://github.com/n4bb12/verdaccio-github-oauth-ui
## Configuration
Open `config.yaml` and modify the required properties follow the official documentation.
https://github.com/n4bb12/verdaccio-github-oauth-ui/blob/main/docs/configuration.md
## Usage
```bash
docker-compose up --force-recreate --build --always-recreate-deps
```

View File

@@ -1,15 +0,0 @@
version: '3.8'
services:
verdaccio:
container_name: verdaccio-oauth-plugin
build: plugin/
environment:
- DEBUG=verdaccio:*
ports:
- '4874:4873'
networks:
- default
networks:
default:
name: verdaccio-network

View File

@@ -1,9 +0,0 @@
FROM verdaccio/verdaccio:6.x-next
LABEL Juan Picado <jotadeveloper@gmail.com>
# Copy the configuration file into the container
ADD config.yaml /verdaccio/conf/config.yaml
USER root
# This is the best way to install a plugin in Verdaccio
RUN npm install --global verdaccio-github-oauth-ui
USER $VERDACCIO_USER_UID

View File

@@ -1,34 +0,0 @@
storage: /verdaccio/storage
middlewares:
github-oauth-ui:
enabled: true
auth:
# READ HERE https://github.com/n4bb12/verdaccio-github-oauth-ui/blob/main/docs/configuration.md
github-oauth-ui:
client-id: take_this_from_github
client-secret: take_this_from_github
token: my_github_token
uplinks:
npmjs:
url: https://registry.npmjs.org/
packages:
'@*/*':
access: $all
publish: $all
proxy: npmjs
jquery:
# Limit access to users:
access: github/user/GITHUB_USER
'**':
access: $all
publish: $all
proxy: npmjs
log: { type: stdout, format: pretty, level: trace }
listen:
- 0.0.0.0:4873

View File

@@ -4,16 +4,16 @@
"version": "2.0.0-next-8.0",
"main": "src/index.ts",
"devDependencies": {
"@verdaccio/config": "workspace:8.0.0-next-8.15",
"@verdaccio/core": "workspace:8.0.0-next-8.15",
"@verdaccio/types": "workspace:13.0.0-next-8.5",
"@verdaccio/config": "workspace:8.0.0-next-8.12",
"@verdaccio/core": "workspace:8.0.0-next-8.12",
"@verdaccio/types": "workspace:13.0.0-next-8.3",
"debug": "4.4.0",
"fs-extra": "11.2.0",
"get-port": "5.1.1",
"got": "11.8.6",
"js-yaml": "4.1.0",
"lodash": "4.17.21",
"verdaccio": "workspace:8.0.0-next-8.15"
"verdaccio": "workspace:8.0.0-next-8.12"
},
"scripts": {
"test": "echo no test",

View File

@@ -1,12 +1,5 @@
# @verdaccio/e2e-cli-npm9
## 1.0.2-next-8.0
### Patch Changes
- d4fc827: fix(e2e): name for npm10 test
- @verdaccio/test-cli-commons@2.0.0-next-8.0
## 1.0.1
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"private": true,
"name": "@verdaccio/e2e-cli-npm10",
"version": "1.0.2-next-8.0",
"name": "@verdaccio/e2e-cli-npm9",
"version": "1.0.1",
"dependencies": {
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.0",
"@verdaccio/e2e-cli-npm-common": "workspace:*",

View File

@@ -3,10 +3,10 @@
"name": "@verdaccio/e2e-ui",
"version": "2.0.0",
"devDependencies": {
"verdaccio": "workspace:8.0.0-next-8.15",
"@verdaccio/core": "workspace:8.0.0-next-8.15",
"@verdaccio/config": "workspace:8.0.0-next-8.15",
"@verdaccio/test-helper": "workspace:4.0.0-next-8.4",
"verdaccio": "workspace:8.0.0-next-8.12",
"@verdaccio/core": "workspace:8.0.0-next-8.12",
"@verdaccio/config": "workspace:8.0.0-next-8.12",
"@verdaccio/test-helper": "workspace:4.0.0-next-8.3",
"debug": "4.4.0",
"cypress": "^13.6.0",
"get-port": "5.1.1"

View File

@@ -1,6 +0,0 @@
/*
!/bin/**/*
!/build/**/*
!index.js
!LICENSE
!README.md

View File

@@ -1,55 +1,5 @@
# @verdaccio/api
## 8.1.0-next-8.15
### Patch Changes
- Updated dependencies [1f25d5f]
- @verdaccio/auth@8.0.0-next-8.15
- @verdaccio/core@8.0.0-next-8.15
- @verdaccio/config@8.0.0-next-8.15
- @verdaccio/middleware@8.0.0-next-8.15
- @verdaccio/store@8.0.0-next-8.15
- @verdaccio/utils@8.1.0-next-8.15
- @verdaccio/logger@8.0.0-next-8.15
## 8.1.0-next-8.14
### Patch Changes
- 1e2f503: chore(api): avoid double registration of JSON bodyParser
- b9fea38: chore: cleanup utils
- Updated dependencies [b9fea38]
- Updated dependencies [bb478f2]
- Updated dependencies [2bcd3ca]
- Updated dependencies [da1650c]
- Updated dependencies [8f28186]
- @verdaccio/middleware@8.0.0-next-8.14
- @verdaccio/core@8.0.0-next-8.14
- @verdaccio/config@8.0.0-next-8.14
- @verdaccio/store@8.0.0-next-8.14
- @verdaccio/utils@8.1.0-next-8.14
- @verdaccio/auth@8.0.0-next-8.14
- @verdaccio/logger@8.0.0-next-8.14
## 8.1.0-next-8.13
### Patch Changes
- e4a1539: chore: package.json maintenance
- 0607e80: chore: update readme badges and license files
- Updated dependencies [b3fa5df]
- Updated dependencies [2eb8cc2]
- Updated dependencies [e4a1539]
- Updated dependencies [0607e80]
- @verdaccio/config@8.0.0-next-8.13
- @verdaccio/store@8.0.0-next-8.13
- @verdaccio/utils@8.1.0-next-8.13
- @verdaccio/core@8.0.0-next-8.13
- @verdaccio/logger@8.0.0-next-8.13
- @verdaccio/middleware@8.0.0-next-8.13
- @verdaccio/auth@8.0.0-next-8.13
## 8.1.0-next-8.12
### Patch Changes

View File

@@ -1,21 +0,0 @@
MIT License
Copyright (c) 2025 Verdaccio contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,19 +1,12 @@
# @verdaccio/api - Verdaccio Registry API
# @verdaccio/api
[![Verdaccio Home](https://img.shields.io/badge/Homepage-Verdaccio-405236?style=flat)](https://verdaccio.org)
[![MIT License](https://img.shields.io/github/license/verdaccio/verdaccio?label=License&color=405236)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
[![Verdaccio Latest](https://img.shields.io/npm/v/verdaccio?label=Latest%20Version&color=405236)](https://github.com/verdaccio/verdaccio)
[![This Package Latest](https://img.shields.io/npm/v/@verdaccio/api?label=@verdaccio/api&color=405236)](https://npmjs.com/package/@verdaccio/api)
[![backers](https://opencollective.com/verdaccio/tiers/backer/badge.svg?label=Backer&color=brightgreen)](https://opencollective.com/verdaccio)
[![stackshare](https://img.shields.io/badge/Follow%20on-StackShare-blue.svg?logo=stackshare&style=flat)](https://stackshare.io/verdaccio)
[![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/verdaccio/localized.svg)](https://crowdin.com/project/verdaccio)
[![TODOs](https://badgen.net/https/api.tickgit.com/badgen/github.com/verdaccio/verdaccio)](https://www.tickgit.com/browse?repo=github.com/verdaccio/verdaccio)
[![Documentation](https://img.shields.io/badge/Help-Verdaccio?style=flat&logo=Verdaccio&label=Verdaccio&color=cd4000)](https://verdaccio.org/docs)
[![Discord](https://img.shields.io/badge/Chat-Discord?style=flat&logo=Discord&label=Discord&color=cd4000)](https://discord.com/channels/388674437219745793)
[![Bluesky](https://img.shields.io/badge/Follow-Bluesky?style=flat&logo=Bluesky&label=Bluesky&color=cd4000)](https://bsky.app/profile/verdaccio.org)
[![Backers](https://img.shields.io/opencollective/backers/verdaccio?style=flat&logo=opencollective&label=Join%20Backers&color=cd4000)](https://opencollective.com/verdaccio/contribute)
[![Sponsors](https://img.shields.io/opencollective/sponsors/verdaccio?style=flat&logo=opencollective&label=Sponsor%20Us&color=cd4000)](https://opencollective.com/verdaccio/contribute)
[![Verdaccio Downloads](https://img.shields.io/npm/dm/verdaccio?style=flat&logo=npm&label=Npm%20Downloads&color=lightgrey)](https://www.npmjs.com/package/verdaccio)
[![Docker Pulls](https://img.shields.io/docker/pulls/verdaccio/verdaccio?style=flat&logo=docker&label=Docker%20Pulls&color=lightgrey)](https://hub.docker.com/r/verdaccio/verdaccio)
[![GitHub Stars](https://img.shields.io/github/stars/verdaccio?style=flat&logo=github&label=GitHub%20Stars%20%E2%AD%90&color=lightgrey)](https://github.com/verdaccio/verdaccio/stargazers)
[![Github](https://img.shields.io/github/stars/verdaccio/verdaccio.svg?style=social&label=Stars)](https://github.com/verdaccio/verdaccio/stargazers)
## Donations
@@ -27,7 +20,7 @@ If you want to report a security vulnerability, please follow the steps which we
## Open Collective Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio/contribute)]
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio#sponsor)]
[![sponsor](https://opencollective.com/verdaccio/sponsor/0/avatar.svg)](https://opencollective.com/verdaccio/sponsor/0/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/1/avatar.svg)](https://opencollective.com/verdaccio/sponsor/1/website)
@@ -42,9 +35,9 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
## Open Collective Backers
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/verdaccio/contribute)]
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/verdaccio#backer)]
[![backers](https://opencollective.com/verdaccio/backers.svg?width=890)](https://opencollective.com/verdaccio/contributes)
[![backers](https://opencollective.com/verdaccio/backers.svg?width=890)](https://opencollective.com/verdaccio#backers)
## Special Thanks

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/api",
"version": "8.1.0-next-8.15",
"version": "8.1.0-next-8.12",
"description": "Verdaccio Registry API",
"main": "./build/index.js",
"types": "build/index.d.ts",
@@ -42,13 +42,13 @@
},
"license": "MIT",
"dependencies": {
"@verdaccio/auth": "workspace:8.0.0-next-8.15",
"@verdaccio/config": "workspace:8.0.0-next-8.15",
"@verdaccio/core": "workspace:8.0.0-next-8.15",
"@verdaccio/logger": "workspace:8.0.0-next-8.15",
"@verdaccio/middleware": "workspace:8.0.0-next-8.15",
"@verdaccio/store": "workspace:8.0.0-next-8.15",
"@verdaccio/utils": "workspace:8.1.0-next-8.15",
"@verdaccio/auth": "workspace:8.0.0-next-8.12",
"@verdaccio/config": "workspace:8.0.0-next-8.12",
"@verdaccio/core": "workspace:8.0.0-next-8.12",
"@verdaccio/logger": "workspace:8.0.0-next-8.12",
"@verdaccio/middleware": "workspace:8.0.0-next-8.12",
"@verdaccio/store": "workspace:8.0.0-next-8.12",
"@verdaccio/utils": "workspace:8.1.0-next-8.12",
"abortcontroller-polyfill": "1.7.8",
"body-parser": "1.20.3",
"cookies": "0.9.1",
@@ -59,8 +59,8 @@
"semver": "7.7.1"
},
"devDependencies": {
"@verdaccio/test-helper": "workspace:4.0.0-next-8.4",
"@verdaccio/types": "workspace:13.0.0-next-8.5",
"@verdaccio/test-helper": "workspace:4.0.0-next-8.3",
"@verdaccio/types": "workspace:13.0.0-next-8.3",
"mockdate": "3.0.5",
"supertest": "7.0.0"
},

View File

@@ -1,4 +1,3 @@
import buildDebug from 'debug';
import express, { Router } from 'express';
import { Auth } from '@verdaccio/auth';
@@ -25,8 +24,6 @@ import v1Search from './v1/search';
import token from './v1/token';
import whoami from './whoami';
const debug = buildDebug('verdaccio:api');
export default function (config: Config, auth: Auth, storage: Storage, logger: Logger): Router {
/* eslint new-cap:off */
const app = express.Router();
@@ -47,14 +44,7 @@ export default function (config: Config, auth: Auth, storage: Storage, logger: L
app.param('org_couchdb_user', match(/^org\.couchdb\.user:/));
app.use(auth.apiJWTmiddleware());
// middleware might have registered a json parser already
if (hasBodyParser(app)) {
debug('json parser already registered');
} else {
app.use(express.json({ strict: false, limit: config.max_body_size || '10mb' }));
}
app.use(express.json({ strict: false, limit: config.max_body_size || '10mb' }));
app.use(antiLoop(config));
app.use(makeURLrelative);
// encode / in a scoped package name to be matched as a single parameter in routes
@@ -73,10 +63,3 @@ export default function (config: Config, auth: Auth, storage: Storage, logger: L
pkg(app, auth, storage, logger);
return app;
}
function hasBodyParser(app: Router): boolean {
const stack = app.stack || [];
return stack.some((middleware) => {
return middleware.handle?.name === 'jsonParser' || middleware.name === 'jsonParser';
});
}

View File

@@ -10,7 +10,7 @@ import {
HEADERS,
HTTP_STATUS,
errorUtils,
validationUtils,
validatioUtils,
} from '@verdaccio/core';
import { USER_API_ENDPOINTS, rateLimit } from '@verdaccio/middleware';
import { Logger } from '@verdaccio/types';
@@ -77,7 +77,7 @@ export default function (route: Router, auth: Auth, config: Config, logger: Logg
debug('login or adduser');
const remoteName = req?.remote_user?.name;
if (!validationUtils.validateUserName(req.params.org_couchdb_user, name)) {
if (!validatioUtils.validateUserName(req.params.org_couchdb_user, name)) {
return next(errorUtils.getBadRequest(API_ERROR.USERNAME_MISMATCH));
}
@@ -119,7 +119,7 @@ export default function (route: Router, auth: Auth, config: Config, logger: Logg
} else {
debug('adduser: %o', name);
if (
validationUtils.validatePassword(
validatioUtils.validatePassword(
password,
config?.serverSettings?.passwordValidationRegex
) === false

View File

@@ -8,7 +8,7 @@ import {
HTTP_STATUS,
SUPPORT_ERRORS,
errorUtils,
validationUtils,
validatioUtils,
} from '@verdaccio/core';
import { PROFILE_API_ENDPOINTS } from '@verdaccio/middleware';
import { rateLimit } from '@verdaccio/middleware';
@@ -72,7 +72,7 @@ export default function (route: Router, auth: Auth, config: Config): void {
if (_.isNil(password) === false) {
if (
validationUtils.validatePassword(
validatioUtils.validatePassword(
password.new,
config?.serverSettings?.passwordValidationRegex
) === false

View File

@@ -1,6 +0,0 @@
/*
!/bin/**/*
!/build/**/*
!index.js
!LICENSE
!README.md

View File

@@ -1,50 +1,5 @@
# @verdaccio/auth
## 8.0.0-next-8.15
### Patch Changes
- 1f25d5f: feat: add legacyMergeConfigs as option
- @verdaccio/core@8.0.0-next-8.15
- @verdaccio/config@8.0.0-next-8.15
- @verdaccio/loaders@8.0.0-next-8.6
- verdaccio-htpasswd@13.0.0-next-8.15
- @verdaccio/utils@8.1.0-next-8.15
- @verdaccio/signature@8.0.0-next-8.7
## 8.0.0-next-8.14
### Patch Changes
- 8f28186: fix: add legacyMergeConfigs legacy plugins
- Updated dependencies [b9fea38]
- Updated dependencies [bb478f2]
- Updated dependencies [8f28186]
- @verdaccio/core@8.0.0-next-8.14
- @verdaccio/config@8.0.0-next-8.14
- @verdaccio/utils@8.1.0-next-8.14
- @verdaccio/loaders@8.0.0-next-8.6
- verdaccio-htpasswd@13.0.0-next-8.14
- @verdaccio/signature@8.0.0-next-8.6
## 8.0.0-next-8.13
### Patch Changes
- e4a1539: chore: package.json maintenance
- 0607e80: chore: update readme badges and license files
- Updated dependencies [b3fa5df]
- Updated dependencies [2eb8cc2]
- Updated dependencies [e4a1539]
- Updated dependencies [50f20aa]
- Updated dependencies [0607e80]
- @verdaccio/config@8.0.0-next-8.13
- @verdaccio/utils@8.1.0-next-8.13
- @verdaccio/core@8.0.0-next-8.13
- verdaccio-htpasswd@13.0.0-next-8.13
- @verdaccio/signature@8.0.0-next-8.5
- @verdaccio/loaders@8.0.0-next-8.5
## 8.0.0-next-8.12
### Patch Changes

View File

@@ -1,21 +0,0 @@
MIT License
Copyright (c) 2025 Verdaccio contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,19 +1,12 @@
# @verdaccio/auth - Verdaccio Authentication
# @verdaccio/auth
[![Verdaccio Home](https://img.shields.io/badge/Homepage-Verdaccio-405236?style=flat)](https://verdaccio.org)
[![MIT License](https://img.shields.io/github/license/verdaccio/verdaccio?label=License&color=405236)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
[![Verdaccio Latest](https://img.shields.io/npm/v/verdaccio?label=Latest%20Version&color=405236)](https://github.com/verdaccio/verdaccio)
[![This Package Latest](https://img.shields.io/npm/v/@verdaccio/auth?label=@verdaccio/auth&color=405236)](https://npmjs.com/package/@verdaccio/auth)
[![backers](https://opencollective.com/verdaccio/tiers/backer/badge.svg?label=Backer&color=brightgreen)](https://opencollective.com/verdaccio)
[![stackshare](https://img.shields.io/badge/Follow%20on-StackShare-blue.svg?logo=stackshare&style=flat)](https://stackshare.io/verdaccio)
[![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/verdaccio/localized.svg)](https://crowdin.com/project/verdaccio)
[![TODOs](https://badgen.net/https/api.tickgit.com/badgen/github.com/verdaccio/verdaccio)](https://www.tickgit.com/browse?repo=github.com/verdaccio/verdaccio)
[![Documentation](https://img.shields.io/badge/Help-Verdaccio?style=flat&logo=Verdaccio&label=Verdaccio&color=cd4000)](https://verdaccio.org/docs)
[![Discord](https://img.shields.io/badge/Chat-Discord?style=flat&logo=Discord&label=Discord&color=cd4000)](https://discord.com/channels/388674437219745793)
[![Bluesky](https://img.shields.io/badge/Follow-Bluesky?style=flat&logo=Bluesky&label=Bluesky&color=cd4000)](https://bsky.app/profile/verdaccio.org)
[![Backers](https://img.shields.io/opencollective/backers/verdaccio?style=flat&logo=opencollective&label=Join%20Backers&color=cd4000)](https://opencollective.com/verdaccio/contribute)
[![Sponsors](https://img.shields.io/opencollective/sponsors/verdaccio?style=flat&logo=opencollective&label=Sponsor%20Us&color=cd4000)](https://opencollective.com/verdaccio/contribute)
[![Verdaccio Downloads](https://img.shields.io/npm/dm/verdaccio?style=flat&logo=npm&label=Npm%20Downloads&color=lightgrey)](https://www.npmjs.com/package/verdaccio)
[![Docker Pulls](https://img.shields.io/docker/pulls/verdaccio/verdaccio?style=flat&logo=docker&label=Docker%20Pulls&color=lightgrey)](https://hub.docker.com/r/verdaccio/verdaccio)
[![GitHub Stars](https://img.shields.io/github/stars/verdaccio?style=flat&logo=github&label=GitHub%20Stars%20%E2%AD%90&color=lightgrey)](https://github.com/verdaccio/verdaccio/stargazers)
[![Github](https://img.shields.io/github/stars/verdaccio/verdaccio.svg?style=social&label=Stars)](https://github.com/verdaccio/verdaccio/stargazers)
## Donations
@@ -27,7 +20,7 @@ If you want to report a security vulnerability, please follow the steps which we
## Open Collective Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio/contribute)]
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio#sponsor)]
[![sponsor](https://opencollective.com/verdaccio/sponsor/0/avatar.svg)](https://opencollective.com/verdaccio/sponsor/0/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/1/avatar.svg)](https://opencollective.com/verdaccio/sponsor/1/website)
@@ -42,39 +35,40 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
## Open Collective Backers
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/verdaccio/contribute)]
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/verdaccio#backer)]
[![backers](https://opencollective.com/verdaccio/backers.svg?width=890)](https://opencollective.com/verdaccio/contributes)
[![backers](https://opencollective.com/verdaccio/backers.svg?width=890)](https://opencollective.com/verdaccio#backers)
## Special Thanks
Thanks to the following companies to help us to achieve our goals providing free open source licenses.
[![jetbrains](https://github.com/verdaccio/verdaccio/blob/master/assets/thanks/jetbrains/logo.jpg?raw=true)](https://www.jetbrains.com/)
[![crowdin](https://github.com/verdaccio/verdaccio/blob/master/assets/thanks/crowdin/logo.png?raw=true)](https://crowdin.com/)
[![jetbrain](assets/thanks/jetbrains/logo.png)](https://www.jetbrains.com/)
[![crowdin](assets/thanks/crowdin/logo.png)](https://crowdin.com/)
[![balsamiq](assets/thanks/balsamiq/logo.jpg)](https://balsamiq.com/)
## Contributors
This project exists thanks to all the people who contribute. [[Contribute](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md)].
This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
[![contributors](https://opencollective.com/verdaccio/contributors.svg?width=890&button=true)](https://github.com/verdaccio/verdaccio/graphs/contributors)
[![contributors](https://opencollective.com/verdaccio/contributors.svg?width=890&button=true)](../../graphs/contributors)
## FAQ / Contact / Troubleshoot
### FAQ / Contact / Troubleshoot
If you have any issue you can try the following options. Do not hesitate to ask or check our issues database. Perhaps someone has asked already what you are looking for.
If you have any issue you can try the following options, do no desist to ask or check our issues database, perhaps someone has asked already what you are looking for.
- [Blog](https://verdaccio.org/blog/)
- [Donations](https://opencollective.com/verdaccio)
- [Reporting an issue](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md#reporting-a-bug)
- [Running discussions](https://github.com/orgs/verdaccio/discussions)
- [Chat](https://discord.com/channels/388674437219745793)
- [Logos](https://verdaccio.org/docs/logo)
- [Docker Examples](https://github.com/verdaccio/verdaccio/tree/master/docker-examples)
- [Running discussions](https://github.com/verdaccio/verdaccio/issues?q=is%3Aissue+is%3Aopen+label%3Adiscuss)
- [Chat](http://chat.verdaccio.org/)
- [Logos](https://verdaccio.org/docs/en/logo)
- [Docker Examples](https://github.com/verdaccio/docker-examples)
- [FAQ](https://github.com/verdaccio/verdaccio/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Aquestion%20)
## License
### License
Verdaccio is [MIT licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
The Verdaccio documentation and logos (excluding /thanks, e.g., .md, .png, .sketch files within the /assets folder) are
[Creative Commons licensed](https://creativecommons.org/licenses/by/4.0/).
The Verdaccio documentation and logos (excluding /thanks, e.g., .md, .png, .sketch) files within the /assets folder) is
[Creative Commons licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE-docs).

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/auth",
"version": "8.0.0-next-8.15",
"version": "8.0.0-next-8.12",
"description": "Verdaccio Authentication",
"main": "./build/index.js",
"types": "./build/index.d.ts",
@@ -42,19 +42,19 @@
},
"license": "MIT",
"dependencies": {
"@verdaccio/config": "workspace:8.0.0-next-8.15",
"@verdaccio/core": "workspace:8.0.0-next-8.15",
"@verdaccio/loaders": "workspace:8.0.0-next-8.6",
"@verdaccio/signature": "workspace:8.0.0-next-8.7",
"@verdaccio/utils": "workspace:8.1.0-next-8.15",
"@verdaccio/config": "workspace:8.0.0-next-8.12",
"@verdaccio/core": "workspace:8.0.0-next-8.12",
"@verdaccio/loaders": "workspace:8.0.0-next-8.4",
"@verdaccio/signature": "workspace:8.0.0-next-8.4",
"@verdaccio/utils": "workspace:8.1.0-next-8.12",
"debug": "4.4.0",
"lodash": "4.17.21",
"verdaccio-htpasswd": "workspace:13.0.0-next-8.15"
"verdaccio-htpasswd": "workspace:13.0.0-next-8.12"
},
"devDependencies": {
"@verdaccio/middleware": "workspace:8.0.0-next-8.15",
"@verdaccio/types": "workspace:13.0.0-next-8.5",
"@verdaccio/logger": "workspace:8.0.0-next-8.15",
"@verdaccio/middleware": "workspace:8.0.0-next-8.12",
"@verdaccio/types": "workspace:13.0.0-next-8.3",
"@verdaccio/logger": "workspace:8.0.0-next-8.12",
"express": "4.21.2",
"supertest": "7.0.0"
},

View File

@@ -59,14 +59,12 @@ class Auth implements IAuthMiddleware, TokenEncryption, pluginUtils.IBasicAuth {
public secret: string;
public logger: Logger;
public plugins: pluginUtils.Auth<Config>[];
public options: { legacyMergeConfigs: boolean };
public constructor(config: Config, logger: Logger, options = { legacyMergeConfigs: false }) {
public constructor(config: Config, logger: Logger) {
this.config = config;
this.secret = config.secret;
this.logger = logger;
this.plugins = [];
this.options = options;
if (!this.secret) {
throw new TypeError('secret it is required value on initialize the auth class');
}
@@ -125,7 +123,6 @@ class Auth implements IAuthMiddleware, TokenEncryption, pluginUtils.IBasicAuth {
typeof allow_publish !== 'undefined'
);
},
this.options.legacyMergeConfigs,
this.config?.serverSettings?.pluginPrefix,
PLUGIN_CATEGORY.AUTHENTICATION
);
@@ -194,7 +191,7 @@ class Auth implements IAuthMiddleware, TokenEncryption, pluginUtils.IBasicAuth {
plugin.authenticate(username, password, function (err: VerdaccioError | null, groups): void {
if (err) {
debug('authenticating for user %o failed. Error: %o', username, err?.message);
return cb(err);
return cb(err, undefined);
}
// Expect: SKIP if groups is falsey and not an array
@@ -204,7 +201,7 @@ class Auth implements IAuthMiddleware, TokenEncryption, pluginUtils.IBasicAuth {
// Caveat: STRING (if valid) will pass successfully
// bug give unexpected results
// Info: Cannot use `== false to check falsey values`
if (!!groups && groups.length !== 0) {
if (!!groups && groups?.length !== 0) {
// TODO: create a better understanding of expectations
if (_.isString(groups)) {
throw new TypeError('plugin group error: invalid type for function');
@@ -215,7 +212,7 @@ class Auth implements IAuthMiddleware, TokenEncryption, pluginUtils.IBasicAuth {
}
debug('authentication for user %o was successfully. Groups: %o', username, groups);
return cb(err, createRemoteUser(username, groups));
return cb(err, createRemoteUser(username, groups as string[]));
}
next();
});

View File

@@ -161,7 +161,7 @@ export function getDefaultPlugins(logger: Logger): pluginUtils.Auth<Config> {
return {
authenticate(_user: string, _password: string, cb: pluginUtils.AuthCallback): void {
debug('triggered default authenticate method');
cb(errorUtils.getForbidden(API_ERROR.BAD_USERNAME_PASSWORD));
cb(errorUtils.getForbidden(API_ERROR.BAD_USERNAME_PASSWORD), undefined);
},
adduser(_user: string, _password: string, cb: pluginUtils.AuthUserCallback): void {

View File

@@ -4,7 +4,14 @@ import supertest from 'supertest';
import { describe, expect, test, vi } from 'vitest';
import { Config as AppConfig, ROLES, createRemoteUser, getDefaultConfig } from '@verdaccio/config';
import { HEADERS, HTTP_STATUS, SUPPORT_ERRORS, TOKEN_BEARER, errorUtils } from '@verdaccio/core';
import {
API_ERROR,
HEADERS,
HTTP_STATUS,
SUPPORT_ERRORS,
TOKEN_BEARER,
errorUtils,
} from '@verdaccio/core';
import { logger, setup } from '@verdaccio/logger';
import { errorReportingMiddleware, final, handleError } from '@verdaccio/middleware';
import { Config } from '@verdaccio/types';
@@ -96,7 +103,7 @@ describe('AuthTest', () => {
});
});
test('should be a fail on login', async () => {
test('should be a fail on login due plugin failure', async () => {
const config: Config = new AppConfig(authPluginFailureConf);
config.checkSecretKey('12345');
const auth: Auth = new Auth(config, logger);
@@ -107,7 +114,7 @@ describe('AuthTest', () => {
auth.authenticate('foo', 'bar', callback);
expect(callback).toHaveBeenCalledTimes(1);
expect(callback).toHaveBeenCalledWith(errorUtils.getInternalError());
expect(callback).toHaveBeenCalledWith(errorUtils.getInternalError(), undefined);
});
});
@@ -131,6 +138,7 @@ describe('AuthTest', () => {
auth.authenticate(null, value, callback);
const call = callback.mock.calls[index++];
expect(call[0]).toBeDefined();
expect(call[0]).toEqual(errorUtils.getForbidden(API_ERROR.BAD_USERNAME_PASSWORD));
expect(call[1]).toBeUndefined();
}
});

View File

@@ -1,6 +0,0 @@
/*
!/bin/**/*
!/build/**/*
!index.js
!LICENSE
!README.md

View File

@@ -1,40 +1,5 @@
# @verdaccio/cli
## 8.0.0-next-8.15
### Patch Changes
- @verdaccio/node-api@8.0.0-next-8.15
- @verdaccio/core@8.0.0-next-8.15
- @verdaccio/config@8.0.0-next-8.15
- @verdaccio/logger@8.0.0-next-8.15
## 8.0.0-next-8.14
### Patch Changes
- Updated dependencies [b9fea38]
- Updated dependencies [bb478f2]
- @verdaccio/core@8.0.0-next-8.14
- @verdaccio/config@8.0.0-next-8.14
- @verdaccio/node-api@8.0.0-next-8.14
- @verdaccio/logger@8.0.0-next-8.14
## 8.0.0-next-8.13
### Patch Changes
- e4a1539: chore: package.json maintenance
- 0607e80: chore: update readme badges and license files
- Updated dependencies [b3fa5df]
- Updated dependencies [2eb8cc2]
- Updated dependencies [e4a1539]
- Updated dependencies [0607e80]
- @verdaccio/config@8.0.0-next-8.13
- @verdaccio/core@8.0.0-next-8.13
- @verdaccio/logger@8.0.0-next-8.13
- @verdaccio/node-api@8.0.0-next-8.13
## 8.0.0-next-8.12
### Patch Changes

View File

@@ -1,21 +0,0 @@
MIT License
Copyright (c) 2025 Verdaccio contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,19 +1,12 @@
# @verdaccio/cli - Verdaccio CLI
# @verdaccio/cli
[![Verdaccio Home](https://img.shields.io/badge/Homepage-Verdaccio-405236?style=flat)](https://verdaccio.org)
[![MIT License](https://img.shields.io/github/license/verdaccio/verdaccio?label=License&color=405236)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
[![Verdaccio Latest](https://img.shields.io/npm/v/verdaccio?label=Latest%20Version&color=405236)](https://github.com/verdaccio/verdaccio)
[![This Package Latest](https://img.shields.io/npm/v/@verdaccio/cli?label=@verdaccio/cli&color=405236)](https://npmjs.com/package/@verdaccio/cli)
[![backers](https://opencollective.com/verdaccio/tiers/backer/badge.svg?label=Backer&color=brightgreen)](https://opencollective.com/verdaccio)
[![stackshare](https://img.shields.io/badge/Follow%20on-StackShare-blue.svg?logo=stackshare&style=flat)](https://stackshare.io/verdaccio)
[![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/verdaccio/localized.svg)](https://crowdin.com/project/verdaccio)
[![TODOs](https://badgen.net/https/api.tickgit.com/badgen/github.com/verdaccio/verdaccio)](https://www.tickgit.com/browse?repo=github.com/verdaccio/verdaccio)
[![Documentation](https://img.shields.io/badge/Help-Verdaccio?style=flat&logo=Verdaccio&label=Verdaccio&color=cd4000)](https://verdaccio.org/docs)
[![Discord](https://img.shields.io/badge/Chat-Discord?style=flat&logo=Discord&label=Discord&color=cd4000)](https://discord.com/channels/388674437219745793)
[![Bluesky](https://img.shields.io/badge/Follow-Bluesky?style=flat&logo=Bluesky&label=Bluesky&color=cd4000)](https://bsky.app/profile/verdaccio.org)
[![Backers](https://img.shields.io/opencollective/backers/verdaccio?style=flat&logo=opencollective&label=Join%20Backers&color=cd4000)](https://opencollective.com/verdaccio/contribute)
[![Sponsors](https://img.shields.io/opencollective/sponsors/verdaccio?style=flat&logo=opencollective&label=Sponsor%20Us&color=cd4000)](https://opencollective.com/verdaccio/contribute)
[![Verdaccio Downloads](https://img.shields.io/npm/dm/verdaccio?style=flat&logo=npm&label=Npm%20Downloads&color=lightgrey)](https://www.npmjs.com/package/verdaccio)
[![Docker Pulls](https://img.shields.io/docker/pulls/verdaccio/verdaccio?style=flat&logo=docker&label=Docker%20Pulls&color=lightgrey)](https://hub.docker.com/r/verdaccio/verdaccio)
[![GitHub Stars](https://img.shields.io/github/stars/verdaccio?style=flat&logo=github&label=GitHub%20Stars%20%E2%AD%90&color=lightgrey)](https://github.com/verdaccio/verdaccio/stargazers)
[![Github](https://img.shields.io/github/stars/verdaccio/verdaccio.svg?style=social&label=Stars)](https://github.com/verdaccio/verdaccio/stargazers)
## Donations
@@ -27,7 +20,7 @@ If you want to report a security vulnerability, please follow the steps which we
## Open Collective Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio/contribute)]
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio#sponsor)]
[![sponsor](https://opencollective.com/verdaccio/sponsor/0/avatar.svg)](https://opencollective.com/verdaccio/sponsor/0/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/1/avatar.svg)](https://opencollective.com/verdaccio/sponsor/1/website)
@@ -42,39 +35,40 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
## Open Collective Backers
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/verdaccio/contribute)]
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/verdaccio#backer)]
[![backers](https://opencollective.com/verdaccio/backers.svg?width=890)](https://opencollective.com/verdaccio/contributes)
[![backers](https://opencollective.com/verdaccio/backers.svg?width=890)](https://opencollective.com/verdaccio#backers)
## Special Thanks
Thanks to the following companies to help us to achieve our goals providing free open source licenses.
[![jetbrains](https://github.com/verdaccio/verdaccio/blob/master/assets/thanks/jetbrains/logo.jpg?raw=true)](https://www.jetbrains.com/)
[![crowdin](https://github.com/verdaccio/verdaccio/blob/master/assets/thanks/crowdin/logo.png?raw=true)](https://crowdin.com/)
[![jetbrain](assets/thanks/jetbrains/logo.png)](https://www.jetbrains.com/)
[![crowdin](assets/thanks/crowdin/logo.png)](https://crowdin.com/)
[![balsamiq](assets/thanks/balsamiq/logo.jpg)](https://balsamiq.com/)
## Contributors
This project exists thanks to all the people who contribute. [[Contribute](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md)].
This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
[![contributors](https://opencollective.com/verdaccio/contributors.svg?width=890&button=true)](https://github.com/verdaccio/verdaccio/graphs/contributors)
[![contributors](https://opencollective.com/verdaccio/contributors.svg?width=890&button=true)](../../graphs/contributors)
## FAQ / Contact / Troubleshoot
### FAQ / Contact / Troubleshoot
If you have any issue you can try the following options. Do not hesitate to ask or check our issues database. Perhaps someone has asked already what you are looking for.
If you have any issue you can try the following options, do no desist to ask or check our issues database, perhaps someone has asked already what you are looking for.
- [Blog](https://verdaccio.org/blog/)
- [Donations](https://opencollective.com/verdaccio)
- [Reporting an issue](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md#reporting-a-bug)
- [Running discussions](https://github.com/orgs/verdaccio/discussions)
- [Chat](https://discord.com/channels/388674437219745793)
- [Logos](https://verdaccio.org/docs/logo)
- [Docker Examples](https://github.com/verdaccio/verdaccio/tree/master/docker-examples)
- [Running discussions](https://github.com/verdaccio/verdaccio/issues?q=is%3Aissue+is%3Aopen+label%3Adiscuss)
- [Chat](http://chat.verdaccio.org/)
- [Logos](https://verdaccio.org/docs/en/logo)
- [Docker Examples](https://github.com/verdaccio/docker-examples)
- [FAQ](https://github.com/verdaccio/verdaccio/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Aquestion%20)
## License
### License
Verdaccio is [MIT licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
The Verdaccio documentation and logos (excluding /thanks, e.g., .md, .png, .sketch files within the /assets folder) are
[Creative Commons licensed](https://creativecommons.org/licenses/by/4.0/).
The Verdaccio documentation and logos (excluding /thanks, e.g., .md, .png, .sketch) files within the /assets folder) is
[Creative Commons licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE-docs).

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/cli",
"version": "8.0.0-next-8.15",
"version": "8.0.0-next-8.12",
"author": {
"name": "Juan Picado",
"email": "juanpicado19@gmail.com"
@@ -47,10 +47,10 @@
"start": "ts-node src/index.ts"
},
"dependencies": {
"@verdaccio/config": "workspace:8.0.0-next-8.15",
"@verdaccio/core": "workspace:8.0.0-next-8.15",
"@verdaccio/logger": "workspace:8.0.0-next-8.15",
"@verdaccio/node-api": "workspace:8.0.0-next-8.15",
"@verdaccio/config": "workspace:8.0.0-next-8.12",
"@verdaccio/core": "workspace:8.0.0-next-8.12",
"@verdaccio/logger": "workspace:8.0.0-next-8.12",
"@verdaccio/node-api": "workspace:8.0.0-next-8.12",
"clipanion": "4.0.0-rc.4",
"envinfo": "7.14.0",
"kleur": "4.1.5",

View File

@@ -1,6 +0,0 @@
/*
!/bin/**/*
!/build/**/*
!index.js
!LICENSE
!README.md

View File

@@ -1,36 +1,5 @@
# @verdaccio/config
## 8.0.0-next-8.15
### Patch Changes
- @verdaccio/core@8.0.0-next-8.15
- @verdaccio/utils@8.1.0-next-8.15
## 8.0.0-next-8.14
### Patch Changes
- b9fea38: chore: cleanup utils
- bb478f2: chore: expose config utils
- Updated dependencies [b9fea38]
- @verdaccio/core@8.0.0-next-8.14
- @verdaccio/utils@8.1.0-next-8.14
## 8.0.0-next-8.13
### Patch Changes
- b3fa5df: fix: uplink processing order
- e4a1539: chore: package.json maintenance
- 0607e80: chore: update readme badges and license files
- Updated dependencies [b3fa5df]
- Updated dependencies [2eb8cc2]
- Updated dependencies [e4a1539]
- Updated dependencies [0607e80]
- @verdaccio/utils@8.1.0-next-8.13
- @verdaccio/core@8.0.0-next-8.13
## 8.0.0-next-8.12
### Patch Changes

View File

@@ -1,21 +0,0 @@
MIT License
Copyright (c) 2025 Verdaccio contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,19 +1,4 @@
# @verdaccio/config - Verdaccio Configuration
[![Verdaccio Home](https://img.shields.io/badge/Homepage-Verdaccio-405236?style=flat)](https://verdaccio.org)
[![MIT License](https://img.shields.io/github/license/verdaccio/verdaccio?label=License&color=405236)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
[![Verdaccio Latest](https://img.shields.io/npm/v/verdaccio?label=Latest%20Version&color=405236)](https://github.com/verdaccio/verdaccio)
[![This Package Latest](https://img.shields.io/npm/v/@verdaccio/config?label=@verdaccio/config&color=405236)](https://npmjs.com/package/@verdaccio/config)
[![Documentation](https://img.shields.io/badge/Help-Verdaccio?style=flat&logo=Verdaccio&label=Verdaccio&color=cd4000)](https://verdaccio.org/docs)
[![Discord](https://img.shields.io/badge/Chat-Discord?style=flat&logo=Discord&label=Discord&color=cd4000)](https://discord.com/channels/388674437219745793)
[![Bluesky](https://img.shields.io/badge/Follow-Bluesky?style=flat&logo=Bluesky&label=Bluesky&color=cd4000)](https://bsky.app/profile/verdaccio.org)
[![Backers](https://img.shields.io/opencollective/backers/verdaccio?style=flat&logo=opencollective&label=Join%20Backers&color=cd4000)](https://opencollective.com/verdaccio/contribute)
[![Sponsors](https://img.shields.io/opencollective/sponsors/verdaccio?style=flat&logo=opencollective&label=Sponsor%20Us&color=cd4000)](https://opencollective.com/verdaccio/contribute)
[![Verdaccio Downloads](https://img.shields.io/npm/dm/verdaccio?style=flat&logo=npm&label=Npm%20Downloads&color=lightgrey)](https://www.npmjs.com/package/verdaccio)
[![Docker Pulls](https://img.shields.io/docker/pulls/verdaccio/verdaccio?style=flat&logo=docker&label=Docker%20Pulls&color=lightgrey)](https://hub.docker.com/r/verdaccio/verdaccio)
[![GitHub Stars](https://img.shields.io/github/stars/verdaccio?style=flat&logo=github&label=GitHub%20Stars%20%E2%AD%90&color=lightgrey)](https://github.com/verdaccio/verdaccio/stargazers)
# @verdaccio/config
## Overview
@@ -84,66 +69,9 @@ const defaultConfig = getDefaultConfig();
- `fromJStoYAML(config: ConfigYaml): string`: Converts a JavaScript configuration object to YAML format.
- `parseConfigFile(filePath: string): ConfigYaml`: Parses a configuration file from the specified path and returns the configuration object.
## Donations
Verdaccio is run by **volunteers**; nobody is working full-time on it. If you find this project to be useful and would like to support its development, consider making a donation - **your logo might end up in this readme.** 😉
**[Donate](https://opencollective.com/verdaccio)** 💵👍🏻 starting from _\$1/month_ or just one single contribution.
## Report a vulnerability
If you want to report a security vulnerability, please follow the steps which we have defined for you in our [security policy](https://github.com/verdaccio/verdaccio/security/policy).
## Open Collective Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio/contribute)]
[![sponsor](https://opencollective.com/verdaccio/sponsor/0/avatar.svg)](https://opencollective.com/verdaccio/sponsor/0/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/1/avatar.svg)](https://opencollective.com/verdaccio/sponsor/1/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/2/avatar.svg)](https://opencollective.com/verdaccio/sponsor/2/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/3/avatar.svg)](https://opencollective.com/verdaccio/sponsor/3/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/4/avatar.svg)](https://opencollective.com/verdaccio/sponsor/4/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/5/avatar.svg)](https://opencollective.com/verdaccio/sponsor/5/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/6/avatar.svg)](https://opencollective.com/verdaccio/sponsor/6/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/7/avatar.svg)](https://opencollective.com/verdaccio/sponsor/7/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/8/avatar.svg)](https://opencollective.com/verdaccio/sponsor/8/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/9/avatar.svg)](https://opencollective.com/verdaccio/sponsor/9/website)
## Open Collective Backers
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/verdaccio/contribute)]
[![backers](https://opencollective.com/verdaccio/backers.svg?width=890)](https://opencollective.com/verdaccio/contributes)
## Special Thanks
Thanks to the following companies to help us to achieve our goals providing free open source licenses.
[![jetbrains](https://github.com/verdaccio/verdaccio/blob/master/assets/thanks/jetbrains/logo.jpg?raw=true)](https://www.jetbrains.com/)
[![crowdin](https://github.com/verdaccio/verdaccio/blob/master/assets/thanks/crowdin/logo.png?raw=true)](https://crowdin.com/)
## Contributors
This project exists thanks to all the people who contribute. [[Contribute](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md)].
[![contributors](https://opencollective.com/verdaccio/contributors.svg?width=890&button=true)](https://github.com/verdaccio/verdaccio/graphs/contributors)
## FAQ / Contact / Troubleshoot
If you have any issue you can try the following options. Do not hesitate to ask or check our issues database. Perhaps someone has asked already what you are looking for.
- [Blog](https://verdaccio.org/blog/)
- [Donations](https://opencollective.com/verdaccio)
- [Reporting an issue](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md#reporting-a-bug)
- [Running discussions](https://github.com/orgs/verdaccio/discussions)
- [Chat](https://discord.com/channels/388674437219745793)
- [Logos](https://verdaccio.org/docs/logo)
- [Docker Examples](https://github.com/verdaccio/verdaccio/tree/master/docker-examples)
- [FAQ](https://github.com/verdaccio/verdaccio/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Aquestion%20)
## License
### License
Verdaccio is [MIT licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
The Verdaccio documentation and logos (excluding /thanks, e.g., .md, .png, .sketch files within the /assets folder) are
[Creative Commons licensed](https://creativecommons.org/licenses/by/4.0/).
The Verdaccio documentation and logos (excluding /thanks, e.g., .md, .png, .sketch) files within the /assets folder) is
[Creative Commons licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE-docs).

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/config",
"version": "8.0.0-next-8.15",
"version": "8.0.0-next-8.12",
"description": "Verdaccio Configuration",
"main": "./build/index.js",
"types": "build/index.d.ts",
@@ -42,8 +42,8 @@
"build": "pnpm run build:js && pnpm run build:types"
},
"dependencies": {
"@verdaccio/core": "workspace:8.0.0-next-8.15",
"@verdaccio/utils": "workspace:8.1.0-next-8.15",
"@verdaccio/core": "workspace:8.0.0-next-8.12",
"@verdaccio/utils": "workspace:8.1.0-next-8.12",
"debug": "4.4.0",
"js-yaml": "4.1.0",
"lodash": "4.17.21",

View File

@@ -4,38 +4,34 @@
# improve security.
#
# Look here for more config file examples:
# https://github.com/verdaccio/verdaccio/blob/master/docker-examples/README.md
# https://github.com/verdaccio/verdaccio/tree/5.x/packages/config/src/conf/default.yaml
#
# Read about the best practices
# https://verdaccio.org/docs/best
# Path to a directory with all packages
# path to a directory with all packages
storage: ./storage
# Path to a directory with plugins to include, the plugins folder has the higher priority for loading plugins
# Disable this folder to avoid warnings if is not used
# path to a directory with plugins to include, the plugins folder has the higher priority for loading plugins
# disable this folder to avoid warnings if is not used
# plugins: ./plugins
# Web UI settings
# https://verdaccio.org/docs/webui
web:
title: Verdaccio
# Disable complete web UI
# enabled: false
# Custom colors for header background and font
# custom colors for header background and font
# primaryColor: "#4b5e40"
# Custom logos and favicon
# custom logos and favicon
# logo: ./path/to/logo.png
# logoDark: ./path/to/logoDark.png
# favicon: ./path/to/favicon.ico
# Disable gravatar support
# comment out to disable gravatar support
# gravatar: false
# By default, packages are ordered ascending
# sort_packages: asc | desc
# Convert your UI to the dark side
# by default packages are ordercer ascendant (asc|desc)
# sort_packages: asc
# convert your UI to the dark side
# darkMode: true
# html_cache: true
# By default, all features are displayed
# by default all features are displayed
# login: true
# showInfo: true
# showSettings: true
@@ -46,25 +42,20 @@ web:
# showRaw: true
# showDownloadTarball: true
# showUplinks: true
#
# HTML tags injected before ends </head>
# metaScripts:
# - '<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>'
# - '<script type="text/javascript" src="https://browser.sentry-cdn.com/5.15.5/bundle.min.js"></script>'
# - '<meta name="robots" content="noindex">'
#
# HTML tags injected as first child in <body>
# scriptsBodyBefore:
# - '<div id="myId">html before webpack scripts</div>'
#
# HTML tags injected as last child in </body>
# HTML tags injected after manifest <scripts/>
# scriptsBodyAfter:
# - '<script type="text/javascript" src="https://my.company.com/customJS.min.js"></script>'
#
# Public path for template manifest scripts (only manifest)
# publicPath: http://somedomain.org/
# - '<script type="text/javascript" src="https://my.company.com/customJS.min.js"></script>'
# HTML tags injected before ends </head>
# metaScripts:
# - '<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>'
# - '<script type="text/javascript" src="https://browser.sentry-cdn.com/5.15.5/bundle.min.js"></script>'
# - '<meta name="robots" content="noindex" />'
# HTML tags injected first child at <body/>
# bodyBefore:
# - '<div id="myId">html before webpack scripts</div>'
# Public path for template manifest scripts (only manifest)
# publicPath: http://somedomain.org/
# Settings for authentication plugin
# https://verdaccio.org/docs/configuration#authentication
auth:
htpasswd:
@@ -73,8 +64,8 @@ auth:
# You can set this to -1 to disable registration.
# max_users: 1000
# A list of other known repositories we can talk to
# https://verdaccio.org/docs/configuration#uplinks
# a list of other known repositories we can talk to
uplinks:
npmjs:
url: https://registry.npmjs.org/
@@ -106,7 +97,7 @@ packages:
# if package is not available locally, proxy requests to 'npmjs' registry
proxy: npmjs
# To improve your security configuration and avoid dependency confusion
# To improve your security configuration and avoid dependency confusion
# consider removing the proxy property for private packages
# https://verdaccio.org/docs/best#remove-proxy-to-increase-security-at-private-packages
@@ -116,14 +107,14 @@ packages:
# WORKAROUND: Through given configuration you can workaround following issue https://github.com/verdaccio/verdaccio/issues/301. Set to 0 in case 60 is not enough.
server:
keepAliveTimeout: 60
# The pluginPrefix replaces the default plugins prefix which is `verdaccio`. Please don't include `-`. If `something` is provided
# the resolved package will be `something-xxxx`.
# The pluginPrefix replaces the default plugins prefix which is `verdaccio`, please don't include `-`. If `something` is provided
# the resolve package will be `something-xxxx`.
# pluginPrefix: something
# A regex for the password validation /.{3}$/ (3 characters min)
# An example to limit to 10 characters minimum
# passwordValidationRegex: /.{10}$/
# Allow `req.ip` to resolve properly when Verdaccio is behind a proxy or load-balancer
# https://expressjs.com/en/guide/behind-proxies.html
# See: https://expressjs.com/en/guide/behind-proxies.html
# trustProxy: '127.0.0.1'
# https://verdaccio.org/docs/configuration#offline-publish
@@ -132,24 +123,18 @@ server:
# check_owners: false
# keep_readmes: 'latest' | 'tagged' | 'all'
# Define public URL of registry in combination with VERDACCIO_PUBLIC_URL environment variable
# https://verdaccio.org/docs/configuration#url-prefix
# url_prefix: /verdaccio/
#
# Examples:
# VERDACCIO_PUBLIC_URL='https://somedomain.org'
# VERDACCIO_PUBLIC_URL='https://somedomain.org';
# url_prefix: '/my_prefix'
# // url -> https://somedomain.org/my_prefix/
#
# VERDACCIO_PUBLIC_URL='https://somedomain.org'
# VERDACCIO_PUBLIC_URL='https://somedomain.org';
# url_prefix: '/'
# // url -> https://somedomain.org/
#
# VERDACCIO_PUBLIC_URL='https://somedomain.org/first_prefix'
# VERDACCIO_PUBLIC_URL='https://somedomain.org/first_prefix';
# url_prefix: '/second_prefix'
# // url -> https://somedomain.org/second_prefix/
# // url -> https://somedomain.org/second_prefix/'
# Security settings
# https://verdaccio.org/docs/configuration#security
# security:
# api:
@@ -175,12 +160,12 @@ server:
# https://verdaccio.org/docs/configuration#listen-port
# listen:
# - localhost:4873 # default value
# - http://localhost:4873 # same thing
# - 0.0.0.0:4873 # listen on all addresses (INADDR_ANY)
# - https://example.org:4873 # if you want to use https
# - "[::1]:4873" # ipv6
# - unix:/tmp/verdaccio.sock # unix socket
# - localhost:4873 # default value
# - http://localhost:4873 # same thing
# - 0.0.0.0:4873 # listen on all addresses (INADDR_ANY)
# - https://example.org:4873 # if you want to use https
# - "[::1]:4873" # ipv6
# - unix:/tmp/verdaccio.sock # unix socket
# The HTTPS configuration is useful if you do not consider use a HTTP Proxy
# https://verdaccio.org/docs/configuration#https
@@ -192,46 +177,36 @@ server:
# https://verdaccio.org/docs/configuration#proxy
# http_proxy: http://something.local/
# https_proxy: https://something.local/
# no_proxy: localhost,127.0.0.1,server.local
# https://verdaccio.org/docs/configuration#notifications
# notify:
# method: 'POST'
# headers: '[{ "Content-Type": "application/json" }]'
# endpoint: 'https://usagge.hipchat.com/v2/room/3729485/notification?auth_token=mySecretToken'
# method: POST
# headers: [{ "Content-Type": "application/json" }]
# endpoint: https://usagge.hipchat.com/v2/room/3729485/notification?auth_token=mySecretToken
# content: '{"color":"green","message":"New package published: * {{ name }}*","notify":true,"message_format":"text"}'
# Settings for middleware plugins
# https://verdaccio.org/docs/plugins#middleware-configuration
middlewares:
audit:
enabled: true
# timeout: 10000
# Log settings
# https://verdaccio.org/docs/logger
# log settings
log: { type: stdout, format: pretty, level: http }
# Feature flags (experimental settings that can be changed or removed in the future)
# https://verdaccio.org/docs/configuration#experiments
# experiments:
# # Support for npm token command
#experiments:
# # support for npm token command
# token: false
# # Enable tarball URL redirect for hosting tarball with a different server.
# # The tarball_url_redirect can be a template string
# # disable writing body size to logs, read more on ticket 1912
# bytesin_off: false
# # enable tarball URL redirect for hosting tarball with a different server, the tarball_url_redirect can be a template string
# tarball_url_redirect: 'https://mycdn.com/verdaccio/${packageName}/${filename}'
# # The tarball_url_redirect can be a function, takes packageName and filename and returns the url,
# # when working with a js configuration file
# # the tarball_url_redirect can be a function, takes packageName and filename and returns the url, when working with a js configuration file
# tarball_url_redirect(packageName, filename) {
# const signedUrl = // generate a signed url
# return signedUrl;
# }
# Renamed from "experiments" to "flags" in next major release
# flags:
# changePassword: true
# searchRemote: true
# Translate your registry, API and web UI
# List of the available translations https://github.com/verdaccio/verdaccio/blob/master/packages/plugins/ui-theme/src/i18n/ABOUT_TRANSLATIONS.md
# translate your registry, api i18n not available yet
i18n:
# list of the available translations https://github.com/verdaccio/verdaccio/blob/master/packages/plugins/ui-theme/src/i18n/ABOUT_TRANSLATIONS.md
web: en-US

View File

@@ -1,80 +1,75 @@
#
# This is the default configuration file. It allows all users to do anything,
# please read carefully the documentation and best practices to
# improve security.
# This is the default configuration file. As it allows all users to do anything,
# please read carefully the documentation and best practices to improve security.
#
# Do not configure host and port under `listen` in this file
# as it will be ignored when using docker.
# see https://verdaccio.org/docs/en/docker#docker-and-custom-port-configuration
#
# Look here for more config file examples:
# https://github.com/verdaccio/verdaccio/blob/master/docker-examples/README.md
# https://github.com/verdaccio/verdaccio/tree/5.x/packages/config/src/conf/docker.yaml
#
# Read about the best practices
# https://verdaccio.org/docs/best
# Path to a directory with all packages
# path to a directory with all packages
storage: /verdaccio/storage/data
# Path to a directory with plugins to include, the plugins folder has the higher priority for loading plugins
# Disable this folder to avoid warnings if is not used
# path to a directory with plugins to include, the plugins folder has the higher priority for loading plugins
# disable this folder to avoid warnings if is not used
plugins: /verdaccio/plugins
# Web UI settings
# https://verdaccio.org/docs/webui
web:
title: Verdaccio
# Disable complete web UI
# enabled: false
# Custom colors for header background and font
# custom colors for header background and font
# primaryColor: "#4b5e40"
# Custom logos and favicon
# custom logos and favicon
# logo: ./path/to/logo.png
# logoDark: ./path/to/logoDark.png
# favicon: ./path/to/favicon.ico
# Disable gravatar support
# Comment out to disable gravatar support
# gravatar: false
# By default, packages are ordered ascending
# sort_packages: asc | desc
# By default packages are ordered ascendant (asc|desc)
# sort_packages: asc
# Convert your UI to the dark side
# darkMode: true
# html_cache: true
# By default, all features are displayed
# By default all features are displayed
# login: true
# showInfo: true
# showSettings: true
# In combination with darkMode you can force specific theme
# In combination with darkMode you can force a specific theme
# showThemeSwitch: true
# showFooter: true
# showSearch: true
# showRaw: true
# showDownloadTarball: true
# showUplinks: true
#
# HTML tags injected before ends </head>
# metaScripts:
# - '<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>'
# - '<script type="text/javascript" src="https://browser.sentry-cdn.com/5.15.5/bundle.min.js"></script>'
# - '<meta name="robots" content="noindex">'
#
# HTML tags injected as first child in <body>
# scriptsBodyBefore:
# - '<div id="myId">html before webpack scripts</div>'
#
# HTML tags injected as last child in </body>
# HTML tags injected after manifest <scripts/>
# scriptsBodyAfter:
# - '<script type="text/javascript" src="https://my.company.com/customJS.min.js"></script>'
#
# Public path for template manifest scripts (only manifest)
# publicPath: http://somedomain.org/
# - '<script type="text/javascript" src="https://my.company.com/customJS.min.js"></script>'
# HTML tags injected before end </head>
# metaScripts:
# - '<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>'
# - '<script type="text/javascript" src="https://browser.sentry-cdn.com/5.15.5/bundle.min.js"></script>'
# - '<meta name="robots" content="noindex" />'
# HTML tags injected as first child at <body/>
# bodyBefore:
# - '<div id="myId">html before webpack scripts</div>'
# Public path for template manifest scripts (only manifest)
# publicPath: http://somedomain.org/
# Settings for authentication plugin
# https://verdaccio.org/docs/configuration#authentication
auth:
htpasswd:
file: /verdaccio/storage/htpasswd
# Maximum amount of users allowed to register, defaults to "+inf".
# Maximum amount of users allowed to register, defaults to "+infinity".
# You can set this to -1 to disable registration.
# max_users: 1000
# A list of other known repositories we can talk to
# https://verdaccio.org/docs/configuration#uplinks
# A list of other known repositories we can talk to
uplinks:
npmjs:
url: https://registry.npmjs.org/
@@ -91,14 +86,14 @@ packages:
proxy: npmjs
'**':
# allow all users (including non-authenticated users) to read and
# Allow all users (including non-authenticated users) to read and
# publish all packages
#
# you can specify usernames/groupnames (depending on your auth plugin)
# You can specify usernames/groupnames (depending on your auth plugin)
# and three keywords: "$all", "$anonymous", "$authenticated"
access: $all
# allow all known users to publish/unpublish packages
# Allow all known users to publish/unpublish packages
# (anyone can register by default, remember?)
publish: $authenticated
unpublish: $authenticated
@@ -111,19 +106,21 @@ packages:
# https://verdaccio.org/docs/best#remove-proxy-to-increase-security-at-private-packages
# https://verdaccio.org/docs/configuration#server
# You can specify HTTP/1.1 server keep alive timeout in seconds for incoming connections.
# A value of 0 makes the http server behave similarly to Node.js versions prior to 8.0.0, which did not have a keep-alive timeout.
# WORKAROUND: Through given configuration you can workaround following issue https://github.com/verdaccio/verdaccio/issues/301. Set to 0 in case 60 is not enough.
# You can specify the HTTP/1.1 server keep alive timeout in seconds for incoming connections.
# A value of 0 makes the http server behave similarly to Node.js versions prior to 8.0.0, which did not have a
# keep-alive timeout.
# WORKAROUND: Through given configuration you can work around the following issue:
# https://github.com/verdaccio/verdaccio/issues/301. Set to 0 in case 60 is not enough.
server:
keepAliveTimeout: 60
# The pluginPrefix replaces the default plugins prefix which is `verdaccio`. Please don't include `-`. If `something` is provided
# the resolved package will be `something-xxxx`.
# The pluginPrefix replaces the default plugins prefix which is `verdaccio`, please don't include `-`. If `something` is provided
# the resolve package will be `something-xxxx`.
# pluginPrefix: something
# A regex for the password validation /.{3}$/ (3 characters min)
# An example to limit to 10 characters minimum
# passwordValidationRegex: /.{10}$/
# Allow `req.ip` to resolve properly when Verdaccio is behind a proxy or load-balancer
# https://expressjs.com/en/guide/behind-proxies.html
# See: https://expressjs.com/en/guide/behind-proxies.html
# trustProxy: '127.0.0.1'
# https://verdaccio.org/docs/configuration#offline-publish
@@ -132,24 +129,18 @@ server:
# check_owners: false
# keep_readmes: 'latest' | 'tagged' | 'all'
# Define public URL of registry in combination with VERDACCIO_PUBLIC_URL environment variable
# https://verdaccio.org/docs/configuration#url-prefix
# url_prefix: /verdaccio/
#
# Examples:
# VERDACCIO_PUBLIC_URL='https://somedomain.org'
# VERDACCIO_PUBLIC_URL='https://somedomain.org';
# url_prefix: '/my_prefix'
# // url -> https://somedomain.org/my_prefix/
#
# VERDACCIO_PUBLIC_URL='https://somedomain.org'
# VERDACCIO_PUBLIC_URL='https://somedomain.org';
# url_prefix: '/'
# // url -> https://somedomain.org/
#
# VERDACCIO_PUBLIC_URL='https://somedomain.org/first_prefix'
# VERDACCIO_PUBLIC_URL='https://somedomain.org/first_prefix';
# url_prefix: '/second_prefix'
# // url -> https://somedomain.org/second_prefix/
# // url -> https://somedomain.org/second_prefix/'
# Security settings
# https://verdaccio.org/docs/configuration#security
# security:
# api:
@@ -175,14 +166,14 @@ server:
# https://verdaccio.org/docs/configuration#listen-port
# listen:
# - localhost:4873 # default value
# - http://localhost:4873 # same thing
# - 0.0.0.0:4873 # listen on all addresses (INADDR_ANY)
# - https://example.org:4873 # if you want to use https
# - "[::1]:4873" # ipv6
# - unix:/tmp/verdaccio.sock # unix socket
# - localhost:4873 # default value
# - http://localhost:4873 # same thing
# - 0.0.0.0:4873 # listen on all addresses (INADDR_ANY)
# - https://example.org:4873 # if you want to use https
# - "[::1]:4873" # ipv6
# - unix:/tmp/verdaccio.sock # unix socket
# The HTTPS configuration is useful if you do not consider use a HTTP Proxy
# The HTTPS configuration is useful if you do not consider using an HTTP Proxy
# https://verdaccio.org/docs/configuration#https
# https:
# key: ./path/verdaccio-key.pem
@@ -192,29 +183,23 @@ server:
# https://verdaccio.org/docs/configuration#proxy
# http_proxy: http://something.local/
# https_proxy: https://something.local/
# no_proxy: localhost,127.0.0.1,server.local
# https://verdaccio.org/docs/configuration#notifications
# notify:
# method: 'POST'
# headers: '[{ "Content-Type": "application/json" }]'
# endpoint: 'https://usagge.hipchat.com/v2/room/3729485/notification?auth_token=mySecretToken'
# method: POST
# headers: [{ "Content-Type": "application/json" }]
# endpoint: https://usagge.hipchat.com/v2/room/3729485/notification?auth_token=mySecretToken
# content: '{"color":"green","message":"New package published: * {{ name }}*","notify":true,"message_format":"text"}'
# Settings for middleware plugins
# https://verdaccio.org/docs/plugins#middleware-configuration
middlewares:
audit:
enabled: true
# timeout: 10000
# Log settings
# https://verdaccio.org/docs/logger
# log settings
log: { type: stdout, format: pretty, level: http }
# Feature flags (experimental settings that can be changed or removed in the future)
# https://verdaccio.org/docs/configuration#experiments
# experiments:
#experiments:
# # Support for npm token command
# token: false
# # Enable tarball URL redirect for hosting tarball with a different server.
@@ -226,12 +211,8 @@ log: { type: stdout, format: pretty, level: http }
# const signedUrl = // generate a signed url
# return signedUrl;
# }
# Renamed from "experiments" to "flags" in next major release
# flags:
# changePassword: true
# searchRemote: true
# Translate your registry, API and web UI
# List of the available translations https://github.com/verdaccio/verdaccio/blob/master/packages/plugins/ui-theme/src/i18n/ABOUT_TRANSLATIONS.md
i18n:
web: en-US
# Translate your registry, api i18n not available yet
# i18n:
# list of the available translations https://github.com/verdaccio/verdaccio/blob/master/packages/plugins/ui-theme/src/i18n/ABOUT_TRANSLATIONS.md
# web: en-US

View File

@@ -2,7 +2,7 @@ import assert from 'assert';
import buildDebug from 'debug';
import _ from 'lodash';
import { APP_ERROR, validationUtils, warningUtils } from '@verdaccio/core';
import { APP_ERROR, warningUtils } from '@verdaccio/core';
import { Codes } from '@verdaccio/core/build/warning-utils';
import {
Config as AppConfig,
@@ -15,7 +15,7 @@ import {
Security,
ServerSettingsConf,
} from '@verdaccio/types';
import { generateRandomHexString, getMatchedPackagesSpec } from '@verdaccio/utils';
import { generateRandomHexString, getMatchedPackagesSpec, isObject } from '@verdaccio/utils';
import { getUserAgent } from './agent';
import { normalisePackageAccess } from './package-access';
@@ -124,7 +124,7 @@ class Config implements AppConfig {
this.userRateLimit = { ...defaultUserRateLimiting, ...config?.userRateLimit };
// some weird shell scripts are valid yaml files parsed as string
assert(validationUtils.isObject(config), APP_ERROR.CONFIG_NOT_VALID);
assert(_.isObject(config), APP_ERROR.CONFIG_NOT_VALID);
// sanity check for strategic config properties
strategicConfigProps.forEach(function (x): void {
@@ -132,7 +132,7 @@ class Config implements AppConfig {
self[x] = {};
}
assert(validationUtils.isObject(self[x]), `CONFIG: bad "${x}" value (object expected)`);
assert(isObject(self[x]), `CONFIG: bad "${x}" value (object expected)`);
});
this.uplinks = sanityCheckUplinksProps(uplinkSanityCheck(this.uplinks));

View File

@@ -1,7 +1,6 @@
export * from './config';
export * from './config-path';
export * from './token';
export * from './config-utils';
export * from './package-access';
export { fromJStoYAML, parseConfigFile } from './parse';
export * from './uplinks';

View File

@@ -48,13 +48,9 @@ export function sanityCheckUplinksProps(configUpLinks: UpLinksConfList): UpLinks
return uplinks;
}
export function getProxiesForPackage(pkg: string, packages: PackageList): string[] {
const matchedPkg = getMatchedPackagesSpec(pkg, packages);
return matchedPkg?.proxy || [];
}
export function hasProxyTo(pkg: string, upLink: string, packages: PackageList): boolean {
const proxyList = getProxiesForPackage(pkg, packages);
const matchedPkg = getMatchedPackagesSpec(pkg, packages);
const proxyList = typeof matchedPkg !== 'undefined' ? matchedPkg.proxy : [];
if (proxyList) {
return proxyList.some((curr) => upLink === curr);
}

View File

@@ -80,25 +80,6 @@ describe('Package access utilities', () => {
expect(all.publish).toContain('admin');
});
test('should test multi proxy definition', () => {
const { packages } = parseConfigFile(parseConfigurationFile('pkgs-multi-proxy'));
const access = normalisePackageAccess(packages);
expect(access).toBeDefined();
const scoped = access[`${PACKAGE_ACCESS.SCOPE}`];
const all = access[`${PACKAGE_ACCESS.ALL}`];
const testPackage = access['test-package'];
expect(scoped).toBeDefined();
expect(scoped.proxy).toEqual(['github', 'npmjs']);
expect(all).toBeDefined();
expect(all.proxy).toEqual(['npmjs', 'gitlab']);
expect(testPackage).toBeDefined();
expect(testPackage.proxy).toEqual(['npmjs', 'gitlab', 'github']);
});
test(
'should normalize deprecated packages into the new ones ' + '(backward props compatible)',
() => {
@@ -111,7 +92,7 @@ describe('Package access utilities', () => {
expect(react).toBeDefined();
expect(react.access).toBeDefined();
expect(react.access).toEqual([]);
expect(react.publish?.[0]).toBe('admin');
expect(react.publish[0]).toBe('admin');
expect(react.proxy).toBeDefined();
expect(react.proxy).toEqual([]);
expect(react.storage).toBeDefined();

View File

@@ -1,26 +0,0 @@
uplinks:
github:
url: 'https://npm.pkg.github.com/'
auth:
type: Bearer
token: 'xxx123xxx'
gitlab:
url: 'https://gitlab.com/api/v4/projects/1/packages/npm/'
auth:
type: Basic
token: 'xxx456xxx'
npmjs:
url: https://registry.npmjs.org/
# Multiple proxies
# https://verdaccio.org/docs/packages/#use-multiple-uplinks
packages:
'@*/*':
access: $all
proxy: github npmjs
'test-package':
access: $all
proxy: npmjs gitlab github
'**':
access: $all
proxy: npmjs gitlab

View File

@@ -1,12 +1,7 @@
import { describe, expect, test } from 'vitest';
import { normalisePackageAccess, parseConfigFile } from '../src';
import {
getProxiesForPackage,
hasProxyTo,
sanityCheckUplinksProps,
uplinkSanityCheck,
} from '../src/uplinks';
import { hasProxyTo, sanityCheckUplinksProps, uplinkSanityCheck } from '../src/uplinks';
import { parseConfigurationFile } from './utils';
describe('Uplinks Utilities', () => {
@@ -29,7 +24,7 @@ describe('Uplinks Utilities', () => {
});
describe('sanityCheckUplinksProps', () => {
test('should fail if url prop is missing', () => {
test('should fails if url prop is missing', () => {
const { uplinks } = parseConfigFile(parseConfigurationFile('uplink-wrong'));
expect(() => {
sanityCheckUplinksProps(uplinks);
@@ -42,31 +37,6 @@ describe('Uplinks Utilities', () => {
});
});
describe('multiple uplinks with auth', () => {
test('should fail if url or auth are missing', () => {
const { uplinks } = parseConfigFile(parseConfigurationFile('pkgs-multi-proxy'));
expect(sanityCheckUplinksProps(uplinks)).toEqual(uplinks);
expect(Object.keys(uplinks)).toHaveLength(3);
// No trailing slash in urls
expect(uplinks.github.url).toEqual('https://npm.pkg.github.com');
expect(uplinks.github?.auth?.type).toEqual('Bearer');
expect(uplinks.github?.auth?.token).toEqual('xxx123xxx');
expect(uplinks.gitlab.url).toEqual('https://gitlab.com/api/v4/projects/1/packages/npm');
expect(uplinks.gitlab?.auth?.type).toEqual('Basic');
expect(uplinks.gitlab?.auth?.token).toEqual('xxx456xxx');
expect(uplinks.npmjs.url).toEqual('https://registry.npmjs.org');
});
test('check proxy list for package access', () => {
const packages = normalisePackageAccess(
parseConfigFile(parseConfigurationFile('pkgs-multi-proxy')).packages
);
expect(getProxiesForPackage('@scope/test', packages)).toEqual(['github', 'npmjs']);
expect(getProxiesForPackage('test', packages)).toEqual(['npmjs', 'gitlab']);
expect(getProxiesForPackage('test-package', packages)).toEqual(['npmjs', 'gitlab', 'github']);
});
});
describe('hasProxyTo', () => {
test('should test basic config', () => {
const packages = normalisePackageAccess(

View File

@@ -1,19 +1,12 @@
# @verdaccio/core
[![Verdaccio Home](https://img.shields.io/badge/Homepage-Verdaccio-405236?style=flat)](https://verdaccio.org)
[![MIT License](https://img.shields.io/github/license/verdaccio/verdaccio?label=License&color=405236)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
[![Verdaccio Latest](https://img.shields.io/npm/v/verdaccio?label=Latest%20Version&color=405236)](https://github.com/verdaccio/verdaccio)
[![This Package Latest](https://img.shields.io/npm/v/@verdaccio/core?label=@verdaccio/core&color=405236)](https://npmjs.com/package/@verdaccio/core)
[![backers](https://opencollective.com/verdaccio/tiers/backer/badge.svg?label=Backer&color=brightgreen)](https://opencollective.com/verdaccio)
[![stackshare](https://img.shields.io/badge/Follow%20on-StackShare-blue.svg?logo=stackshare&style=flat)](https://stackshare.io/verdaccio)
[![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/verdaccio/localized.svg)](https://crowdin.com/project/verdaccio)
[![TODOs](https://badgen.net/https/api.tickgit.com/badgen/github.com/verdaccio/verdaccio)](https://www.tickgit.com/browse?repo=github.com/verdaccio/verdaccio)
[![Documentation](https://img.shields.io/badge/Help-Verdaccio?style=flat&logo=Verdaccio&label=Verdaccio&color=cd4000)](https://verdaccio.org/docs)
[![Discord](https://img.shields.io/badge/Chat-Discord?style=flat&logo=Discord&label=Discord&color=cd4000)](https://discord.com/channels/388674437219745793)
[![Bluesky](https://img.shields.io/badge/Follow-Bluesky?style=flat&logo=Bluesky&label=Bluesky&color=cd4000)](https://bsky.app/profile/verdaccio.org)
[![Backers](https://img.shields.io/opencollective/backers/verdaccio?style=flat&logo=opencollective&label=Join%20Backers&color=cd4000)](https://opencollective.com/verdaccio/contribute)
[![Sponsors](https://img.shields.io/opencollective/sponsors/verdaccio?style=flat&logo=opencollective&label=Sponsor%20Us&color=cd4000)](https://opencollective.com/verdaccio/contribute)
[![Verdaccio Downloads](https://img.shields.io/npm/dm/verdaccio?style=flat&logo=npm&label=Npm%20Downloads&color=lightgrey)](https://www.npmjs.com/package/verdaccio)
[![Docker Pulls](https://img.shields.io/docker/pulls/verdaccio/verdaccio?style=flat&logo=docker&label=Docker%20Pulls&color=lightgrey)](https://hub.docker.com/r/verdaccio/verdaccio)
[![GitHub Stars](https://img.shields.io/github/stars/verdaccio?style=flat&logo=github&label=GitHub%20Stars%20%E2%AD%90&color=lightgrey)](https://github.com/verdaccio/verdaccio/stargazers)
[![Github](https://img.shields.io/github/stars/verdaccio/verdaccio.svg?style=social&label=Stars)](https://github.com/verdaccio/verdaccio/stargazers)
## Donations
@@ -27,7 +20,7 @@ If you want to report a security vulnerability, please follow the steps which we
## Open Collective Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio/contribute)]
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio#sponsor)]
[![sponsor](https://opencollective.com/verdaccio/sponsor/0/avatar.svg)](https://opencollective.com/verdaccio/sponsor/0/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/1/avatar.svg)](https://opencollective.com/verdaccio/sponsor/1/website)
@@ -42,39 +35,40 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
## Open Collective Backers
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/verdaccio/contribute)]
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/verdaccio#backer)]
[![backers](https://opencollective.com/verdaccio/backers.svg?width=890)](https://opencollective.com/verdaccio/contributes)
[![backers](https://opencollective.com/verdaccio/backers.svg?width=890)](https://opencollective.com/verdaccio#backers)
## Special Thanks
Thanks to the following companies to help us to achieve our goals providing free open source licenses.
[![jetbrains](https://github.com/verdaccio/verdaccio/blob/master/assets/thanks/jetbrains/logo.jpg?raw=true)](https://www.jetbrains.com/)
[![crowdin](https://github.com/verdaccio/verdaccio/blob/master/assets/thanks/crowdin/logo.png?raw=true)](https://crowdin.com/)
[![jetbrain](assets/thanks/jetbrains/logo.png)](https://www.jetbrains.com/)
[![crowdin](assets/thanks/crowdin/logo.png)](https://crowdin.com/)
[![balsamiq](assets/thanks/balsamiq/logo.jpg)](https://balsamiq.com/)
## Contributors
This project exists thanks to all the people who contribute. [[Contribute](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md)].
This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
[![contributors](https://opencollective.com/verdaccio/contributors.svg?width=890&button=true)](https://github.com/verdaccio/verdaccio/graphs/contributors)
[![contributors](https://opencollective.com/verdaccio/contributors.svg?width=890&button=true)](../../graphs/contributors)
## FAQ / Contact / Troubleshoot
### FAQ / Contact / Troubleshoot
If you have any issue you can try the following options. Do not hesitate to ask or check our issues database. Perhaps someone has asked already what you are looking for.
If you have any issue you can try the following options, do no desist to ask or check our issues database, perhaps someone has asked already what you are looking for.
- [Blog](https://verdaccio.org/blog/)
- [Donations](https://opencollective.com/verdaccio)
- [Reporting an issue](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md#reporting-a-bug)
- [Running discussions](https://github.com/orgs/verdaccio/discussions)
- [Chat](https://discord.com/channels/388674437219745793)
- [Logos](https://verdaccio.org/docs/logo)
- [Docker Examples](https://github.com/verdaccio/verdaccio/tree/master/docker-examples)
- [Running discussions](https://github.com/verdaccio/verdaccio/issues?q=is%3Aissue+is%3Aopen+label%3Adiscuss)
- [Chat](http://chat.verdaccio.org/)
- [Logos](https://verdaccio.org/docs/en/logo)
- [Docker Examples](https://github.com/verdaccio/docker-examples)
- [FAQ](https://github.com/verdaccio/verdaccio/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Aquestion%20)
## License
### License
Verdaccio is [MIT licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
The Verdaccio documentation and logos (excluding /thanks, e.g., .md, .png, .sketch files within the /assets folder) are
[Creative Commons licensed](https://creativecommons.org/licenses/by/4.0/).
The Verdaccio documentation and logos (excluding /thanks, e.g., .md, .png, .sketch) files within the /assets folder) is
[Creative Commons licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE-docs).

View File

@@ -1,6 +0,0 @@
/*
!/bin/**/*
!/build/**/*
!index.js
!LICENSE
!README.md

View File

@@ -1,21 +1,5 @@
# @verdaccio/core
## 8.0.0-next-8.15
## 8.0.0-next-8.14
### Patch Changes
- b9fea38: chore: cleanup utils
## 8.0.0-next-8.13
### Patch Changes
- 2eb8cc2: fix: handling for uplink timeouts
- e4a1539: chore: package.json maintenance
- 0607e80: chore: update readme badges and license files
## 8.0.0-next-8.12
### Patch Changes

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2025 Verdaccio contributors
Copyright (c) 2019 Verdaccio
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -1,80 +1,19 @@
# @verdaccio/core - Verdaccio Core Components
# Core
[![Verdaccio Home](https://img.shields.io/badge/Homepage-Verdaccio-405236?style=flat)](https://verdaccio.org)
[![MIT License](https://img.shields.io/github/license/verdaccio/verdaccio?label=License&color=405236)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
[![Verdaccio Latest](https://img.shields.io/npm/v/verdaccio?label=Latest%20Version&color=405236)](https://github.com/verdaccio/verdaccio)
[![This Package Latest](https://img.shields.io/npm/v/@verdaccio/core?label=@verdaccio/core&color=405236)](https://npmjs.com/package/@verdaccio/core)
[![CircleCI](https://circleci.com/gh/verdaccio/streams.svg?style=svg)](https://circleci.com/gh/ayusharma/@verdaccio/streams)
[![codecov](https://codecov.io/gh/verdaccio/streams/branch/master/graph/badge.svg)](https://codecov.io/gh/verdaccio/streams)
[![verdaccio (latest)](https://img.shields.io/npm/v/@verdaccio/streams/latest.svg)](https://www.npmjs.com/package/@verdaccio/streams)
[![backers](https://opencollective.com/verdaccio/tiers/backer/badge.svg?label=Backer&color=brightgreen)](https://opencollective.com/verdaccio)
[![discord](https://img.shields.io/discord/388674437219745793.svg)](http://chat.verdaccio.org/)
![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)
[![node](https://img.shields.io/node/v/@verdaccio/streams/latest.svg)](https://www.npmjs.com/package/@verdaccio/streams)
[![Documentation](https://img.shields.io/badge/Help-Verdaccio?style=flat&logo=Verdaccio&label=Verdaccio&color=cd4000)](https://verdaccio.org/docs)
[![Discord](https://img.shields.io/badge/Chat-Discord?style=flat&logo=Discord&label=Discord&color=cd4000)](https://discord.com/channels/388674437219745793)
[![Bluesky](https://img.shields.io/badge/Follow-Bluesky?style=flat&logo=Bluesky&label=Bluesky&color=cd4000)](https://bsky.app/profile/verdaccio.org)
[![Backers](https://img.shields.io/opencollective/backers/verdaccio?style=flat&logo=opencollective&label=Join%20Backers&color=cd4000)](https://opencollective.com/verdaccio/contribute)
[![Sponsors](https://img.shields.io/opencollective/sponsors/verdaccio?style=flat&logo=opencollective&label=Sponsor%20Us&color=cd4000)](https://opencollective.com/verdaccio/contribute)
This project provides an extension of `PassThrough` stream.
[![Verdaccio Downloads](https://img.shields.io/npm/dm/verdaccio?style=flat&logo=npm&label=Npm%20Downloads&color=lightgrey)](https://www.npmjs.com/package/verdaccio)
[![Docker Pulls](https://img.shields.io/docker/pulls/verdaccio/verdaccio?style=flat&logo=docker&label=Docker%20Pulls&color=lightgrey)](https://hub.docker.com/r/verdaccio/verdaccio)
[![GitHub Stars](https://img.shields.io/github/stars/verdaccio?style=flat&logo=github&label=GitHub%20Stars%20%E2%AD%90&color=lightgrey)](https://github.com/verdaccio/verdaccio/stargazers)
## Detail
## Donations
Verdaccio is run by **volunteers**; nobody is working full-time on it. If you find this project to be useful and would like to support its development, consider making a donation - **your logo might end up in this readme.** 😉
**[Donate](https://opencollective.com/verdaccio)** 💵👍🏻 starting from _\$1/month_ or just one single contribution.
## Report a vulnerability
If you want to report a security vulnerability, please follow the steps which we have defined for you in our [security policy](https://github.com/verdaccio/verdaccio/security/policy).
## Open Collective Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio/contribute)]
[![sponsor](https://opencollective.com/verdaccio/sponsor/0/avatar.svg)](https://opencollective.com/verdaccio/sponsor/0/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/1/avatar.svg)](https://opencollective.com/verdaccio/sponsor/1/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/2/avatar.svg)](https://opencollective.com/verdaccio/sponsor/2/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/3/avatar.svg)](https://opencollective.com/verdaccio/sponsor/3/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/4/avatar.svg)](https://opencollective.com/verdaccio/sponsor/4/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/5/avatar.svg)](https://opencollective.com/verdaccio/sponsor/5/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/6/avatar.svg)](https://opencollective.com/verdaccio/sponsor/6/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/7/avatar.svg)](https://opencollective.com/verdaccio/sponsor/7/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/8/avatar.svg)](https://opencollective.com/verdaccio/sponsor/8/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/9/avatar.svg)](https://opencollective.com/verdaccio/sponsor/9/website)
## Open Collective Backers
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/verdaccio/contribute)]
[![backers](https://opencollective.com/verdaccio/backers.svg?width=890)](https://opencollective.com/verdaccio/contributes)
## Special Thanks
Thanks to the following companies to help us to achieve our goals providing free open source licenses.
[![jetbrains](https://github.com/verdaccio/verdaccio/blob/master/assets/thanks/jetbrains/logo.jpg?raw=true)](https://www.jetbrains.com/)
[![crowdin](https://github.com/verdaccio/verdaccio/blob/master/assets/thanks/crowdin/logo.png?raw=true)](https://crowdin.com/)
## Contributors
This project exists thanks to all the people who contribute. [[Contribute](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md)].
[![contributors](https://opencollective.com/verdaccio/contributors.svg?width=890&button=true)](https://github.com/verdaccio/verdaccio/graphs/contributors)
## FAQ / Contact / Troubleshoot
If you have any issue you can try the following options. Do not hesitate to ask or check our issues database. Perhaps someone has asked already what you are looking for.
- [Blog](https://verdaccio.org/blog/)
- [Donations](https://opencollective.com/verdaccio)
- [Reporting an issue](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md#reporting-a-bug)
- [Running discussions](https://github.com/orgs/verdaccio/discussions)
- [Chat](https://discord.com/channels/388674437219745793)
- [Logos](https://verdaccio.org/docs/logo)
- [Docker Examples](https://github.com/verdaccio/verdaccio/tree/master/docker-examples)
- [FAQ](https://github.com/verdaccio/verdaccio/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Aquestion%20)
It provides 2 additional methods `abort()` and `done()`. Those implementations are widely use in the verdaccio core for handle `tarballs`.
## License
Verdaccio is [MIT licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
The Verdaccio documentation and logos (excluding /thanks, e.g., .md, .png, .sketch files within the /assets folder) are
[Creative Commons licensed](https://creativecommons.org/licenses/by/4.0/).
MIT (http://www.opensource.org/licenses/mit-license.php)

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/core",
"version": "8.0.0-next-8.15",
"version": "8.0.0-next-8.12",
"description": "Verdaccio Core Components",
"keywords": [
"private",
@@ -41,7 +41,7 @@
"semver": "7.7.1"
},
"devDependencies": {
"@verdaccio/types": "workspace:13.0.0-next-8.5",
"@verdaccio/types": "workspace:13.0.0-next-8.3",
"lodash": "4.17.21",
"typedoc": "0.23.25",
"typedoc-plugin-missing-exports": "latest"

View File

@@ -78,9 +78,6 @@ export const HTTP_STATUS = {
SERVICE_UNAVAILABLE: httpCodes.SERVICE_UNAVAILABLE,
LOOP_DETECTED: 508,
CANNOT_HANDLE: 590,
REQUEST_TIMEOUT: httpCodes.REQUEST_TIMEOUT, // 408
BAD_GATEWAY: httpCodes.BAD_GATEWAY, // 502
GATEWAY_TIMEOUT: httpCodes.GATEWAY_TIMEOUT, // 504
};
export const ERROR_CODE = {

View File

@@ -7,7 +7,7 @@ import * as searchUtils from './search-utils';
import * as streamUtils from './stream-utils';
import * as stringUtils from './string-utils';
import * as tarballUtils from './tarball-utils';
import * as validationUtils from './validation-utils';
import * as validatioUtils from './validation-utils';
import * as warningUtils from './warning-utils';
export { VerdaccioError, API_ERROR, SUPPORT_ERRORS, APP_ERROR } from './error-utils';
@@ -28,12 +28,16 @@ export {
PLUGIN_CATEGORY,
HtpasswdHashAlgorithm,
} from './constants';
export * from './plugin-utils';
const validationUtils = validatioUtils;
export {
fileUtils,
pkgUtils,
searchUtils,
streamUtils,
errorUtils,
// TODO: remove this typo
validatioUtils,
validationUtils,
stringUtils,
constants,

View File

@@ -98,7 +98,7 @@ export interface Storage<PluginConfig> extends Plugin<PluginConfig> {
*
* ```ts
* import express, { Request, Response } from 'express';
*
*
* class Middleware extends Plugin {
* // instances of auth and storage are injected
* register_middlewares(app, auth, storage) {
@@ -119,7 +119,10 @@ export interface ExpressMiddleware<PluginConfig, Storage, Auth> extends Plugin<P
// --- AUTH PLUGIN ---
export type AuthCallback = (error: VerdaccioError | null, groups?: string[] | false) => void;
export type AuthCallback = (
error: VerdaccioError | null,
user: string[] | false | undefined
) => void;
export type AuthAccessCallback = (error: VerdaccioError | null, access?: boolean) => void;
export type AuthUserCallback = (error: VerdaccioError | null, access?: boolean | string) => void;
@@ -147,7 +150,7 @@ export interface Auth<T> extends Plugin<T> {
return done(errorUtils.getUnauthorized(API_ERROR.BAD_USERNAME_PASSWORD));
}
// always return an array of users
return done(null, [user]);
return done(null, [user]);
* }
* ```
*/
@@ -161,7 +164,7 @@ export interface Auth<T> extends Plugin<T> {
return done(errorUtils.getUnauthorized(API_ERROR.BAD_USERNAME_PASSWORD));
}
// return boolean
return done(null, true);
return done(null, true);
* }
* ```
*/

View File

@@ -1,6 +0,0 @@
/*
!/bin/**/*
!/build/**/*
!index.js
!LICENSE
!README.md

View File

@@ -1,12 +1,5 @@
# Change Log
## 13.0.0-next-8.3
### Patch Changes
- e4a1539: chore: package.json maintenance
- 0607e80: chore: update readme badges and license files
## 13.0.0-next-8.2
### Patch Changes

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2025 Verdaccio contributors
Copyright (c) 2019 Verdaccio
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -1,80 +1,20 @@
# @verdaccio/file-locking - Verdaccio File Locking Library
## Deprecated repository
[![Verdaccio Home](https://img.shields.io/badge/Homepage-Verdaccio-405236?style=flat)](https://verdaccio.org)
[![MIT License](https://img.shields.io/github/license/verdaccio/verdaccio?label=License&color=405236)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
[![Verdaccio Latest](https://img.shields.io/npm/v/verdaccio?label=Latest%20Version&color=405236)](https://github.com/verdaccio/verdaccio)
[![This Package Latest](https://img.shields.io/npm/v/@verdaccio/file-locking?label=@verdaccio/file-locking&color=405236)](https://npmjs.com/package/@verdaccio/file-locking)
**This repository has been moved to a monorepo you can find in [verdaccio/monorepo](https://github.com/verdaccio/monorepo). This package is located in [`core/file-locking` folder](https://github.com/verdaccio/monorepo/tree/master/core/file-locking)**
[![Documentation](https://img.shields.io/badge/Help-Verdaccio?style=flat&logo=Verdaccio&label=Verdaccio&color=cd4000)](https://verdaccio.org/docs)
[![Discord](https://img.shields.io/badge/Chat-Discord?style=flat&logo=Discord&label=Discord&color=cd4000)](https://discord.com/channels/388674437219745793)
[![Bluesky](https://img.shields.io/badge/Follow-Bluesky?style=flat&logo=Bluesky&label=Bluesky&color=cd4000)](https://bsky.app/profile/verdaccio.org)
[![Backers](https://img.shields.io/opencollective/backers/verdaccio?style=flat&logo=opencollective&label=Join%20Backers&color=cd4000)](https://opencollective.com/verdaccio/contribute)
[![Sponsors](https://img.shields.io/opencollective/sponsors/verdaccio?style=flat&logo=opencollective&label=Sponsor%20Us&color=cd4000)](https://opencollective.com/verdaccio/contribute)
---
[![Verdaccio Downloads](https://img.shields.io/npm/dm/verdaccio?style=flat&logo=npm&label=Npm%20Downloads&color=lightgrey)](https://www.npmjs.com/package/verdaccio)
[![Docker Pulls](https://img.shields.io/docker/pulls/verdaccio/verdaccio?style=flat&logo=docker&label=Docker%20Pulls&color=lightgrey)](https://hub.docker.com/r/verdaccio/verdaccio)
[![GitHub Stars](https://img.shields.io/github/stars/verdaccio?style=flat&logo=github&label=GitHub%20Stars%20%E2%AD%90&color=lightgrey)](https://github.com/verdaccio/verdaccio/stargazers)
# File Locking
## Donations
This an utility to lock and unlock files
Verdaccio is run by **volunteers**; nobody is working full-time on it. If you find this project to be useful and would like to support its development, consider making a donation - **your logo might end up in this readme.** 😉
[![verdaccio (latest)](https://img.shields.io/npm/v/@verdaccio/file-locking/latest.svg)](https://www.npmjs.com/package/verdaccio)
[![docker pulls](https://img.shields.io/docker/pulls/verdaccio/verdaccio.svg?maxAge=43200)](https://verdaccio.org/docs/en/docker.html)
[![backers](https://opencollective.com/verdaccio/tiers/backer/badge.svg?label=Backer&color=brightgreen)](https://opencollective.com/verdaccio)
[![stackshare](https://img.shields.io/badge/Follow%20on-StackShare-blue.svg?logo=stackshare&style=flat)](https://stackshare.io/verdaccio)
[![discord](https://img.shields.io/discord/388674437219745793.svg)](http://chat.verdaccio.org/)
[![node](https://img.shields.io/node/v/@verdaccio/file-locking/latest.svg)](https://www.npmjs.com/package/verdaccio)
![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/verdaccio/localized.svg)](https://crowdin.com/project/verdaccio)
**[Donate](https://opencollective.com/verdaccio)** 💵👍🏻 starting from _\$1/month_ or just one single contribution.
## Report a vulnerability
If you want to report a security vulnerability, please follow the steps which we have defined for you in our [security policy](https://github.com/verdaccio/verdaccio/security/policy).
## Open Collective Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio/contribute)]
[![sponsor](https://opencollective.com/verdaccio/sponsor/0/avatar.svg)](https://opencollective.com/verdaccio/sponsor/0/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/1/avatar.svg)](https://opencollective.com/verdaccio/sponsor/1/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/2/avatar.svg)](https://opencollective.com/verdaccio/sponsor/2/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/3/avatar.svg)](https://opencollective.com/verdaccio/sponsor/3/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/4/avatar.svg)](https://opencollective.com/verdaccio/sponsor/4/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/5/avatar.svg)](https://opencollective.com/verdaccio/sponsor/5/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/6/avatar.svg)](https://opencollective.com/verdaccio/sponsor/6/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/7/avatar.svg)](https://opencollective.com/verdaccio/sponsor/7/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/8/avatar.svg)](https://opencollective.com/verdaccio/sponsor/8/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/9/avatar.svg)](https://opencollective.com/verdaccio/sponsor/9/website)
## Open Collective Backers
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/verdaccio/contribute)]
[![backers](https://opencollective.com/verdaccio/backers.svg?width=890)](https://opencollective.com/verdaccio/contributes)
## Special Thanks
Thanks to the following companies to help us to achieve our goals providing free open source licenses.
[![jetbrains](https://github.com/verdaccio/verdaccio/blob/master/assets/thanks/jetbrains/logo.jpg?raw=true)](https://www.jetbrains.com/)
[![crowdin](https://github.com/verdaccio/verdaccio/blob/master/assets/thanks/crowdin/logo.png?raw=true)](https://crowdin.com/)
## Contributors
This project exists thanks to all the people who contribute. [[Contribute](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md)].
[![contributors](https://opencollective.com/verdaccio/contributors.svg?width=890&button=true)](https://github.com/verdaccio/verdaccio/graphs/contributors)
## FAQ / Contact / Troubleshoot
If you have any issue you can try the following options. Do not hesitate to ask or check our issues database. Perhaps someone has asked already what you are looking for.
- [Blog](https://verdaccio.org/blog/)
- [Donations](https://opencollective.com/verdaccio)
- [Reporting an issue](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md#reporting-a-bug)
- [Running discussions](https://github.com/orgs/verdaccio/discussions)
- [Chat](https://discord.com/channels/388674437219745793)
- [Logos](https://verdaccio.org/docs/logo)
- [Docker Examples](https://github.com/verdaccio/verdaccio/tree/master/docker-examples)
- [FAQ](https://github.com/verdaccio/verdaccio/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Aquestion%20)
## License
Verdaccio is [MIT licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
The Verdaccio documentation and logos (excluding /thanks, e.g., .md, .png, .sketch files within the /assets folder) are
[Creative Commons licensed](https://creativecommons.org/licenses/by/4.0/).
[![Github](https://img.shields.io/github/stars/verdaccio/verdaccio.svg?style=social&label=Stars)](https://github.com/verdaccio/verdaccio/stargazers)

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/file-locking",
"version": "13.0.0-next-8.3",
"version": "13.0.0-next-8.2",
"description": "Verdaccio File Locking Library",
"keywords": [
"private",
@@ -39,7 +39,7 @@
"lockfile": "1.0.4"
},
"devDependencies": {
"@verdaccio/types": "workspace:13.0.0-next-8.5"
"@verdaccio/types": "workspace:13.0.0-next-8.3"
},
"scripts": {
"clean": "rimraf ./build",

View File

@@ -1,6 +1 @@
/*
!/bin/**/*
!/build/**/*
!index.js
!LICENSE
!README.md
src/*

View File

@@ -1,12 +1,5 @@
# @verdaccio/ui-i18n
## 8.0.0-next-8.12
### Patch Changes
- e4a1539: chore: package.json maintenance
- dbe6a76: fix(i18n): avoid fallback for en-us
## 8.0.0-next-8.11
### Patch Changes

View File

@@ -1,21 +0,0 @@
MIT License
Copyright (c) 2025 Verdaccio contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,80 +0,0 @@
# @verdaccio/ui-i18n - Verdaccio UI Internationalization (i18n)
[![Verdaccio Home](https://img.shields.io/badge/Homepage-Verdaccio-405236?style=flat)](https://verdaccio.org)
[![MIT License](https://img.shields.io/github/license/verdaccio/verdaccio?label=License&color=405236)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
[![Verdaccio Latest](https://img.shields.io/npm/v/verdaccio?label=Latest%20Version&color=405236)](https://github.com/verdaccio/verdaccio)
[![This Package Latest](https://img.shields.io/npm/v/@verdaccio/ui-i18n?label=@verdaccio/ui-i18n&color=405236)](https://npmjs.com/package/@verdaccio/ui-i18n)
[![Documentation](https://img.shields.io/badge/Help-Verdaccio?style=flat&logo=Verdaccio&label=Verdaccio&color=cd4000)](https://verdaccio.org/docs)
[![Discord](https://img.shields.io/badge/Chat-Discord?style=flat&logo=Discord&label=Discord&color=cd4000)](https://discord.com/channels/388674437219745793)
[![Bluesky](https://img.shields.io/badge/Follow-Bluesky?style=flat&logo=Bluesky&label=Bluesky&color=cd4000)](https://bsky.app/profile/verdaccio.org)
[![Backers](https://img.shields.io/opencollective/backers/verdaccio?style=flat&logo=opencollective&label=Join%20Backers&color=cd4000)](https://opencollective.com/verdaccio/contribute)
[![Sponsors](https://img.shields.io/opencollective/sponsors/verdaccio?style=flat&logo=opencollective&label=Sponsor%20Us&color=cd4000)](https://opencollective.com/verdaccio/contribute)
[![Verdaccio Downloads](https://img.shields.io/npm/dm/verdaccio?style=flat&logo=npm&label=Npm%20Downloads&color=lightgrey)](https://www.npmjs.com/package/verdaccio)
[![Docker Pulls](https://img.shields.io/docker/pulls/verdaccio/verdaccio?style=flat&logo=docker&label=Docker%20Pulls&color=lightgrey)](https://hub.docker.com/r/verdaccio/verdaccio)
[![GitHub Stars](https://img.shields.io/github/stars/verdaccio?style=flat&logo=github&label=GitHub%20Stars%20%E2%AD%90&color=lightgrey)](https://github.com/verdaccio/verdaccio/stargazers)
## Donations
Verdaccio is run by **volunteers**; nobody is working full-time on it. If you find this project to be useful and would like to support its development, consider making a donation - **your logo might end up in this readme.** 😉
**[Donate](https://opencollective.com/verdaccio)** 💵👍🏻 starting from _\$1/month_ or just one single contribution.
## Report a vulnerability
If you want to report a security vulnerability, please follow the steps which we have defined for you in our [security policy](https://github.com/verdaccio/verdaccio/security/policy).
## Open Collective Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio/contribute)]
[![sponsor](https://opencollective.com/verdaccio/sponsor/0/avatar.svg)](https://opencollective.com/verdaccio/sponsor/0/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/1/avatar.svg)](https://opencollective.com/verdaccio/sponsor/1/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/2/avatar.svg)](https://opencollective.com/verdaccio/sponsor/2/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/3/avatar.svg)](https://opencollective.com/verdaccio/sponsor/3/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/4/avatar.svg)](https://opencollective.com/verdaccio/sponsor/4/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/5/avatar.svg)](https://opencollective.com/verdaccio/sponsor/5/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/6/avatar.svg)](https://opencollective.com/verdaccio/sponsor/6/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/7/avatar.svg)](https://opencollective.com/verdaccio/sponsor/7/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/8/avatar.svg)](https://opencollective.com/verdaccio/sponsor/8/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/9/avatar.svg)](https://opencollective.com/verdaccio/sponsor/9/website)
## Open Collective Backers
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/verdaccio/contribute)]
[![backers](https://opencollective.com/verdaccio/backers.svg?width=890)](https://opencollective.com/verdaccio/contributes)
## Special Thanks
Thanks to the following companies to help us to achieve our goals providing free open source licenses.
[![jetbrains](https://github.com/verdaccio/verdaccio/blob/master/assets/thanks/jetbrains/logo.jpg?raw=true)](https://www.jetbrains.com/)
[![crowdin](https://github.com/verdaccio/verdaccio/blob/master/assets/thanks/crowdin/logo.png?raw=true)](https://crowdin.com/)
## Contributors
This project exists thanks to all the people who contribute. [[Contribute](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md)].
[![contributors](https://opencollective.com/verdaccio/contributors.svg?width=890&button=true)](https://github.com/verdaccio/verdaccio/graphs/contributors)
## FAQ / Contact / Troubleshoot
If you have any issue you can try the following options. Do not hesitate to ask or check our issues database. Perhaps someone has asked already what you are looking for.
- [Blog](https://verdaccio.org/blog/)
- [Donations](https://opencollective.com/verdaccio)
- [Reporting an issue](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md#reporting-a-bug)
- [Running discussions](https://github.com/orgs/verdaccio/discussions)
- [Chat](https://discord.com/channels/388674437219745793)
- [Logos](https://verdaccio.org/docs/logo)
- [Docker Examples](https://github.com/verdaccio/verdaccio/tree/master/docker-examples)
- [FAQ](https://github.com/verdaccio/verdaccio/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Aquestion%20)
## License
Verdaccio is [MIT licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
The Verdaccio documentation and logos (excluding /thanks, e.g., .md, .png, .sketch files within the /assets folder) are
[Creative Commons licensed](https://creativecommons.org/licenses/by/4.0/).

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/ui-i18n",
"version": "8.0.0-next-8.12",
"version": "8.0.0-next-8.11",
"description": "Verdaccio UI Internationalization (i18n)",
"keywords": [
"private",

View File

@@ -1 +1 @@
export { loadTranslationFile as default, DEFAULT_LANGUAGE } from './loadTranslationFile';
export { loadTranslationFile as default } from './loadTranslationFile';

View File

@@ -1,14 +1,9 @@
export const DEFAULT_LANGUAGE = 'en-US';
/**
* In development mode translations files might be not available,
* crowdin translations are only available in CI.
*/
export function loadTranslationFile(lng) {
try {
// avoid fallback and console warning
if (lng === DEFAULT_LANGUAGE) {
return require(`./crowdin/ui.json`);
}
return require(`./download_translations/${lng}/ui.json`);
} catch {
// eslint-disable-next-line no-console

View File

@@ -1,6 +0,0 @@
/*
!/bin/**/*
!/build/**/*
!index.js
!LICENSE
!README.md

View File

@@ -1,36 +1,5 @@
# Change Log
## 13.0.0-next-8.15
### Patch Changes
- @verdaccio/core@8.0.0-next-8.15
- @verdaccio/url@13.0.0-next-8.15
- @verdaccio/utils@8.1.0-next-8.15
## 13.0.0-next-8.14
### Patch Changes
- Updated dependencies [b9fea38]
- @verdaccio/core@8.0.0-next-8.14
- @verdaccio/utils@8.1.0-next-8.14
- @verdaccio/url@13.0.0-next-8.14
## 13.0.0-next-8.13
### Patch Changes
- e4a1539: chore: package.json maintenance
- 0607e80: chore: update readme badges and license files
- Updated dependencies [b3fa5df]
- Updated dependencies [2eb8cc2]
- Updated dependencies [e4a1539]
- Updated dependencies [0607e80]
- @verdaccio/utils@8.1.0-next-8.13
- @verdaccio/core@8.0.0-next-8.13
- @verdaccio/url@13.0.0-next-8.13
## 13.0.0-next-8.12
### Patch Changes

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2025 Verdaccio contributors
Copyright (c) 2019 Verdaccio
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -1,80 +1,19 @@
# @verdaccio/tarball - Verdaccio Tarball Utilities
# Streams
[![Verdaccio Home](https://img.shields.io/badge/Homepage-Verdaccio-405236?style=flat)](https://verdaccio.org)
[![MIT License](https://img.shields.io/github/license/verdaccio/verdaccio?label=License&color=405236)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
[![Verdaccio Latest](https://img.shields.io/npm/v/verdaccio?label=Latest%20Version&color=405236)](https://github.com/verdaccio/verdaccio)
[![This Package Latest](https://img.shields.io/npm/v/@verdaccio/tarball?label=@verdaccio/tarball&color=405236)](https://npmjs.com/package/@verdaccio/tarball)
[![CircleCI](https://circleci.com/gh/verdaccio/streams.svg?style=svg)](https://circleci.com/gh/ayusharma/@verdaccio/streams)
[![codecov](https://codecov.io/gh/verdaccio/streams/branch/master/graph/badge.svg)](https://codecov.io/gh/verdaccio/streams)
[![verdaccio (latest)](https://img.shields.io/npm/v/@verdaccio/streams/latest.svg)](https://www.npmjs.com/package/@verdaccio/streams)
[![backers](https://opencollective.com/verdaccio/tiers/backer/badge.svg?label=Backer&color=brightgreen)](https://opencollective.com/verdaccio)
[![discord](https://img.shields.io/discord/388674437219745793.svg)](http://chat.verdaccio.org/)
![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)
[![node](https://img.shields.io/node/v/@verdaccio/streams/latest.svg)](https://www.npmjs.com/package/@verdaccio/streams)
[![Documentation](https://img.shields.io/badge/Help-Verdaccio?style=flat&logo=Verdaccio&label=Verdaccio&color=cd4000)](https://verdaccio.org/docs)
[![Discord](https://img.shields.io/badge/Chat-Discord?style=flat&logo=Discord&label=Discord&color=cd4000)](https://discord.com/channels/388674437219745793)
[![Bluesky](https://img.shields.io/badge/Follow-Bluesky?style=flat&logo=Bluesky&label=Bluesky&color=cd4000)](https://bsky.app/profile/verdaccio.org)
[![Backers](https://img.shields.io/opencollective/backers/verdaccio?style=flat&logo=opencollective&label=Join%20Backers&color=cd4000)](https://opencollective.com/verdaccio/contribute)
[![Sponsors](https://img.shields.io/opencollective/sponsors/verdaccio?style=flat&logo=opencollective&label=Sponsor%20Us&color=cd4000)](https://opencollective.com/verdaccio/contribute)
This project provides an extension of `PassThrough` stream.
[![Verdaccio Downloads](https://img.shields.io/npm/dm/verdaccio?style=flat&logo=npm&label=Npm%20Downloads&color=lightgrey)](https://www.npmjs.com/package/verdaccio)
[![Docker Pulls](https://img.shields.io/docker/pulls/verdaccio/verdaccio?style=flat&logo=docker&label=Docker%20Pulls&color=lightgrey)](https://hub.docker.com/r/verdaccio/verdaccio)
[![GitHub Stars](https://img.shields.io/github/stars/verdaccio?style=flat&logo=github&label=GitHub%20Stars%20%E2%AD%90&color=lightgrey)](https://github.com/verdaccio/verdaccio/stargazers)
## Detail
## Donations
Verdaccio is run by **volunteers**; nobody is working full-time on it. If you find this project to be useful and would like to support its development, consider making a donation - **your logo might end up in this readme.** 😉
**[Donate](https://opencollective.com/verdaccio)** 💵👍🏻 starting from _\$1/month_ or just one single contribution.
## Report a vulnerability
If you want to report a security vulnerability, please follow the steps which we have defined for you in our [security policy](https://github.com/verdaccio/verdaccio/security/policy).
## Open Collective Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio/contribute)]
[![sponsor](https://opencollective.com/verdaccio/sponsor/0/avatar.svg)](https://opencollective.com/verdaccio/sponsor/0/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/1/avatar.svg)](https://opencollective.com/verdaccio/sponsor/1/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/2/avatar.svg)](https://opencollective.com/verdaccio/sponsor/2/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/3/avatar.svg)](https://opencollective.com/verdaccio/sponsor/3/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/4/avatar.svg)](https://opencollective.com/verdaccio/sponsor/4/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/5/avatar.svg)](https://opencollective.com/verdaccio/sponsor/5/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/6/avatar.svg)](https://opencollective.com/verdaccio/sponsor/6/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/7/avatar.svg)](https://opencollective.com/verdaccio/sponsor/7/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/8/avatar.svg)](https://opencollective.com/verdaccio/sponsor/8/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/9/avatar.svg)](https://opencollective.com/verdaccio/sponsor/9/website)
## Open Collective Backers
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/verdaccio/contribute)]
[![backers](https://opencollective.com/verdaccio/backers.svg?width=890)](https://opencollective.com/verdaccio/contributes)
## Special Thanks
Thanks to the following companies to help us to achieve our goals providing free open source licenses.
[![jetbrains](https://github.com/verdaccio/verdaccio/blob/master/assets/thanks/jetbrains/logo.jpg?raw=true)](https://www.jetbrains.com/)
[![crowdin](https://github.com/verdaccio/verdaccio/blob/master/assets/thanks/crowdin/logo.png?raw=true)](https://crowdin.com/)
## Contributors
This project exists thanks to all the people who contribute. [[Contribute](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md)].
[![contributors](https://opencollective.com/verdaccio/contributors.svg?width=890&button=true)](https://github.com/verdaccio/verdaccio/graphs/contributors)
## FAQ / Contact / Troubleshoot
If you have any issue you can try the following options. Do not hesitate to ask or check our issues database. Perhaps someone has asked already what you are looking for.
- [Blog](https://verdaccio.org/blog/)
- [Donations](https://opencollective.com/verdaccio)
- [Reporting an issue](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md#reporting-a-bug)
- [Running discussions](https://github.com/orgs/verdaccio/discussions)
- [Chat](https://discord.com/channels/388674437219745793)
- [Logos](https://verdaccio.org/docs/logo)
- [Docker Examples](https://github.com/verdaccio/verdaccio/tree/master/docker-examples)
- [FAQ](https://github.com/verdaccio/verdaccio/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Aquestion%20)
It provides 2 additional methods `abort()` and `done()`. Those implementations are widely use in the verdaccio core for handle `tarballs`.
## License
Verdaccio is [MIT licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
The Verdaccio documentation and logos (excluding /thanks, e.g., .md, .png, .sketch files within the /assets folder) are
[Creative Commons licensed](https://creativecommons.org/licenses/by/4.0/).
MIT (http://www.opensource.org/licenses/mit-license.php)

Some files were not shown because too many files have changed in this diff Show More