Compare commits

...

43 Commits

Author SHA1 Message Date
Juan Picado
ac0fed3fa0 chore: update versions (next-8) (#5314)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-06 18:07:56 +02:00
renovate[bot]
f6c06fc982 fix(deps): update dependency dompurify to v3.2.6 (#5323)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-06 18:05:27 +02:00
Marc Bernard
d92ba65866 chore(proxy): update tests (#5320) 2025-07-06 17:44:08 +02:00
Juan Picado
6a4d6dddf7 feat: getListenAddress getConfigParsed methods (#5324) 2025-07-06 17:24:57 +02:00
Marc Bernard
73c0194091 chore(auth): typings (#5319) 2025-07-06 17:01:11 +02:00
verdacciobot
8a2bb51ba3 chore: updated static data 2025-07-03 00:17:00 +00:00
Marc Bernard
a1a73e9172 feat(logger): support redacting sensitive data (#5316)
* feat(logger): support redacting sensitive data

* Update config & docs
2025-06-30 06:47:51 +02:00
verdacciobot
6304965009 chore: updated static data 2025-06-30 00:17:29 +00:00
Marc Bernard
5fef0b629a chore(auth): multiple plugins test (#5312) 2025-06-29 12:00:34 +02:00
Marc Bernard
08e1b2137e chore(deps): built-in node imports (#5313) 2025-06-29 10:48:06 +02:00
Juan Picado
307736d7fe chore: update versions (next-8) (#5303)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-26 21:30:54 +02:00
Marc Bernard
6e404a0449 chore(deps): plugins audit, htpasswd, memory (#5293)
* chore(deps): plugins audit, htpasswd, memory

* chore(deps): plugins audit, htpasswd, memory

* node-fetch cjs

* Update pnpm-lock.yaml

---------

Co-authored-by: Juan Picado <juanpicado19@gmail.com>
2025-06-26 17:58:30 +02:00
Marc Bernard
0613d08adf fix: allow config changes in docker image (#5305) 2025-06-26 07:48:59 +02:00
verdacciobot
2027c8e844 chore: updated static data 2025-06-26 00:16:19 +00:00
Marc Bernard
1a3a0880ad chore(deps): verdaccio package (#5297) 2025-06-25 23:05:41 +02:00
Marc Bernard
15bd80bf8a chore(deps): express (#5296) 2025-06-25 22:09:38 +02:00
Marc Bernard
8bc332b77d chore(deps): web package (#5300) 2025-06-25 21:56:46 +02:00
Marc Bernard
3f71267963 chore(deps): storage (#5299)
* chore(deps): storage

* Update action.yml

* Update pnpm-lock.yaml

* Update action.yml

---------

Co-authored-by: Juan Picado <juanpicado19@gmail.com>
2025-06-25 21:35:06 +02:00
Marc Bernard
07a0ecbac6 chore(ui): update deps and storybook (#5302) 2025-06-25 20:37:40 +02:00
Marc Bernard
54b19060fe chore(deps): node-api, proxy, search, search-indexer (#5292) 2025-06-25 19:42:12 +02:00
Marc Bernard
da0692f9ff chore(deps): middleware (#5291)
* chore(deps): middleware

* Update pnpm-lock
2025-06-25 18:57:09 +02:00
Marc Bernard
95e6c8f9d6 chore(deps): hooks, loaders, logger (#5290) 2025-06-25 09:14:48 +02:00
Marc Bernard
93504313f2 chore(deps): clean up core modules (#5288)
* chore(deps): clean up core modules

* Express

* Update pnpm-lock
2025-06-25 08:23:43 +02:00
Marc Bernard
75a6b322d3 chore(deps): local-storage (#5295) 2025-06-25 07:25:25 +02:00
Marc Bernard
4e14aff33f chore(deps): signature, utils (#5298) 2025-06-24 22:04:25 +02:00
Marc Bernard
a91c5b8f06 chore(api): remove obsolete tests (#5307) 2025-06-23 21:10:53 +02:00
verdacciobot
d207057e4b chore: updated static data 2025-06-23 00:17:16 +00:00
Marc Bernard
9da53084be chore(deps): e2e-cli (#5301) 2025-06-21 20:36:16 +02:00
verdacciobot
c31ffad6af chore: updated static data 2025-06-19 00:17:04 +00:00
Juan Picado
5003aa7016 chore: update versions (next-8) (#5287)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-18 19:27:14 +02:00
Alan Agius
23296a2c66 fix: add @verdaccio/core as a dependency (#5286)
`@verdaccio/core` is needed as a runtime dependency. See: 31a18f8f61/packages/loaders/src/utils.ts (L3)

```
Error: Cannot find module '@verdaccio/core'
Require stack:
- /home/runner/.cache/bazel/_bazel_runner/f47b8283cc0f5922f9455b06771398a1/sandbox/processwrapper-sandbox/3053/execroot/_main/bazel-out/k8-fastbuild/bin/tests/legacy-cli/e2e.esbuild_node22_/e2e.esbuild_node22.runfiles/_main/node_modules/.aspect_rules_js/@verdaccio+loaders@8.0.0-next-8.7/node_modules/@verdaccio/loaders/build/plugin-async-loader.js
```
2025-06-18 18:07:54 +02:00
renovate[bot]
3eb48d6c70 fix(deps): update dependency usehooks-ts to v3.1.1 (#5282)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-17 21:45:13 +02:00
Juan Picado
f0501eea78 chore: update versions (next-8) (#5278)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-17 21:03:37 +02:00
Marc Bernard
d22ef4e61e fix: config web login default (#5280) 2025-06-17 20:03:49 +02:00
Alan Agius
96d2f0f24d fix(core): remove lodash from a dependency (#5277)
This removes the usage of `lodash`.
2025-06-16 20:45:16 +02:00
verdacciobot
0b66de1274 chore: updated static data 2025-06-16 00:17:11 +00:00
renovate[bot]
897ca09828 chore(deps): update dependency @crowdin/cli to v4.7.1 (#5274) 2025-06-15 00:08:40 +02:00
renovate[bot]
85bf8dc6d8 fix(deps): update dependency semver to v7.7.2 (#5272) 2025-06-14 20:29:09 +02:00
renovate[bot]
7fa42b5a4e chore(deps): update babel monorepo (#5273) 2025-06-14 20:07:18 +02:00
renovate[bot]
4ec28f20b3 fix(deps): update dependency debug to v4.4.1 (#5271) 2025-06-14 17:24:56 +02:00
renovate[bot]
003be2a561 fix(deps): update dependency marked to v15.0.12 (#5265)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-09 07:22:42 +02:00
verdacciobot
bd3d50b7c0 chore: updated static data 2025-06-09 00:17:08 +00:00
renovate[bot]
93348f0208 chore(deps): pin actions/checkout action to 11bd719 (#5248)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-07 10:26:07 +02:00
326 changed files with 7853 additions and 4674 deletions

View File

@@ -0,0 +1,21 @@
---
'docusaurus-plugin-contributors': patch
'generator-verdaccio-plugin': patch
'@verdaccio/logger-prettify': patch
'@verdaccio/local-scripts': patch
'@verdaccio/file-locking': patch
'@verdaccio/ui-theme': patch
'@verdaccio/server-fastify': patch
'@verdaccio/test-helper': patch
'@verdaccio/middleware': patch
'verdaccio': patch
'@verdaccio/node-api': patch
'@verdaccio/config': patch
'@verdaccio/hooks': patch
'@verdaccio/proxy': patch
'@verdaccio/store': patch
'@verdaccio/auth': patch
'@verdaccio/api': patch
---
chore(deps): built-in node imports

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/server': patch
---
chore(deps): express

View File

@@ -0,0 +1,7 @@
---
'verdaccio-htpasswd': patch
'verdaccio-memory': patch
'verdaccio-audit': patch
---
chore(deps): plugins audit, htpasswd, memory

View File

@@ -0,0 +1,7 @@
---
'@verdaccio/config': patch
'@verdaccio/logger-commons': patch
'@verdaccio/types': patch
---
feat(logger): support redacting sensitive data

View File

@@ -0,0 +1,6 @@
---
'@verdaccio/signature': patch
'@verdaccio/utils': patch
---
chore(deps): signature, utils

View File

@@ -0,0 +1,5 @@
---
'verdaccio': patch
---
chore(deps): verdaccio package

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/local-storage': patch
---
chore(deps): local-storage

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/loaders': patch
---
add `@verdaccio/core` as a dependency

View File

@@ -0,0 +1,7 @@
---
'@verdaccio/core': minor
'@verdaccio/node-api': minor
'@verdaccio/config': minor
---
feat: getListenAddress getConfigParsed methods

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/web': patch
---
chore(deps): web package

View File

@@ -74,14 +74,18 @@
"breezy-geckos-search",
"breezy-toys-judge",
"bright-bobcats-ring",
"bright-mugs-buy",
"brown-lions-talk",
"brown-planets-approve",
"calm-mangos-compare",
"chatty-apricots-report",
"clean-beds-wash",
"clean-dryers-hug",
"clean-rings-listen",
"clever-bees-happen",
"cool-balloons-search",
"cool-seals-watch",
"cuddly-paws-laugh",
"curly-mirrors-smile",
"curvy-rockets-camp",
"cyan-snakes-kiss",
@@ -93,13 +97,18 @@
"eleven-rocks-dream",
"few-beds-itch",
"few-ears-deny",
"few-poets-bathe",
"fifty-falcons-design",
"flat-rules-design",
"forty-hounds-matter",
"four-buttons-remember",
"fresh-owls-hunt",
"friendly-feet-sing",
"funny-fireants-tan",
"fuzzy-ears-yawn",
"gentle-stingrays-repeat",
"gold-files-speak",
"gold-parents-shave",
"gold-squids-watch",
"great-candles-hang",
"green-eagles-boil",
@@ -109,6 +118,7 @@
"hip-eggs-serve",
"hip-suns-jam",
"hot-crews-live",
"hungry-books-bathe",
"hungry-dolls-destroy",
"itchy-glasses-end",
"large-turkeys-change",
@@ -135,13 +145,18 @@
"purple-planes-do",
"quick-avocados-type",
"quick-seas-deny",
"rare-mirrors-notice",
"real-balloons-travel",
"real-seahorses-change",
"red-dolls-repair",
"rotten-bananas-attend",
"rotten-melons-notice",
"rotton-readers-shave",
"rude-birds-design",
"rude-socks-walk",
"serious-apes-rule",
"seven-peas-obey",
"seven-suits-kneel",
"sharp-queens-rhyme",
"shiny-buttons-laugh",
"short-mails-smoke",
@@ -150,24 +165,32 @@
"silent-tips-admire",
"silver-houses-remain",
"silver-insects-train",
"six-planes-appear",
"slow-cars-guess",
"smooth-games-share",
"soft-berries-fail",
"strange-pants-chew",
"stupid-camels-build",
"stupid-socks-grow",
"sweet-crabs-deliver",
"swift-knives-shop",
"swift-mangos-grab",
"swift-zebras-cheer",
"tame-hairs-drive",
"ten-jeans-approve",
"tender-buckets-smoke",
"thick-dolphins-rule",
"thick-insects-run",
"thirty-comics-trade",
"tidy-socks-battle",
"tricky-impalas-shake",
"tricky-kiwis-thank",
"tricky-knives-end",
"twelve-games-wonder",
"violet-baboons-beg",
"violet-bobcats-allow",
"violet-boxes-float",
"violet-poems-walk",
"weak-cherries-serve",
"wet-cats-behave",
"wicked-points-relate",

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/auth': patch
---
chore(auth): typings

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/web': patch
---
fix: config web login default

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/auth': patch
---
chore(auth): multiple plugins test

View File

@@ -0,0 +1,8 @@
---
'@verdaccio/file-locking': patch
'@verdaccio/tarball': patch
'@verdaccio/core': patch
'@verdaccio/url': patch
---
chore(deps): clean up core modules

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/proxy': patch
---
chore(proxy): update tests

View File

@@ -0,0 +1,8 @@
---
'@verdaccio/logger-prettify': patch
'@verdaccio/logger-commons': patch
'@verdaccio/loaders': patch
'@verdaccio/hooks': patch
---
chore(deps): hooks, loaders, logger

View File

@@ -0,0 +1,6 @@
---
'@verdaccio/ui-theme': patch
'@verdaccio/ui-components': patch
---
chore(ui): update deps and storybook

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/middleware': patch
---
chore(deps): middleware

View File

@@ -0,0 +1,8 @@
---
'@verdaccio/search-indexer': patch
'@verdaccio/node-api': patch
'@verdaccio/search': patch
'@verdaccio/proxy': patch
---
chore(deps): node-api, proxy, search, search-indexer

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/store': patch
---
chore(deps): storage

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/core': patch
---
fix(core): remove `lodash` from a dependency

View File

@@ -0,0 +1,18 @@
---
'@verdaccio/test-cli-commons': patch
'@verdaccio/e2e-cli-pnpm10': patch
'@verdaccio/e2e-cli-npm10': patch
'@verdaccio/e2e-cli-npm11': patch
'@verdaccio/e2e-cli-pnpm8': patch
'@verdaccio/e2e-cli-pnpm9': patch
'@verdaccio/e2e-cli-yarn1': patch
'@verdaccio/e2e-cli-yarn2': patch
'@verdaccio/e2e-cli-yarn3': patch
'@verdaccio/e2e-cli-yarn4': patch
'@verdaccio/e2e-cli-npm6': patch
'@verdaccio/e2e-cli-npm7': patch
'@verdaccio/e2e-cli-npm8': patch
'@verdaccio/e2e-cli-npm9': patch
---
chore(deps): e2e-cli

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/api': patch
---
chore(api): remove obsolete tests

View File

@@ -68,7 +68,7 @@ jobs:
fail-fast: true
matrix:
os: [ubuntu-latest]
node_version: [18, 20, 21, 22, 23, 24]
node_version: [18, 20, 22, 24]
name: ${{ matrix.os }} / Node ${{ matrix.node_version }}
runs-on: ${{ matrix.os }}
steps:

View File

@@ -16,7 +16,7 @@ jobs:
if: github.repository == 'verdaccio/verdaccio'
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Set up QEMU
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3

View File

@@ -45,8 +45,8 @@ ADD packages/config/src/conf/docker.yaml /verdaccio/conf/config.yaml
RUN adduser -u $VERDACCIO_USER_UID -S -D -h $VERDACCIO_APPDIR -g "$VERDACCIO_USER_NAME user" -s /sbin/nologin $VERDACCIO_USER_NAME && \
chmod -R +x $VERDACCIO_APPDIR/packages/verdaccio/bin $VERDACCIO_APPDIR/docker-bin && \
chown -R $VERDACCIO_USER_UID:root /verdaccio/storage && \
chmod -R g=u /verdaccio/storage /etc/passwd
chown -R $VERDACCIO_USER_UID:root /verdaccio/storage /verdaccio/conf && \
chmod -R g=u /verdaccio/storage /verdaccio/conf /etc/passwd
USER $VERDACCIO_USER_UID

View File

@@ -1,5 +1,11 @@
# @verdaccio/test-cli-commons
## 2.0.0-next-8.1
### Patch Changes
- 9da5308: chore(deps): e2e-cli
## 2.0.0-next-8.0
### Major Changes

View File

@@ -1,19 +1,19 @@
{
"private": true,
"name": "@verdaccio/test-cli-commons",
"version": "2.0.0-next-8.0",
"version": "2.0.0-next-8.1",
"main": "src/index.ts",
"devDependencies": {
"@verdaccio/config": "workspace:8.0.0-next-8.16",
"@verdaccio/core": "workspace:8.0.0-next-8.16",
"@verdaccio/types": "workspace:13.0.0-next-8.6",
"debug": "4.4.0",
"@verdaccio/config": "workspace:8.0.0-next-8.20",
"@verdaccio/core": "workspace:8.0.0-next-8.20",
"@verdaccio/types": "workspace:13.0.0-next-8.7",
"debug": "4.4.1",
"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.16"
"verdaccio": "workspace:8.0.0-next-8.20"
},
"scripts": {
"test": "echo no test",

View File

@@ -1,7 +1,6 @@
import { spawn } from 'child_process';
import { SpawnOptions } from 'child_process';
import buildDebug from 'debug';
import { createInterface } from 'readline';
import { SpawnOptions, spawn } from 'node:child_process';
import { createInterface } from 'node:readline';
const debug = buildDebug('verdaccio:e2e:process');
const debugRead = buildDebug('verdaccio:e2e:line');

View File

@@ -1,7 +1,7 @@
import buildDebug from 'debug';
import fs from 'fs-extra';
import { cp, readFile, writeFile } from 'fs/promises';
import { join } from 'path';
import { cp, readFile, writeFile } from 'node:fs/promises';
import { join } from 'node:path';
import { fileUtils } from '@verdaccio/core';

View File

@@ -1,7 +1,7 @@
import { cp, writeFile } from 'fs/promises';
import YAML from 'js-yaml';
import { join } from 'path';
import { URL } from 'url';
import { cp, writeFile } from 'node:fs/promises';
import { join } from 'node:path';
import { URL } from 'node:url';
import { Dependencies } from '@verdaccio/types';

View File

@@ -1,5 +1,12 @@
# @verdaccio/e2e-cli-npm-common
## 1.0.1-next-8.1
### Patch Changes
- Updated dependencies [9da5308]
- @verdaccio/test-cli-commons@2.0.0-next-8.1
## 1.0.1-next-8.0
### Patch Changes

View File

@@ -1,9 +1,9 @@
{
"private": true,
"name": "@verdaccio/e2e-cli-npm-common",
"version": "1.0.1-next-8.0",
"version": "1.0.1-next-8.1",
"dependencies": {
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.0"
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.1"
},
"scripts": {
"test": "echo no test"

View File

@@ -1,5 +1,14 @@
# @verdaccio/e2e-cli-npm9
## 1.0.2-next-8.2
### Patch Changes
- 9da5308: chore(deps): e2e-cli
- Updated dependencies [9da5308]
- @verdaccio/test-cli-commons@2.0.0-next-8.1
- @verdaccio/e2e-cli-npm-common@1.0.1-next-8.1
## 1.0.2-next-8.1
### Patch Changes

View File

@@ -1,11 +1,11 @@
{
"private": true,
"name": "@verdaccio/e2e-cli-npm10",
"version": "1.0.2-next-8.1",
"version": "1.0.2-next-8.2",
"dependencies": {
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.0",
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.1",
"@verdaccio/e2e-cli-npm-common": "workspace:*",
"npm": "10.9.0"
"npm": "10.9.2"
},
"scripts": {
"test": "vitest run --testTimeout 50000"

View File

@@ -1,5 +1,5 @@
import { SpawnOptions } from 'child_process';
import { join } from 'path';
import { SpawnOptions } from 'node:child_process';
import { join } from 'node:path';
import { exec } from '@verdaccio/test-cli-commons';
import { addRegistry } from '@verdaccio/test-cli-commons';

View File

@@ -1,5 +1,14 @@
# @verdaccio/e2e-cli-npm9
## 1.0.2-next-8.2
### Patch Changes
- 9da5308: chore(deps): e2e-cli
- Updated dependencies [9da5308]
- @verdaccio/test-cli-commons@2.0.0-next-8.1
- @verdaccio/e2e-cli-npm-common@1.0.1-next-8.1
## 1.0.2-next-8.1
### Patch Changes

View File

@@ -1,11 +1,11 @@
{
"private": true,
"name": "@verdaccio/e2e-cli-npm11",
"version": "1.0.2-next-8.1",
"version": "1.0.2-next-8.2",
"dependencies": {
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.0",
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.1",
"@verdaccio/e2e-cli-npm-common": "workspace:*",
"npm": "11.4.0"
"npm": "11.4.2"
},
"scripts": {
"test": "vitest run --testTimeout 50000"

View File

@@ -1,5 +1,5 @@
import { SpawnOptions } from 'child_process';
import { join } from 'path';
import { SpawnOptions } from 'node:child_process';
import { join } from 'node:path';
import { exec } from '@verdaccio/test-cli-commons';
import { addRegistry } from '@verdaccio/test-cli-commons';

View File

@@ -1,5 +1,14 @@
# @verdaccio/e2e-cli-npm6
## 1.0.2-next-8.2
### Patch Changes
- 9da5308: chore(deps): e2e-cli
- Updated dependencies [9da5308]
- @verdaccio/test-cli-commons@2.0.0-next-8.1
- @verdaccio/e2e-cli-npm-common@1.0.1-next-8.1
## 1.0.2-next-8.1
### Patch Changes

View File

@@ -1,9 +1,9 @@
{
"private": true,
"name": "@verdaccio/e2e-cli-npm6",
"version": "1.0.2-next-8.1",
"version": "1.0.2-next-8.2",
"dependencies": {
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.0",
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.1",
"@verdaccio/e2e-cli-npm-common": "workspace:*",
"npm": "6.14.18"
},

View File

@@ -1,5 +1,5 @@
import { SpawnOptions } from 'child_process';
import { join } from 'path';
import { SpawnOptions } from 'node:child_process';
import { join } from 'node:path';
import { exec } from '@verdaccio/test-cli-commons';

View File

@@ -1,5 +1,14 @@
# @verdaccio/e2e-cli-npm7
## 1.0.2-next-8.2
### Patch Changes
- 9da5308: chore(deps): e2e-cli
- Updated dependencies [9da5308]
- @verdaccio/test-cli-commons@2.0.0-next-8.1
- @verdaccio/e2e-cli-npm-common@1.0.1-next-8.1
## 1.0.2-next-8.1
### Patch Changes

View File

@@ -1,9 +1,9 @@
{
"private": true,
"name": "@verdaccio/e2e-cli-npm7",
"version": "1.0.2-next-8.1",
"version": "1.0.2-next-8.2",
"dependencies": {
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.0",
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.1",
"@verdaccio/e2e-cli-npm-common": "workspace:*",
"npm": "7.24.2"
},

View File

@@ -1,5 +1,5 @@
import { SpawnOptions } from 'child_process';
import { join } from 'path';
import { SpawnOptions } from 'node:child_process';
import { join } from 'node:path';
import { exec } from '@verdaccio/test-cli-commons';

View File

@@ -1,5 +1,14 @@
# @verdaccio/e2e-cli-npm8
## 1.0.2-next-8.2
### Patch Changes
- 9da5308: chore(deps): e2e-cli
- Updated dependencies [9da5308]
- @verdaccio/test-cli-commons@2.0.0-next-8.1
- @verdaccio/e2e-cli-npm-common@1.0.1-next-8.1
## 1.0.2-next-8.1
### Patch Changes

View File

@@ -1,9 +1,9 @@
{
"private": true,
"name": "@verdaccio/e2e-cli-npm8",
"version": "1.0.2-next-8.1",
"version": "1.0.2-next-8.2",
"dependencies": {
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.0",
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.1",
"@verdaccio/e2e-cli-npm-common": "workspace:*",
"npm": "8.19.4"
},

View File

@@ -1,5 +1,5 @@
import { SpawnOptions } from 'child_process';
import { join } from 'path';
import { SpawnOptions } from 'node:child_process';
import { join } from 'node:path';
import { exec } from '@verdaccio/test-cli-commons';

View File

@@ -1,5 +1,14 @@
# @verdaccio/e2e-cli-npm9
## 1.0.2-next-8.2
### Patch Changes
- 9da5308: chore(deps): e2e-cli
- Updated dependencies [9da5308]
- @verdaccio/test-cli-commons@2.0.0-next-8.1
- @verdaccio/e2e-cli-npm-common@1.0.1-next-8.1
## 1.0.2-next-8.1
### Patch Changes

View File

@@ -1,11 +1,11 @@
{
"private": true,
"name": "@verdaccio/e2e-cli-npm9",
"version": "1.0.2-next-8.1",
"version": "1.0.2-next-8.2",
"dependencies": {
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.0",
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.1",
"@verdaccio/e2e-cli-npm-common": "workspace:*",
"npm": "9.9.3"
"npm": "9.9.4"
},
"scripts": {
"test": "vitest run --testTimeout 50000"

View File

@@ -1,5 +1,5 @@
import { SpawnOptions } from 'child_process';
import { join } from 'path';
import { SpawnOptions } from 'node:child_process';
import { join } from 'node:path';
import { exec } from '@verdaccio/test-cli-commons';
import { addRegistry } from '@verdaccio/test-cli-commons';

View File

@@ -1,5 +1,12 @@
# @verdaccio/e2e-cli-pnpm9
## 1.0.2-next-8.1
### Patch Changes
- Updated dependencies [9da5308]
- @verdaccio/test-cli-commons@2.0.0-next-8.1
## 1.0.2-next-8.0
### Patch Changes

View File

@@ -1,10 +1,10 @@
{
"private": true,
"name": "@verdaccio/e2e-cli-pnpm-common",
"version": "1.0.2-next-8.0",
"version": "1.0.2-next-8.1",
"dependencies": {
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.0",
"pnpm": "9.0.0-alpha.10"
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.1",
"pnpm": "10.5.2"
},
"main": "index.ts",
"scripts": {

View File

@@ -1,5 +1,14 @@
# @verdaccio/e2e-cli-pnpm9
## 1.0.1-next-8.0
### Patch Changes
- 9da5308: chore(deps): e2e-cli
- Updated dependencies [9da5308]
- @verdaccio/test-cli-commons@2.0.0-next-8.1
- @verdaccio/e2e-cli-pnpm-common@1.0.2-next-8.1
## 1.0.2-next-8.0
### Patch Changes

View File

@@ -1,11 +1,11 @@
{
"private": true,
"name": "@verdaccio/e2e-cli-pnpm10",
"version": "1.0.0",
"version": "1.0.1-next-8.0",
"dependencies": {
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.0",
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.1",
"@verdaccio/e2e-cli-pnpm-common": "workspace:*",
"pnpm": "10.0.0-alpha.2"
"pnpm": "10.12.1"
},
"scripts": {
"test": "vitest run --testTimeout 50000"

View File

@@ -1,5 +1,5 @@
import { SpawnOptions } from 'child_process';
import { join } from 'path';
import { SpawnOptions } from 'node:child_process';
import { join } from 'node:path';
import { exec } from '@verdaccio/test-cli-commons';

View File

@@ -1,5 +1,14 @@
# @verdaccio/e2e-cli-pnpm7
## 1.0.2-next-8.1
### Patch Changes
- 9da5308: chore(deps): e2e-cli
- Updated dependencies [9da5308]
- @verdaccio/test-cli-commons@2.0.0-next-8.1
- @verdaccio/e2e-cli-pnpm-common@1.0.2-next-8.1
## 1.0.2-next-8.0
### Patch Changes

View File

@@ -1,9 +1,9 @@
{
"private": true,
"name": "@verdaccio/e2e-cli-pnpm8",
"version": "1.0.2-next-8.0",
"version": "1.0.2-next-8.1",
"dependencies": {
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.0",
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.1",
"@verdaccio/e2e-cli-pnpm-common": "workspace:*",
"pnpm": "8.15.9"
},

View File

@@ -1,5 +1,5 @@
import { SpawnOptions } from 'child_process';
import { join } from 'path';
import { SpawnOptions } from 'node:child_process';
import { join } from 'node:path';
import { exec } from '@verdaccio/test-cli-commons';

View File

@@ -1,5 +1,14 @@
# @verdaccio/e2e-cli-pnpm9
## 1.0.2-next-8.1
### Patch Changes
- 9da5308: chore(deps): e2e-cli
- Updated dependencies [9da5308]
- @verdaccio/test-cli-commons@2.0.0-next-8.1
- @verdaccio/e2e-cli-pnpm-common@1.0.2-next-8.1
## 1.0.2-next-8.0
### Patch Changes

View File

@@ -1,11 +1,11 @@
{
"private": true,
"name": "@verdaccio/e2e-cli-pnpm9",
"version": "1.0.2-next-8.0",
"version": "1.0.2-next-8.1",
"dependencies": {
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.0",
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.1",
"@verdaccio/e2e-cli-pnpm-common": "workspace:*",
"pnpm": "9.13.2"
"pnpm": "9.15.9"
},
"scripts": {
"test": "vitest run --testTimeout 50000"

View File

@@ -1,5 +1,5 @@
import { SpawnOptions } from 'child_process';
import { join } from 'path';
import { SpawnOptions } from 'node:child_process';
import { join } from 'node:path';
import { exec } from '@verdaccio/test-cli-commons';

View File

@@ -1,5 +1,13 @@
# @verdaccio/e2e-cli-yarn1
## 1.0.2-next-8.1
### Patch Changes
- 9da5308: chore(deps): e2e-cli
- Updated dependencies [9da5308]
- @verdaccio/test-cli-commons@2.0.0-next-8.1
## 1.0.2-next-8.0
### Patch Changes

View File

@@ -1,9 +1,9 @@
{
"private": true,
"name": "@verdaccio/e2e-cli-yarn1",
"version": "1.0.2-next-8.0",
"version": "1.0.2-next-8.1",
"dependencies": {
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.0",
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.1",
"yarn": "1.22.22"
},
"scripts": {

View File

@@ -1,5 +1,5 @@
import { SpawnOptions } from 'child_process';
import { join } from 'path';
import { SpawnOptions } from 'node:child_process';
import { join } from 'node:path';
import { exec } from '@verdaccio/test-cli-commons';

View File

@@ -1,5 +1,13 @@
# @verdaccio/e2e-cli-yarn2
## 1.0.2-next-8.1
### Patch Changes
- 9da5308: chore(deps): e2e-cli
- Updated dependencies [9da5308]
- @verdaccio/test-cli-commons@2.0.0-next-8.1
## 1.0.2-next-8.0
### Patch Changes

View File

@@ -1,9 +1,9 @@
{
"private": true,
"name": "@verdaccio/e2e-cli-yarn2",
"version": "1.0.2-next-8.0",
"version": "1.0.2-next-8.1",
"dependencies": {
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.0",
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.1",
"@yarnpkg/cli-dist": "2.4.2"
},
"scripts": {

View File

@@ -1,4 +1,4 @@
import { join } from 'path';
import { join } from 'node:path';
import { exec } from '@verdaccio/test-cli-commons';

View File

@@ -1,5 +1,13 @@
# @verdaccio/e2e-cli-yarn3
## 1.0.2-next-8.1
### Patch Changes
- 9da5308: chore(deps): e2e-cli
- Updated dependencies [9da5308]
- @verdaccio/test-cli-commons@2.0.0-next-8.1
## 1.0.2-next-8.0
### Patch Changes

View File

@@ -1,10 +1,10 @@
{
"private": true,
"name": "@verdaccio/e2e-cli-yarn3",
"version": "1.0.2-next-8.0",
"version": "1.0.2-next-8.1",
"dependencies": {
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.0",
"@yarnpkg/cli-dist": "3.8.3"
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.1",
"@yarnpkg/cli-dist": "3.8.7"
},
"scripts": {
"test": "vitest run --testTimeout 50000"

View File

@@ -1,4 +1,4 @@
import { join } from 'path';
import { join } from 'node:path';
import { exec } from '@verdaccio/test-cli-commons';

View File

@@ -1,5 +1,13 @@
# @verdaccio/e2e-cli-yarn4
## 1.0.2-next-8.1
### Patch Changes
- 9da5308: chore(deps): e2e-cli
- Updated dependencies [9da5308]
- @verdaccio/test-cli-commons@2.0.0-next-8.1
## 1.0.2-next-8.0
### Patch Changes

View File

@@ -1,10 +1,10 @@
{
"private": true,
"name": "@verdaccio/e2e-cli-yarn4",
"version": "1.0.2-next-8.0",
"version": "1.0.2-next-8.1",
"dependencies": {
"@yarnpkg/cli-dist": "4.4.0",
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.0"
"@verdaccio/test-cli-commons": "workspace:2.0.0-next-8.1",
"@yarnpkg/cli-dist": "4.9.2"
},
"scripts": {
"test": "vitest run --testTimeout 80000"

View File

@@ -1,4 +1,4 @@
import { join } from 'path';
import { join } from 'node:path';
import { exec } from '@verdaccio/test-cli-commons';

View File

@@ -3,11 +3,11 @@
"name": "@verdaccio/e2e-ui",
"version": "2.0.0",
"devDependencies": {
"verdaccio": "workspace:8.0.0-next-8.16",
"@verdaccio/core": "workspace:8.0.0-next-8.16",
"@verdaccio/config": "workspace:8.0.0-next-8.16",
"@verdaccio/test-helper": "workspace:4.0.0-next-8.5",
"debug": "4.4.0",
"verdaccio": "workspace:8.0.0-next-8.20",
"@verdaccio/core": "workspace:8.0.0-next-8.20",
"@verdaccio/config": "workspace:8.0.0-next-8.20",
"@verdaccio/test-helper": "workspace:4.0.0-next-8.6",
"debug": "4.4.1",
"cypress": "^13.6.0",
"get-port": "5.1.1"
},

View File

@@ -15,34 +15,34 @@
"url": "https://opencollective.com/verdaccio"
},
"devDependencies": {
"@babel/cli": "7.26.4",
"@babel/core": "7.26.9",
"@babel/cli": "7.27.2",
"@babel/core": "7.27.4",
"@babel/eslint-parser": "7.25.9",
"@babel/node": "7.26.0",
"@babel/plugin-proposal-decorators": "7.25.9",
"@babel/plugin-proposal-function-sent": "7.25.9",
"@babel/plugin-proposal-throw-expressions": "7.25.9",
"@babel/node": "7.27.1",
"@babel/plugin-proposal-decorators": "7.27.1",
"@babel/plugin-proposal-function-sent": "7.27.1",
"@babel/plugin-proposal-throw-expressions": "7.27.1",
"@babel/plugin-syntax-dynamic-import": "7.8.3",
"@babel/plugin-syntax-import-meta": "7.10.4",
"@babel/plugin-transform-async-to-generator": "7.25.9",
"@babel/plugin-transform-class-properties": "7.25.9",
"@babel/plugin-transform-classes": "7.25.9",
"@babel/plugin-transform-export-namespace-from": "7.25.9",
"@babel/plugin-transform-json-strings": "7.25.9",
"@babel/plugin-transform-nullish-coalescing-operator": "7.26.6",
"@babel/plugin-transform-numeric-separator": "7.25.9",
"@babel/plugin-transform-object-rest-spread": "7.25.9",
"@babel/plugin-transform-optional-chaining": "7.25.9",
"@babel/plugin-transform-runtime": "7.26.9",
"@babel/preset-env": "7.26.9",
"@babel/preset-react": "7.26.3",
"@babel/plugin-transform-async-to-generator": "7.27.1",
"@babel/plugin-transform-class-properties": "7.27.1",
"@babel/plugin-transform-classes": "7.27.1",
"@babel/plugin-transform-export-namespace-from": "7.27.1",
"@babel/plugin-transform-json-strings": "7.27.1",
"@babel/plugin-transform-nullish-coalescing-operator": "7.27.1",
"@babel/plugin-transform-numeric-separator": "7.27.1",
"@babel/plugin-transform-object-rest-spread": "7.27.3",
"@babel/plugin-transform-optional-chaining": "7.27.1",
"@babel/plugin-transform-runtime": "7.27.4",
"@babel/preset-env": "7.27.2",
"@babel/preset-react": "7.27.1",
"@babel/preset-typescript": "7.24.7",
"@babel/register": "7.25.9",
"@babel/runtime": "7.26.9",
"@babel/register": "7.27.1",
"@babel/runtime": "7.27.6",
"@changesets/changelog-github": "0.5.1",
"@changesets/cli": "2.27.12",
"@changesets/get-dependents-graph": "2.1.3",
"@crowdin/cli": "4.4.1",
"@crowdin/cli": "4.7.1",
"@dianmora/contributors": "5.0.0",
"@emotion/react": "11.10.6",
"@emotion/styled": "11.10.6",
@@ -96,7 +96,7 @@
"babel-plugin-emotion": "11.0.0",
"concurrently": "8.2.2",
"cross-env": "7.0.3",
"debug": "4.4.0",
"debug": "4.4.1",
"detect-secrets": "1.0.6",
"eslint": "8.57.1",
"fs-extra": "11.2.0",

View File

@@ -1,5 +1,60 @@
# @verdaccio/api
## 8.1.0-next-8.20
### Patch Changes
- 08e1b21: chore(deps): built-in node imports
- Updated dependencies [08e1b21]
- Updated dependencies [a1a73e9]
- Updated dependencies [6a4d6dd]
- Updated dependencies [73c0194]
- Updated dependencies [5fef0b6]
- @verdaccio/middleware@8.0.0-next-8.20
- @verdaccio/config@8.0.0-next-8.20
- @verdaccio/store@8.0.0-next-8.20
- @verdaccio/auth@8.0.0-next-8.20
- @verdaccio/core@8.0.0-next-8.20
- @verdaccio/logger@8.0.0-next-8.20
## 8.1.0-next-8.19
### Patch Changes
- a91c5b8: chore(api): remove obsolete tests
- Updated dependencies [9350431]
- Updated dependencies [da0692f]
- Updated dependencies [3f71267]
- @verdaccio/core@8.0.0-next-8.19
- @verdaccio/middleware@8.0.0-next-8.19
- @verdaccio/store@8.0.0-next-8.19
- @verdaccio/auth@8.0.0-next-8.19
- @verdaccio/config@8.0.0-next-8.19
- @verdaccio/logger@8.0.0-next-8.19
## 8.1.0-next-8.18
### Patch Changes
- @verdaccio/auth@8.0.0-next-8.18
- @verdaccio/store@8.0.0-next-8.18
- @verdaccio/core@8.0.0-next-8.18
- @verdaccio/config@8.0.0-next-8.18
- @verdaccio/middleware@8.0.0-next-8.18
- @verdaccio/logger@8.0.0-next-8.18
## 8.1.0-next-8.17
### Patch Changes
- Updated dependencies [96d2f0f]
- @verdaccio/core@8.0.0-next-8.17
- @verdaccio/auth@8.0.0-next-8.17
- @verdaccio/config@8.0.0-next-8.17
- @verdaccio/middleware@8.0.0-next-8.17
- @verdaccio/store@8.0.0-next-8.17
- @verdaccio/logger@8.0.0-next-8.17
## 8.1.0-next-8.16
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/api",
"version": "8.1.0-next-8.16",
"version": "8.1.0-next-8.20",
"description": "Verdaccio Registry API",
"main": "./build/index.js",
"types": "build/index.d.ts",
@@ -42,24 +42,24 @@
},
"license": "MIT",
"dependencies": {
"@verdaccio/auth": "workspace:8.0.0-next-8.16",
"@verdaccio/config": "workspace:8.0.0-next-8.16",
"@verdaccio/core": "workspace:8.0.0-next-8.16",
"@verdaccio/logger": "workspace:8.0.0-next-8.16",
"@verdaccio/middleware": "workspace:8.0.0-next-8.16",
"@verdaccio/store": "workspace:8.0.0-next-8.16",
"@verdaccio/auth": "workspace:8.0.0-next-8.20",
"@verdaccio/config": "workspace:8.0.0-next-8.20",
"@verdaccio/core": "workspace:8.0.0-next-8.20",
"@verdaccio/logger": "workspace:8.0.0-next-8.20",
"@verdaccio/middleware": "workspace:8.0.0-next-8.20",
"@verdaccio/store": "workspace:8.0.0-next-8.20",
"abortcontroller-polyfill": "1.7.8",
"body-parser": "1.20.3",
"cookies": "0.9.1",
"debug": "4.4.0",
"debug": "4.4.1",
"express": "4.21.2",
"lodash": "4.17.21",
"mime": "2.6.0",
"semver": "7.7.1"
"semver": "7.7.2"
},
"devDependencies": {
"@verdaccio/test-helper": "workspace:4.0.0-next-8.5",
"@verdaccio/types": "workspace:13.0.0-next-8.6",
"@verdaccio/test-helper": "workspace:4.0.0-next-8.6",
"@verdaccio/types": "workspace:13.0.0-next-8.7",
"mockdate": "3.0.5",
"supertest": "7.0.0"
},

View File

@@ -1,6 +1,6 @@
import { Application } from 'express';
import _ from 'lodash';
import path from 'path';
import path from 'node:path';
import supertest from 'supertest';
import { expect } from 'vitest';

View File

@@ -1,5 +1,5 @@
import nock from 'nock';
import { basename } from 'path';
import { basename } from 'node:path';
import supertest from 'supertest';
import { describe, expect, test } from 'vitest';

View File

@@ -1,252 +0,0 @@
// import { API_ERROR, HTTP_STATUS, errorUtils } from '@verdaccio/core';
// import { addVersion, publishPackage, removeTarball, unPublishPackage } from '../../src/publish';
// const REVISION_MOCK = '15-e53a77096b0ee33e';
// require('@verdaccio/logger').setup([{ type: 'stdout', format: 'pretty', level: 'info' }]);
// describe('Publish endpoints - add a tag', () => {
// let req;
// let res;
// let next;
// beforeEach(() => {
// req = {
// params: {
// version: '1.0.0',
// tag: 'tag',
// package: 'verdaccio',
// },
// body: '',
// };
// res = {
// status: jest.fn(),
// };
// next = jest.fn();
// });
// test('should add a version', (done) => {
// const storage = {
// addVersion: (packageName, version, body, tag, cb) => {
// expect(packageName).toEqual(req.params.package);
// expect(version).toEqual(req.params.version);
// expect(body).toEqual(req.body);
// expect(tag).toEqual(req.params.tag);
// cb();
// done();
// },
// };
// // @ts-ignore
// addVersion(storage)(req, res, next);
// expect(res.status).toHaveBeenLastCalledWith(HTTP_STATUS.CREATED);
// expect(next).toHaveBeenLastCalledWith({ ok: 'package published' });
// });
// test('when failed to add a version', (done) => {
// const storage = {
// addVersion: (packageName, version, body, tag, cb) => {
// const error = {
// message: 'failure',
// };
// cb(error);
// done();
// },
// };
// // @ts-ignore
// addVersion(storage)(req, res, next);
// expect(next).toHaveBeenLastCalledWith({ message: 'failure' });
// });
// });
// /**
// * Delete tarball: '/:package/-/:filename/-rev/:revision'
// */
// describe('Publish endpoints - delete tarball', () => {
// let req;
// let res;
// let next;
// beforeEach(() => {
// req = {
// params: {
// filename: 'verdaccio.gzip',
// package: 'verdaccio',
// revision: REVISION_MOCK,
// },
// };
// res = { status: jest.fn() };
// next = jest.fn();
// });
// test('should delete tarball successfully', (done) => {
// const storage = {
// removeTarball(packageName, filename, revision, cb) {
// expect(packageName).toEqual(req.params.package);
// expect(filename).toEqual(req.params.filename);
// expect(revision).toEqual(req.params.revision);
// cb();
// done();
// },
// };
// // @ts-ignore
// removeTarball(storage)(req, res, next);
// expect(res.status).toHaveBeenCalledWith(HTTP_STATUS.CREATED);
// expect(next).toHaveBeenCalledWith({ ok: 'tarball removed' });
// });
// test('failed while deleting the tarball', (done) => {
// const error = {
// message: 'deletion failed',
// };
// const storage = {
// removeTarball(packageName, filename, revision, cb) {
// cb(error);
// done();
// },
// };
// // @ts-ignore
// removeTarball(storage)(req, res, next);
// expect(next).toHaveBeenCalledWith(error);
// });
// });
// /**
// * Un-publish package: '/:package/-rev/*'
// */
// describe('Publish endpoints - un-publish package', () => {
// let req;
// let res;
// let next;
// beforeEach(() => {
// req = {
// params: {
// package: 'verdaccio',
// },
// };
// res = { status: jest.fn() };
// next = jest.fn();
// });
// test('should un-publish package successfully', async () => {
// const storage = {
// removePackage(packageName) {
// expect(packageName).toEqual(req.params.package);
// return Promise.resolve();
// },
// };
// // @ts-ignore
// await unPublishPackage(storage)(req, res, next);
// expect(res.status).toHaveBeenCalledWith(HTTP_STATUS.CREATED);
// expect(next).toHaveBeenCalledWith({ ok: 'package removed' });
// });
// test('un-publish failed', async () => {
// const storage = {
// removePackage(packageName) {
// expect(packageName).toEqual(req.params.package);
// return Promise.reject(errorUtils.getInternalError());
// },
// };
// // @ts-ignore
// await unPublishPackage(storage)(req, res, next);
// expect(next).toHaveBeenCalledWith(errorUtils.getInternalError());
// });
// });
// /**
// * Publish package: '/:package/:_rev?/:revision?'
// */
// describe('Publish endpoints - publish package', () => {
// let req;
// let res;
// let next;
// beforeEach(() => {
// req = {
// body: {
// name: 'verdaccio',
// },
// params: {
// package: 'verdaccio',
// },
// };
// res = { status: jest.fn() };
// next = jest.fn();
// });
// test('should change the existing package', () => {
// const storage = {
// changePackage: jest.fn(),
// };
// req.params._rev = REVISION_MOCK;
// // @ts-ignore
// publishPackage(storage)(req, res, next);
// expect(storage.changePackage).toMatchSnapshot();
// });
// test('should publish a new a new package', () => {
// const storage = {
// addPackage: jest.fn(),
// };
// // @ts-ignore
// publishPackage(storage)(req, res, next);
// expect(storage.addPackage).toMatchSnapshot();
// });
// test('should throw an error while publishing package', () => {
// const storage = {
// addPackage() {
// throw new Error();
// },
// };
// // @ts-ignore
// publishPackage(storage)(req, res, next);
// expect(next).toHaveBeenCalledWith(new Error(API_ERROR.BAD_PACKAGE_DATA));
// });
// describe('test start', () => {
// test('should star a package', () => {
// const storage = {
// changePackage: jest.fn(),
// getPackage({ callback }) {
// callback(null, {
// users: {},
// });
// },
// };
// req = {
// params: {
// package: 'verdaccio',
// },
// body: {
// _rev: REVISION_MOCK,
// users: {
// verdaccio: true,
// },
// },
// remote_user: {
// name: 'verdaccio',
// },
// };
// // @ts-ignore
// publishPackage(storage)(req, res, next);
// expect(storage.changePackage).toMatchSnapshot();
// });
// });
// });

View File

@@ -1,7 +1,7 @@
/* eslint-disable curly */
// ensure that all arguments are validated
import fs from 'fs';
import path from 'path';
import fs from 'node:fs';
import path from 'node:path';
import { describe, expect, test } from 'vitest';
/**

View File

@@ -1,5 +1,57 @@
# @verdaccio/auth
## 8.0.0-next-8.20
### Patch Changes
- 08e1b21: chore(deps): built-in node imports
- 73c0194: chore(auth): typings
- 5fef0b6: chore(auth): multiple plugins test
- Updated dependencies [08e1b21]
- Updated dependencies [a1a73e9]
- Updated dependencies [6a4d6dd]
- @verdaccio/config@8.0.0-next-8.20
- @verdaccio/core@8.0.0-next-8.20
- verdaccio-htpasswd@13.0.0-next-8.20
- @verdaccio/loaders@8.0.0-next-8.10
- @verdaccio/signature@8.0.0-next-8.12
## 8.0.0-next-8.19
### Patch Changes
- Updated dependencies [6e404a0]
- Updated dependencies [4e14aff]
- Updated dependencies [9350431]
- Updated dependencies [95e6c8f]
- verdaccio-htpasswd@13.0.0-next-8.19
- @verdaccio/signature@8.0.0-next-8.11
- @verdaccio/core@8.0.0-next-8.19
- @verdaccio/loaders@8.0.0-next-8.9
- @verdaccio/config@8.0.0-next-8.19
## 8.0.0-next-8.18
### Patch Changes
- Updated dependencies [23296a2]
- @verdaccio/loaders@8.0.0-next-8.8
- @verdaccio/core@8.0.0-next-8.18
- @verdaccio/config@8.0.0-next-8.18
- verdaccio-htpasswd@13.0.0-next-8.18
- @verdaccio/signature@8.0.0-next-8.10
## 8.0.0-next-8.17
### Patch Changes
- Updated dependencies [96d2f0f]
- @verdaccio/core@8.0.0-next-8.17
- @verdaccio/config@8.0.0-next-8.17
- @verdaccio/loaders@8.0.0-next-8.7
- verdaccio-htpasswd@13.0.0-next-8.17
- @verdaccio/signature@8.0.0-next-8.9
## 8.0.0-next-8.16
### Patch Changes

View File

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

View File

@@ -1,5 +1,5 @@
import buildDebug from 'debug';
import _, { isFunction } from 'lodash';
import _ from 'lodash';
import { HTPasswd } from 'verdaccio-htpasswd';
import { TOKEN_VALID_LENGTH, createAnonymousRemoteUser, createRemoteUser } from '@verdaccio/config';
@@ -73,7 +73,7 @@ class Auth implements IAuthMiddleware, TokenEncryption, pluginUtils.IBasicAuth {
}
public async init() {
let plugins = (await this.loadPlugin()) as pluginUtils.Auth<unknown>[];
let plugins = await this.loadPlugin();
debug('auth plugins found %s', plugins.length);
if (!plugins || plugins.length === 0) {
@@ -86,15 +86,14 @@ class Auth implements IAuthMiddleware, TokenEncryption, pluginUtils.IBasicAuth {
private loadDefaultPlugin() {
debug('load default auth plugin');
const pluginOptions: pluginUtils.PluginOptions = {
config: this.config,
logger: this.logger,
};
let authPlugin;
try {
authPlugin = new HTPasswd(
{ file: './htpasswd' },
pluginOptions as any as pluginUtils.PluginOptions
{
config: this.config,
logger: this.logger,
}
);
this.logger.info(
{ name: 'verdaccio-htpasswd', pluginCategory: PLUGIN_CATEGORY.AUTHENTICATION },
@@ -110,7 +109,7 @@ class Auth implements IAuthMiddleware, TokenEncryption, pluginUtils.IBasicAuth {
}
private async loadPlugin() {
return asyncLoadPlugin<pluginUtils.Auth<unknown>>(
return asyncLoadPlugin<pluginUtils.Auth<Config>>(
this.config.auth,
{
config: this.config,
@@ -184,9 +183,9 @@ class Auth implements IAuthMiddleware, TokenEncryption, pluginUtils.IBasicAuth {
): void {
const plugins = this.plugins.slice(0);
(function next(): void {
const plugin = plugins.shift() as pluginUtils.Auth<Config>;
const plugin = plugins.shift();
if (isFunction(plugin.authenticate) === false) {
if (typeof plugin?.authenticate !== 'function') {
return next();
}
@@ -233,7 +232,7 @@ class Auth implements IAuthMiddleware, TokenEncryption, pluginUtils.IBasicAuth {
(function next(): void {
let method = 'adduser';
const plugin = plugins.shift() as pluginUtils.Auth<Config>;
const plugin = plugins.shift();
// @ts-expect-error future major (7.x) should remove this section
if (typeof plugin.adduser === 'undefined' && typeof plugin.add_user === 'function') {
method = 'add_user';
@@ -283,9 +282,9 @@ class Auth implements IAuthMiddleware, TokenEncryption, pluginUtils.IBasicAuth {
debug('allow access for %o', packageName);
(function next(): void {
const plugin: pluginUtils.Auth<unknown> = plugins.shift() as pluginUtils.Auth<unknown>;
const plugin = plugins.shift();
if (_.isNil(plugin) || isFunction(plugin.allow_access) === false) {
if (typeof plugin?.allow_access !== 'function') {
return next();
}
@@ -321,7 +320,7 @@ class Auth implements IAuthMiddleware, TokenEncryption, pluginUtils.IBasicAuth {
debug('allow unpublish for %o plugin does not implement allow_unpublish', packageName);
continue;
} else {
plugin.allow_unpublish(user, pkg, (err, ok): void => {
plugin.allow_unpublish(user, pkg, (err: VerdaccioError | null, ok?: boolean): void => {
if (err) {
debug(
'forbidden publish for %o, it will fallback on unpublish permissions',

View File

@@ -1,5 +1,5 @@
import _ from 'lodash';
import path from 'path';
import path from 'node:path';
import { describe, expect, test, vi } from 'vitest';
import {

View File

@@ -1,5 +1,5 @@
import _ from 'lodash';
import path from 'path';
import path from 'node:path';
import { describe, expect, test, vi } from 'vitest';
import {

View File

@@ -1,5 +1,5 @@
import express from 'express';
import path from 'path';
import path from 'node:path';
import supertest from 'supertest';
import { describe, expect, test, vi } from 'vitest';
@@ -198,29 +198,52 @@ describe('AuthTest', () => {
});
});
describe('test multiple authenticate methods', () => {
test('should skip falsy values', async () => {
const config: Config = new AppConfig({
...getDefaultConfig(),
plugins: path.join(__dirname, './partials/plugin'),
auth: {
success: {},
'fail-invalid-method': {},
},
});
config.checkSecretKey('12345');
const auth: Auth = new Auth(config, logger);
await auth.init();
test('should success first plugin, ignore subsequent plugins', async () => {
const config: Config = new AppConfig({
...getDefaultConfig(),
plugins: path.join(__dirname, './partials/plugin'),
auth: {
success: {},
'no-access': {},
},
});
config.checkSecretKey('12345');
const auth: Auth = new Auth(config, logger);
await auth.init();
return new Promise((resolve) => {
auth.authenticate('foo', 'bar', (err, value) => {
expect(value).toEqual({
name: 'foo',
groups: ['test', ROLES.$ALL, '$authenticated', '@all', '@authenticated', 'all'],
real_groups: ['test'],
});
resolve(value);
return new Promise((resolve) => {
auth.authenticate('foo', 'bar', (err, value) => {
expect(value).toEqual({
name: 'foo',
groups: ['test', ROLES.$ALL, '$authenticated', '@all', '@authenticated', 'all'],
real_groups: ['test'],
});
resolve(value);
});
});
});
test('should fail first plugin, success second plugin', async () => {
const config: Config = new AppConfig({
...getDefaultConfig(),
plugins: path.join(__dirname, './partials/plugin'),
auth: {
'no-access': {},
success: {},
},
});
config.checkSecretKey('12345');
const auth: Auth = new Auth(config, logger);
await auth.init();
return new Promise((resolve) => {
auth.authenticate('foo', 'bar', (err, value) => {
expect(value).toEqual({
name: 'foo',
groups: ['test', ROLES.$ALL, '$authenticated', '@all', '@authenticated', 'all'],
real_groups: ['test'],
});
resolve(value);
});
});
});

View File

@@ -1,4 +1,4 @@
import path from 'path';
import path from 'node:path';
import { getDefaultConfig } from '@verdaccio/config';

View File

@@ -0,0 +1,8 @@
module.exports = function () {
return {
authenticate(user, pass, callback) {
// no access but also no error
callback(null, false);
},
};
};

View File

@@ -0,0 +1,5 @@
{
"name": "verdaccio-no-access",
"main": "no-access.js",
"version": "1.0.0"
}

View File

@@ -1,5 +1,47 @@
# @verdaccio/cli
## 8.0.0-next-8.20
### Patch Changes
- Updated dependencies [08e1b21]
- Updated dependencies [a1a73e9]
- Updated dependencies [6a4d6dd]
- @verdaccio/node-api@8.0.0-next-8.20
- @verdaccio/config@8.0.0-next-8.20
- @verdaccio/core@8.0.0-next-8.20
- @verdaccio/logger@8.0.0-next-8.20
## 8.0.0-next-8.19
### Patch Changes
- Updated dependencies [9350431]
- Updated dependencies [54b1906]
- @verdaccio/core@8.0.0-next-8.19
- @verdaccio/node-api@8.0.0-next-8.19
- @verdaccio/config@8.0.0-next-8.19
- @verdaccio/logger@8.0.0-next-8.19
## 8.0.0-next-8.18
### Patch Changes
- @verdaccio/node-api@8.0.0-next-8.18
- @verdaccio/core@8.0.0-next-8.18
- @verdaccio/config@8.0.0-next-8.18
- @verdaccio/logger@8.0.0-next-8.18
## 8.0.0-next-8.17
### Patch Changes
- Updated dependencies [96d2f0f]
- @verdaccio/core@8.0.0-next-8.17
- @verdaccio/config@8.0.0-next-8.17
- @verdaccio/node-api@8.0.0-next-8.17
- @verdaccio/logger@8.0.0-next-8.17
## 8.0.0-next-8.16
### Patch Changes

View File

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

View File

@@ -1,5 +1,38 @@
# @verdaccio/config
## 8.0.0-next-8.20
### Minor Changes
- 6a4d6dd: feat: getListenAddress getConfigParsed methods
### Patch Changes
- 08e1b21: chore(deps): built-in node imports
- a1a73e9: feat(logger): support redacting sensitive data
- Updated dependencies [6a4d6dd]
- @verdaccio/core@8.0.0-next-8.20
## 8.0.0-next-8.19
### Patch Changes
- Updated dependencies [9350431]
- @verdaccio/core@8.0.0-next-8.19
## 8.0.0-next-8.18
### Patch Changes
- @verdaccio/core@8.0.0-next-8.18
## 8.0.0-next-8.17
### Patch Changes
- Updated dependencies [96d2f0f]
- @verdaccio/core@8.0.0-next-8.17
## 8.0.0-next-8.16
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/config",
"version": "8.0.0-next-8.16",
"version": "8.0.0-next-8.20",
"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.16",
"debug": "4.4.0",
"@verdaccio/core": "workspace:8.0.0-next-8.20",
"debug": "4.4.1",
"js-yaml": "4.1.0",
"lodash": "4.17.21",
"minimatch": "7.4.6"

View File

@@ -0,0 +1,136 @@
import createDebug from 'debug';
import { DEFAULT_DOMAIN, DEFAULT_PORT, DEFAULT_PROTOCOL } from '@verdaccio/core';
import { Logger } from '@verdaccio/types';
const debug = createDebug('verdaccio:config:address');
export interface ListenAddress {
proto: string;
host?: string;
port?: string;
path?: string;
}
/**
* Parse an internet address
* Allow:
- https:localhost:1234 - protocol + host + port
- localhost:1234 - host + port
- 1234 - port
- http::1234 - protocol + port
- https://localhost:443/ - full url + https
- http://[::1]:443/ - ipv6
- unix:/tmp/http.sock - unix sockets
- https://unix:/tmp/http.sock - unix sockets (https)
* @param {*} urlAddress the internet address definition
* @return {Object|Null} literal object that represent the address parsed
*/
export function parseAddress(urlAddress: string): ListenAddress | null {
//
// TODO: refactor it to something more reasonable?
//
// protocol : // ( host )|( ipv6 ): port /
const urlPattern = /^((https?):(\/\/)?)?((([^\/:]*)|\[([^\[\]]+)\]):)?(\d+)\/?$/.exec(urlAddress);
if (urlPattern) {
return {
proto: urlPattern[2] || DEFAULT_PROTOCOL,
host: urlPattern[6] || urlPattern[7] || DEFAULT_DOMAIN,
port: urlPattern[8] || DEFAULT_PORT,
};
}
const unixPattern = /^(?:(https?):\/\/)?unix:(\/.*)$/.exec(urlAddress);
if (!unixPattern) {
// if we cannot match the unix pattern, we return null
// this is to avoid returning a wrong object
return null;
}
return {
host: unixPattern[2],
proto: unixPattern[1] || 'unix',
path: unixPattern[2],
};
}
function addrToString(a: ListenAddress): string {
return a.proto === 'unix' ? `unix:${a.host}` : `${a.proto}://${a.host}:${a.port}`;
}
/**
* Retrieve all addresses defined in the config file.
* Verdaccio is able to listen multiple ports
* @param {String} argListen
* @param {String} configListen
* eg:
* listen:
- localhost:5555
- localhost:5557
@return {Array}
*/
export function getListenAddress(listen: (string | void)[], logger: Logger): ListenAddress {
debug('getListenAddress called with %o', listen);
if (!listen) {
debug('No listen address provided, using default');
return { proto: DEFAULT_PROTOCOL, host: DEFAULT_DOMAIN, port: DEFAULT_PORT };
}
if (Array.isArray(listen)) {
const filteredListen = listen.filter((item) => typeof item === 'string');
if (filteredListen.length === 0) {
throw new Error('Listen addresses array cannot be empty');
}
const invalid: string[] = [];
for (const raw of filteredListen) {
const candidate = parseAddress(raw as string);
if (candidate) {
debug('valid listen address found: %o', candidate);
invalid.forEach((bad) =>
logger.warn(
{ addr: bad },
'invalid address - @{addr}, we expect a port (e.g. "4873"), ' +
'host:port (e.g. "localhost:4873"), full url ' +
'(e.g. "http://localhost:4873/") or unix:/path/socket'
)
);
if (listen.length > 1) {
logger.warn(
`Multiple listen addresses are not supported, using the first valid one ${addrToString(
candidate
)}`
);
}
return candidate;
}
invalid.push(raw as string);
}
invalid.forEach((bad) =>
logger.warn(
{ addr: bad },
'invalid address - @{addr}, we expect a port (e.g. "4873"), ' +
'host:port (e.g. "localhost:4873"), full url ' +
'(e.g. "http://localhost:4873/") or unix:/path/socket'
)
);
throw new Error('No valid listen addresses found in configuration array');
}
const single = parseAddress(listen);
if (!single) {
throw new Error(
`Invalid address - ${listen}, we expect a port (e.g. "4873"), ` +
`host:port (e.g. "localhost:4873"), full url ` +
`(e.g. "http://localhost:4873/") or unix:/path/socket`
);
}
return single;
}

View File

@@ -210,7 +210,16 @@ middlewares:
# Log settings
# https://verdaccio.org/docs/logger
log: { type: stdout, format: pretty, level: http }
# Redaction: https://getpino.io/#/docs/redaction
# Synchronous logging: https://getpino.io/#/docs/asynchronous
log:
type: stdout
format: pretty
level: http
# redact:
# paths: ['req.header.authorization','req.header.cookie','req.remoteAddress','req.remotePort','ip','remoteIP','user','msg']
# censor: '<redacted>'
# sync: true
# Feature flags (experimental settings that can be changed or removed in the future)
# https://verdaccio.org/docs/configuration#experiments

View File

@@ -210,7 +210,16 @@ middlewares:
# Log settings
# https://verdaccio.org/docs/logger
log: { type: stdout, format: pretty, level: http }
# Redaction: https://getpino.io/#/docs/redaction
# Synchronous logging: https://getpino.io/#/docs/asynchronous
log:
type: stdout
format: pretty
level: http
# redact:
# paths: ['req.header.authorization','req.header.cookie','req.remoteAddress','req.remotePort','ip','remoteIP','user','msg']
# censor: '<redacted>'
# sync: true
# Feature flags (experimental settings that can be changed or removed in the future)
# https://verdaccio.org/docs/configuration#experiments

View File

@@ -1,8 +1,8 @@
import { join } from 'path';
import { join } from 'node:path';
import { parseConfigFile } from '../parse';
export function getDefaultConfig(fileName = 'default.yaml') {
export function getDefaultConfig(fileName: string = 'default.yaml') {
const file = join(__dirname, `./${fileName}`);
return parseConfigFile(file);
}

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