Compare commits
49 Commits
@verdaccio
...
@verdaccio
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ec3b79aa6d | ||
|
|
824cd8584f | ||
|
|
d3a4695d5d | ||
|
|
dc571aabd2 | ||
|
|
ddb6a22396 | ||
|
|
399cf9c47c | ||
|
|
819d865fb9 | ||
|
|
3384862846 | ||
|
|
a237700f6a | ||
|
|
ce23833d47 | ||
|
|
3588b8d96b | ||
|
|
c9bd22dcaa | ||
|
|
378e907d53 | ||
|
|
1641dc3325 | ||
|
|
30a967a62b | ||
|
|
e0fb074464 | ||
|
|
83f2d654e0 | ||
|
|
59af78d439 | ||
|
|
d92cffadad | ||
|
|
7fe57531ea | ||
|
|
80b93b9d99 | ||
|
|
4ee90e4124 | ||
|
|
e7b9c78508 | ||
|
|
989d64a6f0 | ||
|
|
a52594f54b | ||
|
|
4fc21146ab | ||
|
|
3dc0fd41f4 | ||
|
|
038756fd9c | ||
|
|
762692341a | ||
|
|
871646da4e | ||
|
|
59be6bc170 | ||
|
|
44f8674061 | ||
|
|
a1c8652eb1 | ||
|
|
9e3abf9830 | ||
|
|
08ff0aef3c | ||
|
|
35408cfc42 | ||
|
|
76c4aa1d43 | ||
|
|
4d4d63c2b1 | ||
|
|
be8367ef38 | ||
|
|
0ad69d58c9 | ||
|
|
8d4f4fffef | ||
|
|
1096aa9fc6 | ||
|
|
83e4669aba | ||
|
|
c827e6b57a | ||
|
|
8c444df1b9 | ||
|
|
b152256692 | ||
|
|
781ac9ac25 | ||
|
|
4f711109df | ||
|
|
35fa14eb66 |
8
.changeset/kind-ladybugs-admire.md
Normal file
8
.changeset/kind-ladybugs-admire.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
'@verdaccio/auth': minor
|
||||
'@verdaccio/config': minor
|
||||
'@verdaccio/signature': minor
|
||||
'@verdaccio/ui-components': minor
|
||||
---
|
||||
|
||||
feat: signature package
|
||||
8
.changeset/old-apples-fail.md
Normal file
8
.changeset/old-apples-fail.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
'@verdaccio/types': patch
|
||||
'@verdaccio/middleware': patch
|
||||
'@verdaccio/ui-theme': patch
|
||||
'@verdaccio/web': patch
|
||||
---
|
||||
|
||||
fix: missing logo on header
|
||||
5
.changeset/poor-suns-film.md
Normal file
5
.changeset/poor-suns-film.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@verdaccio/core': patch
|
||||
---
|
||||
|
||||
fix(core): fix `isObject` function.`isObject(true)` should return false.
|
||||
@@ -56,7 +56,9 @@
|
||||
"customprefix-auth": "0.0.1",
|
||||
"@verdaccio/crowdin-translations": "1.0.0",
|
||||
"@verdaccio/logger-7": "6.0.0-6-next.1",
|
||||
"@verdaccio/logger-commons": "6.0.0-6-next.25"
|
||||
"@verdaccio/logger-commons": "6.0.0-6-next.25",
|
||||
"@verdaccio/e2e-cli-pnpm8": "1.0.1-6-next.6",
|
||||
"@verdaccio/signature": "6.0.0-6-next.1"
|
||||
},
|
||||
"changesets": [
|
||||
"afraid-mice-obey",
|
||||
@@ -101,6 +103,7 @@
|
||||
"heavy-ravens-lay",
|
||||
"hip-hounds-destroy",
|
||||
"kind-bears-nail",
|
||||
"kind-ladybugs-admire",
|
||||
"late-adults-love",
|
||||
"late-parents-act",
|
||||
"light-pumas-brake",
|
||||
@@ -114,6 +117,7 @@
|
||||
"moody-clocks-roll",
|
||||
"neat-toes-report",
|
||||
"neat-toys-float",
|
||||
"old-apples-fail",
|
||||
"olive-candles-speak",
|
||||
"orange-cows-pull",
|
||||
"orange-flowers-cover",
|
||||
@@ -123,9 +127,11 @@
|
||||
"plenty-news-remember",
|
||||
"plenty-spiders-melt",
|
||||
"plenty-tables-refuse",
|
||||
"poor-suns-film",
|
||||
"pretty-hounds-tap",
|
||||
"proud-jeans-walk",
|
||||
"proud-jobs-hope",
|
||||
"rare-planets-travel",
|
||||
"red-chefs-float",
|
||||
"red-yaks-sell",
|
||||
"rich-badgers-begin",
|
||||
@@ -145,6 +151,7 @@
|
||||
"spicy-radios-remain",
|
||||
"spicy-snakes-sip",
|
||||
"strange-ladybugs-nail",
|
||||
"strong-socks-type",
|
||||
"swift-pumpkins-knock",
|
||||
"ten-parents-breathe",
|
||||
"tender-bags-call",
|
||||
|
||||
9
.changeset/rare-planets-travel.md
Normal file
9
.changeset/rare-planets-travel.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
'@verdaccio/config': minor
|
||||
'@verdaccio/core': minor
|
||||
'@verdaccio/types': minor
|
||||
'@verdaccio/signature': minor
|
||||
'@verdaccio/test-helper': minor
|
||||
---
|
||||
|
||||
feat: add forceEnhancedLegacySignature
|
||||
7
.changeset/strong-socks-type.md
Normal file
7
.changeset/strong-socks-type.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@verdaccio/ui-theme': major
|
||||
'@verdaccio/ui-components': major
|
||||
'@verdaccio/web': major
|
||||
---
|
||||
|
||||
fix package configuration issues
|
||||
39
.github/disabled/docker-plugins-e2e.yml
vendored
Normal file
39
.github/disabled/docker-plugins-e2e.yml
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
name: E2E Docker Proxy Plugins Test
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
schedule:
|
||||
# run every sunday
|
||||
- cron: '0 0 * * 0'
|
||||
jobs:
|
||||
docker:
|
||||
timeout-minutes: 10
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
|
||||
|
||||
- name: Start containers
|
||||
run: docker-compose -f "./e2e/docker/docker-build-install-plugin/docker-compose.yaml" up -d --build
|
||||
|
||||
- name: Install node
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
||||
with:
|
||||
node-version: 18
|
||||
|
||||
- name: verdaccio cli
|
||||
run: npm install -g verdaccio --registry=http://localhost:4873
|
||||
- name: gastby cli
|
||||
run: npm install -g gatsby-cli --registry http://localhost:4873
|
||||
- name: netlify cli
|
||||
run: npm install -g netlify-cli --registry http://localhost:4873
|
||||
- name: angular cli
|
||||
run: npm install -g @angular/cli --registry http://localhost:4873
|
||||
|
||||
- name: Stop containers
|
||||
if: always()
|
||||
run: docker-compose -f "./e2e/docker/docker-build-install-plugin/docker-compose.yaml" down
|
||||
38
.github/workflows/docker-proxy-apache-e2e.yml
vendored
Normal file
38
.github/workflows/docker-proxy-apache-e2e.yml
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
name: E2E Docker Proxy Apache Test
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
schedule:
|
||||
# run every sunday
|
||||
- cron: '0 0 * * 0'
|
||||
jobs:
|
||||
docker:
|
||||
timeout-minutes: 10
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
|
||||
|
||||
- name: Start containers
|
||||
run: docker-compose -f "./e2e/docker/apache-verdaccio/docker-compose.yaml" up -d --build
|
||||
|
||||
- name: Install node
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
||||
with:
|
||||
node-version: 18
|
||||
- name: verdaccio cli
|
||||
run: npm install -g verdaccio --registry http://localhost
|
||||
- name: gastby cli
|
||||
run: npm install -g gatsby-cli --registry http://localhost
|
||||
- name: netlify cli
|
||||
run: npm install -g netlify-cli --registry http://localhost
|
||||
- name: angular cli
|
||||
run: npm install -g @angular/cli --registry http://localhost
|
||||
|
||||
- name: Stop containers
|
||||
if: always()
|
||||
run: docker-compose -f "./e2e/docker/apache-verdaccio/docker-compose.yaml" down
|
||||
41
.github/workflows/docker-proxy-nginx-e2e.yml
vendored
Normal file
41
.github/workflows/docker-proxy-nginx-e2e.yml
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
name: E2E Docker Proxy Nginx Test
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
jobs:
|
||||
docker:
|
||||
timeout-minutes: 10
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
|
||||
|
||||
- name: Start containers
|
||||
run: docker-compose -f "./e2e/docker/proxy-nginx/docker-compose.yaml" up -d --build
|
||||
|
||||
- name: Install node
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
||||
with:
|
||||
node-version: 18
|
||||
- name: npm setup
|
||||
run: |
|
||||
npm config set fetch-retries="5"
|
||||
npm config set fetch-retry-factor="50"
|
||||
npm config set fetch-retry-mintimeout="20000"
|
||||
npm config set fetch-retry-maxtimeout="80000"
|
||||
- name: verdaccio cli
|
||||
run: npm install -g verdaccio --registry http://localhost
|
||||
- name: gastby cli
|
||||
run: npm install -g gatsby-cli --registry http://localhost
|
||||
- name: netlify cli
|
||||
run: npm install -g netlify-cli --registry http://localhost
|
||||
- name: angular cli
|
||||
run: npm install -g @angular/cli --registry http://localhost
|
||||
|
||||
- name: Stop containers
|
||||
if: always()
|
||||
run: docker-compose -f "./e2e/docker/proxy-nginx/docker-compose.yaml" down
|
||||
2
.github/workflows/docker-publish.yml
vendored
2
.github/workflows/docker-publish.yml
vendored
@@ -49,7 +49,7 @@ jobs:
|
||||
with:
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
platforms: linux/amd64
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
tags: ${{ steps.docker_meta.outputs.tags }}
|
||||
labels: ${{ steps.docker_meta.outputs.labels }}
|
||||
|
||||
2
.github/workflows/e2e-ci.yml
vendored
2
.github/workflows/e2e-ci.yml
vendored
@@ -75,7 +75,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
pkg: [npm6, npm7, npm8, npm9, pnpm6, pnpm7, yarn1, yarn2, yarn3, yarn4]
|
||||
pkg: [npm6, npm7, npm8, npm9, pnpm6, pnpm7, pnpm8, yarn1, yarn2, yarn3, yarn4]
|
||||
node: [16, 18, 19]
|
||||
name: ${{ matrix.pkg }}/ ubuntu-latest / ${{ matrix.node }}
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
6
.github/workflows/static-data.yml
vendored
6
.github/workflows/static-data.yml
vendored
@@ -28,12 +28,6 @@ jobs:
|
||||
node-version: 18.x
|
||||
- name: install pnpm
|
||||
run: sudo npm i pnpm@latest-6 -g
|
||||
- name: set store
|
||||
run: |
|
||||
mkdir ~/.pnpm-store
|
||||
pnpm config set store-dir ~/.pnpm-store
|
||||
- name: setup pnpm config registry
|
||||
run: pnpm config set registry https://registry.verdaccio.org
|
||||
- name: install dependencies
|
||||
run: pnpm install
|
||||
- name: Build Translations percentage
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM --platform=${BUILDPLATFORM:-linux/amd64} node:16-alpine as builder
|
||||
FROM --platform=${BUILDPLATFORM:-linux/amd64} node:18-alpine as builder
|
||||
|
||||
ENV NODE_ENV=development \
|
||||
VERDACCIO_BUILD_REGISTRY=https://registry.verdaccio.org
|
||||
@@ -20,7 +20,7 @@ RUN npm -g i pnpm@6.32.15 && \
|
||||
# FIXME: need to remove devDependencies from the build
|
||||
# RUN pnpm install --prod --ignore-scripts
|
||||
|
||||
FROM node:16-alpine
|
||||
FROM node:18-alpine
|
||||
LABEL maintainer="https://github.com/verdaccio/verdaccio"
|
||||
|
||||
ENV VERDACCIO_APPDIR=/opt/verdaccio \
|
||||
|
||||
@@ -10,18 +10,18 @@
|
||||
|
||||
### Commands Tested
|
||||
|
||||
| cmd | npm6 | npm7 | npm8 | npm9 | pnpm6 | pnpm7 | yarn1 | yarn2 | yarn3 | yarn4 |
|
||||
| --------- | ---- | ---- | ---- | ---- | ----- | ----- | ----- | ----- | ----- | ----- |
|
||||
| publish | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||
| info | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||
| audit | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
|
||||
| install | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||
| deprecate | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⛔ | ⛔ | ⛔ | ⛔ |
|
||||
| ping | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⛔ | ⛔ | ⛔ | ⛔ |
|
||||
| search | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⛔ | ⛔ | ⛔ | ⛔ |
|
||||
| star | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⛔ | ⛔ | ⛔ | ⛔ |
|
||||
| stars | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⛔ | ⛔ | ⛔ | ⛔ |
|
||||
| dist-tag | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
|
||||
| cmd | npm6 | npm7 | npm8 | npm9 | pnpm6 | pnpm7 | pnpm8 | yarn1 | yarn2 | yarn3 | yarn4 |
|
||||
| --------- | ---- | ---- | ---- | ---- | ----- | ----- | ----- | ----- | ----- | ----- | ----- |
|
||||
| publish | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||
| info | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||
| audit | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
|
||||
| install | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||
| deprecate | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⛔ | ⛔ | ⛔ | ⛔ |
|
||||
| ping | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⛔ | ⛔ | ⛔ | ⛔ |
|
||||
| search | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⛔ | ⛔ | ⛔ | ⛔ |
|
||||
| star | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⛔ | ⛔ | ⛔ | ⛔ |
|
||||
| stars | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⛔ | ⛔ | ⛔ | ⛔ |
|
||||
| dist-tag | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
|
||||
|
||||
> notes:
|
||||
>
|
||||
|
||||
@@ -5,15 +5,15 @@
|
||||
"main": "./build/index.js",
|
||||
"types": "./build/index.d.ts",
|
||||
"devDependencies": {
|
||||
"verdaccio": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.20",
|
||||
"js-yaml": "4.1.0",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.22",
|
||||
"debug": "4.3.4",
|
||||
"fs-extra": "10.1.0",
|
||||
"got": "11.8.6",
|
||||
"lodash": "4.17.21"
|
||||
"js-yaml": "4.1.0",
|
||||
"lodash": "4.17.21",
|
||||
"verdaccio": "workspace:6.0.0-6-next.63"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "jest",
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"version": "1.0.1-6-next.6",
|
||||
"dependencies": {
|
||||
"@verdaccio/test-cli-commons": "workspace:1.1.0-6-next.6",
|
||||
"npm": "8.19.3"
|
||||
"npm": "8.19.4"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "jest"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"version": "1.0.1-6-next.6",
|
||||
"dependencies": {
|
||||
"@verdaccio/test-cli-commons": "workspace:1.1.0-6-next.6",
|
||||
"npm": "9.2.0"
|
||||
"npm": "9.5.1"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "jest"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"version": "1.0.1-6-next.6",
|
||||
"dependencies": {
|
||||
"@verdaccio/test-cli-commons": "workspace:1.1.0-6-next.6",
|
||||
"pnpm": "latest-6"
|
||||
"pnpm": "^6.35.1"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "jest"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"version": "1.0.1-6-next.6",
|
||||
"dependencies": {
|
||||
"@verdaccio/test-cli-commons": "workspace:1.1.0-6-next.6",
|
||||
"pnpm": "next-7"
|
||||
"pnpm": "^7.27.1"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "jest"
|
||||
|
||||
3
e2e/cli/e2e-pnpm8/.babelrc
Normal file
3
e2e/cli/e2e-pnpm8/.babelrc
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": "../../../.babelrc"
|
||||
}
|
||||
7
e2e/cli/e2e-pnpm8/.eslintrc
Normal file
7
e2e/cli/e2e-pnpm8/.eslintrc
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"rules": {
|
||||
"no-console": 0,
|
||||
"@typescript-eslint/no-var-requires": 0,
|
||||
"@typescript-eslint/explicit-member-accessibility": 0
|
||||
}
|
||||
}
|
||||
46
e2e/cli/e2e-pnpm8/CHANGELOG.md
Normal file
46
e2e/cli/e2e-pnpm8/CHANGELOG.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# @verdaccio/e2e-cli-pnpm7
|
||||
|
||||
## 1.0.1-6-next.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d167f92e]
|
||||
- @verdaccio/test-cli-commons@1.1.0-6-next.6
|
||||
|
||||
## 1.0.1-6-next.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/test-cli-commons@1.0.1-6-next.5
|
||||
|
||||
## 1.0.1-6-next.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/test-cli-commons@1.0.1-6-next.4
|
||||
|
||||
## 1.0.1-6-next.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 351aeeaa: fix(deps): @verdaccio/utils should be a prod dep of local-storage
|
||||
- Updated dependencies [351aeeaa]
|
||||
- @verdaccio/test-cli-commons@1.0.1-6-next.3
|
||||
|
||||
## 1.0.1-6-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/test-cli-commons@1.0.1-6-next.2
|
||||
|
||||
## 1.0.1-6-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/test-cli-commons@1.0.1-6-next.1
|
||||
|
||||
## 1.0.1-6-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/test-cli-commons@1.0.1-6-next.0
|
||||
45
e2e/cli/e2e-pnpm8/audit.spec.ts
Normal file
45
e2e/cli/e2e-pnpm8/audit.spec.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
import { addRegistry, initialSetup, prepareGenericEmptyProject } from '@verdaccio/test-cli-commons';
|
||||
|
||||
import { pnpm } from './utils';
|
||||
|
||||
describe('install a package', () => {
|
||||
jest.setTimeout(10000);
|
||||
let registry;
|
||||
|
||||
beforeAll(async () => {
|
||||
const setup = await initialSetup();
|
||||
registry = setup.registry;
|
||||
await registry.init();
|
||||
});
|
||||
|
||||
test.each([['verdaccio-memory', '@verdaccio/cli']])(
|
||||
'should audit a package %s',
|
||||
async (pkgName) => {
|
||||
const { tempFolder } = await prepareGenericEmptyProject(
|
||||
pkgName,
|
||||
'1.0.0-patch',
|
||||
registry.port,
|
||||
registry.getToken(),
|
||||
registry.getRegistryUrl(),
|
||||
{ jquery: '3.6.1' }
|
||||
);
|
||||
// install is required to create package lock file
|
||||
await pnpm({ cwd: tempFolder }, 'install', ...addRegistry(registry.getRegistryUrl()));
|
||||
const resp = await pnpm(
|
||||
{ cwd: tempFolder },
|
||||
'audit',
|
||||
'--json',
|
||||
...addRegistry(registry.getRegistryUrl())
|
||||
);
|
||||
const parsedBody = JSON.parse(resp.stdout as string);
|
||||
expect(parsedBody.metadata).toBeDefined();
|
||||
expect(parsedBody.actions).toBeDefined();
|
||||
expect(parsedBody.advisories).toBeDefined();
|
||||
expect(parsedBody.muted).toBeDefined();
|
||||
}
|
||||
);
|
||||
|
||||
afterAll(async () => {
|
||||
registry.stop();
|
||||
});
|
||||
});
|
||||
115
e2e/cli/e2e-pnpm8/deprecate.spec.ts
Normal file
115
e2e/cli/e2e-pnpm8/deprecate.spec.ts
Normal file
@@ -0,0 +1,115 @@
|
||||
import {
|
||||
addRegistry,
|
||||
initialSetup,
|
||||
pnpmUtils,
|
||||
prepareGenericEmptyProject,
|
||||
} from '@verdaccio/test-cli-commons';
|
||||
|
||||
import { pnpm } from './utils';
|
||||
|
||||
describe('deprecate a package', () => {
|
||||
jest.setTimeout(20000);
|
||||
let registry;
|
||||
|
||||
async function deprecate(tempFolder, packageVersion, registry, message) {
|
||||
await pnpm(
|
||||
{ cwd: tempFolder },
|
||||
'deprecate',
|
||||
packageVersion,
|
||||
message,
|
||||
'--json',
|
||||
...addRegistry(registry.getRegistryUrl())
|
||||
);
|
||||
}
|
||||
|
||||
beforeAll(async () => {
|
||||
const setup = await initialSetup();
|
||||
registry = setup.registry;
|
||||
await registry.init();
|
||||
});
|
||||
|
||||
test.each([['@verdaccio/deprecated-1']])(
|
||||
'should deprecate a single package %s',
|
||||
async (pkgName) => {
|
||||
const message = 'some message';
|
||||
const { tempFolder } = await prepareGenericEmptyProject(
|
||||
pkgName,
|
||||
'1.0.0',
|
||||
registry.port,
|
||||
registry.getToken(),
|
||||
registry.getRegistryUrl()
|
||||
);
|
||||
await pnpmUtils.publish(pnpm, tempFolder, pkgName, registry);
|
||||
// deprecate one version
|
||||
await deprecate(tempFolder, `${pkgName}@1.0.0`, registry, message);
|
||||
// verify is deprecated
|
||||
const infoBody = await pnpmUtils.getInfoVersions(pnpm, `${pkgName}`, registry);
|
||||
expect(infoBody.name).toEqual(pkgName);
|
||||
expect(infoBody.deprecated).toEqual(message);
|
||||
}
|
||||
);
|
||||
|
||||
test.each([['@verdaccio/deprecated-2']])('should un-deprecate a package %s', async (pkgName) => {
|
||||
const message = 'some message';
|
||||
const { tempFolder } = await prepareGenericEmptyProject(
|
||||
pkgName,
|
||||
'1.0.0',
|
||||
registry.port,
|
||||
registry.getToken(),
|
||||
registry.getRegistryUrl()
|
||||
);
|
||||
await pnpmUtils.publish(pnpm, tempFolder, pkgName, registry);
|
||||
// deprecate one version
|
||||
await deprecate(tempFolder, `${pkgName}@1.0.0`, registry, message);
|
||||
// verify is deprecated
|
||||
const infoBody = await pnpmUtils.getInfoVersions(pnpm, `${pkgName}`, registry);
|
||||
expect(infoBody.deprecated).toEqual(message);
|
||||
// empty string is same as undeprecate
|
||||
await deprecate(tempFolder, `${pkgName}@1.0.0`, registry, '');
|
||||
const infoBody2 = await pnpmUtils.getInfoVersions(pnpm, `${pkgName}`, registry);
|
||||
expect(infoBody2.deprecated).toBeUndefined();
|
||||
});
|
||||
|
||||
test.each([['@verdaccio/deprecated-3']])(
|
||||
'should deprecate a multiple packages %s',
|
||||
async (pkgName) => {
|
||||
const message = 'some message';
|
||||
const { tempFolder } = await prepareGenericEmptyProject(
|
||||
pkgName,
|
||||
'1.0.0',
|
||||
registry.port,
|
||||
registry.getToken(),
|
||||
registry.getRegistryUrl()
|
||||
);
|
||||
// publish 1.0.0
|
||||
await pnpmUtils.publish(pnpm, tempFolder, pkgName, registry);
|
||||
// publish 1.1.0
|
||||
await pnpmUtils.bumbUp(pnpm, tempFolder, registry);
|
||||
await pnpmUtils.publish(pnpm, tempFolder, pkgName, registry);
|
||||
// publish 1.2.0
|
||||
await pnpmUtils.bumbUp(pnpm, tempFolder, registry);
|
||||
await pnpmUtils.publish(pnpm, tempFolder, pkgName, registry);
|
||||
// publish 1.3.0
|
||||
await pnpmUtils.bumbUp(pnpm, tempFolder, registry);
|
||||
await pnpmUtils.publish(pnpm, tempFolder, pkgName, registry);
|
||||
// // deprecate all version
|
||||
await deprecate(tempFolder, pkgName, registry, message);
|
||||
// verify is deprecated
|
||||
for (let v of ['1.0.0', '1.1.0', '1.2.0', '1.3.0']) {
|
||||
const infoResp = await pnpmUtils.getInfoVersions(pnpm, `${pkgName}@${v}`, registry);
|
||||
expect(infoResp.deprecated).toEqual(message);
|
||||
}
|
||||
// publish normal version
|
||||
// publish 1.4.0
|
||||
await pnpmUtils.bumbUp(pnpm, tempFolder, registry);
|
||||
await pnpmUtils.publish(pnpm, tempFolder, pkgName, registry);
|
||||
const infoResp = await pnpmUtils.getInfoVersions(pnpm, `${pkgName}@1.4.0`, registry);
|
||||
// must be not deprecated
|
||||
expect(infoResp.deprecated).toBeUndefined();
|
||||
}
|
||||
);
|
||||
|
||||
afterAll(async () => {
|
||||
registry.stop();
|
||||
});
|
||||
});
|
||||
91
e2e/cli/e2e-pnpm8/dist-tags.spec.ts
Normal file
91
e2e/cli/e2e-pnpm8/dist-tags.spec.ts
Normal file
@@ -0,0 +1,91 @@
|
||||
import {
|
||||
addRegistry,
|
||||
initialSetup,
|
||||
pnpmUtils,
|
||||
prepareGenericEmptyProject,
|
||||
} from '@verdaccio/test-cli-commons';
|
||||
|
||||
import { pnpm } from './utils';
|
||||
|
||||
describe('publish a package', () => {
|
||||
jest.setTimeout(20000);
|
||||
let registry;
|
||||
|
||||
beforeAll(async () => {
|
||||
const setup = await initialSetup();
|
||||
registry = setup.registry;
|
||||
await registry.init();
|
||||
});
|
||||
|
||||
test.each([['@foo/foo', 'foo']])('should list dist-tags for %s', async (pkgName) => {
|
||||
const { tempFolder } = await prepareGenericEmptyProject(
|
||||
pkgName,
|
||||
'1.0.0',
|
||||
registry.port,
|
||||
registry.getToken(),
|
||||
registry.getRegistryUrl()
|
||||
);
|
||||
await pnpmUtils.publish(pnpm, tempFolder, pkgName, registry);
|
||||
await pnpmUtils.bumbUp(pnpm, tempFolder, registry);
|
||||
await pnpmUtils.publish(pnpm, tempFolder, pkgName, registry, ['--tag', 'beta']);
|
||||
const resp2 = await pnpm(
|
||||
{ cwd: tempFolder },
|
||||
'dist-tag',
|
||||
'ls',
|
||||
'--json',
|
||||
...addRegistry(registry.getRegistryUrl())
|
||||
);
|
||||
expect(resp2.stdout).toEqual('beta: 1.1.0latest: 1.0.0');
|
||||
});
|
||||
|
||||
test.each([['@verdaccio/bar']])('should remove tag with dist-tags for %s', async (pkgName) => {
|
||||
const { tempFolder } = await prepareGenericEmptyProject(
|
||||
pkgName,
|
||||
'1.0.0',
|
||||
registry.port,
|
||||
registry.getToken(),
|
||||
registry.getRegistryUrl()
|
||||
);
|
||||
await pnpmUtils.publish(pnpm, tempFolder, pkgName, registry);
|
||||
await pnpmUtils.bumbUp(pnpm, tempFolder, registry);
|
||||
await pnpmUtils.publish(pnpm, tempFolder, pkgName, registry, ['--tag', 'beta']);
|
||||
const resp2 = await pnpm(
|
||||
{ cwd: tempFolder },
|
||||
'dist-tag',
|
||||
'rm',
|
||||
`${pkgName}@1.1.0`,
|
||||
'beta',
|
||||
...addRegistry(registry.getRegistryUrl())
|
||||
);
|
||||
expect(resp2.stdout).toEqual('-beta: @verdaccio/bar@1.1.0');
|
||||
});
|
||||
|
||||
test.each([['@verdaccio/five']])(
|
||||
'should add tag to package and version with dist-tags for %s',
|
||||
async (pkgName) => {
|
||||
const { tempFolder } = await prepareGenericEmptyProject(
|
||||
pkgName,
|
||||
'1.0.0',
|
||||
registry.port,
|
||||
registry.getToken(),
|
||||
registry.getRegistryUrl()
|
||||
);
|
||||
await pnpmUtils.publish(pnpm, tempFolder, pkgName, registry);
|
||||
await pnpmUtils.bumbUp(pnpm, tempFolder, registry);
|
||||
await pnpmUtils.publish(pnpm, tempFolder, pkgName, registry);
|
||||
const resp2 = await pnpm(
|
||||
{ cwd: tempFolder },
|
||||
'dist-tag',
|
||||
'add',
|
||||
`${pkgName}@1.1.0`,
|
||||
'alfa',
|
||||
...addRegistry(registry.getRegistryUrl())
|
||||
);
|
||||
expect(resp2.stdout).toEqual(`+alfa: ${pkgName}@1.1.0`);
|
||||
}
|
||||
);
|
||||
|
||||
afterAll(async () => {
|
||||
registry.stop();
|
||||
});
|
||||
});
|
||||
31
e2e/cli/e2e-pnpm8/info.spec.ts
Normal file
31
e2e/cli/e2e-pnpm8/info.spec.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import { addRegistry, initialSetup } from '@verdaccio/test-cli-commons';
|
||||
|
||||
import { pnpm } from './utils';
|
||||
|
||||
describe('install a package', () => {
|
||||
jest.setTimeout(10000);
|
||||
let registry;
|
||||
|
||||
beforeAll(async () => {
|
||||
const setup = await initialSetup();
|
||||
registry = setup.registry;
|
||||
await registry.init();
|
||||
});
|
||||
|
||||
test('should run pnpm info json body', async () => {
|
||||
const resp = await pnpm(
|
||||
{},
|
||||
'info',
|
||||
'verdaccio',
|
||||
'--json',
|
||||
...addRegistry(registry.getRegistryUrl())
|
||||
);
|
||||
const parsedBody = JSON.parse(resp.stdout as string);
|
||||
expect(parsedBody.name).toEqual('verdaccio');
|
||||
expect(parsedBody.dependencies).toBeDefined();
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
registry.stop();
|
||||
});
|
||||
});
|
||||
36
e2e/cli/e2e-pnpm8/install.spec.ts
Normal file
36
e2e/cli/e2e-pnpm8/install.spec.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import { addRegistry, initialSetup, prepareGenericEmptyProject } from '@verdaccio/test-cli-commons';
|
||||
|
||||
import { pnpm } from './utils';
|
||||
|
||||
describe('install a project packages', () => {
|
||||
jest.setTimeout(80000);
|
||||
let registry;
|
||||
|
||||
beforeAll(async () => {
|
||||
const setup = await initialSetup();
|
||||
registry = setup.registry;
|
||||
await registry.init();
|
||||
});
|
||||
|
||||
test('should run npm install json body', async () => {
|
||||
const { tempFolder } = await prepareGenericEmptyProject(
|
||||
'something',
|
||||
'1.0.0-patch',
|
||||
registry.port,
|
||||
registry.getToken(),
|
||||
registry.getRegistryUrl(),
|
||||
{ react: '18.2.0' }
|
||||
);
|
||||
const resp = await pnpm(
|
||||
{ cwd: tempFolder },
|
||||
'install',
|
||||
'--reporter=default',
|
||||
...addRegistry(registry.getRegistryUrl())
|
||||
);
|
||||
expect(resp.stdout).toMatch(/react/);
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
registry.stop();
|
||||
});
|
||||
});
|
||||
3
e2e/cli/e2e-pnpm8/jest.config.js
Normal file
3
e2e/cli/e2e-pnpm8/jest.config.js
Normal file
@@ -0,0 +1,3 @@
|
||||
const config = require('../jest.config');
|
||||
|
||||
module.exports = { ...config };
|
||||
12
e2e/cli/e2e-pnpm8/package.json
Normal file
12
e2e/cli/e2e-pnpm8/package.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"private": true,
|
||||
"name": "@verdaccio/e2e-cli-pnpm8",
|
||||
"version": "1.0.1-6-next.6",
|
||||
"dependencies": {
|
||||
"@verdaccio/test-cli-commons": "workspace:1.1.0-6-next.6",
|
||||
"pnpm": "^8.0.0-alpha.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "jest"
|
||||
}
|
||||
}
|
||||
24
e2e/cli/e2e-pnpm8/ping.spec.ts
Normal file
24
e2e/cli/e2e-pnpm8/ping.spec.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import { addRegistry, initialSetup } from '@verdaccio/test-cli-commons';
|
||||
|
||||
import { pnpm } from './utils';
|
||||
|
||||
describe('ping registry', () => {
|
||||
jest.setTimeout(10000);
|
||||
let registry;
|
||||
|
||||
beforeAll(async () => {
|
||||
const setup = await initialSetup();
|
||||
registry = setup.registry;
|
||||
await registry.init();
|
||||
});
|
||||
|
||||
test('should ping registry', async () => {
|
||||
const resp = await pnpm({}, 'ping', '--json', ...addRegistry(registry.getRegistryUrl()));
|
||||
const parsedBody = JSON.parse(resp.stdout as string);
|
||||
expect(parsedBody.registry).toEqual(registry.getRegistryUrl() + '/');
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
registry.stop();
|
||||
});
|
||||
});
|
||||
41
e2e/cli/e2e-pnpm8/publish.spec.ts
Normal file
41
e2e/cli/e2e-pnpm8/publish.spec.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import { addRegistry, initialSetup, prepareGenericEmptyProject } from '@verdaccio/test-cli-commons';
|
||||
|
||||
import { pnpm } from './utils';
|
||||
|
||||
describe('install a package', () => {
|
||||
jest.setTimeout(10000);
|
||||
let registry;
|
||||
|
||||
beforeAll(async () => {
|
||||
const setup = await initialSetup();
|
||||
registry = setup.registry;
|
||||
await registry.init();
|
||||
});
|
||||
|
||||
test.each([['verdaccio-memory', 'verdaccio', '@verdaccio/foo', '@verdaccio/some-foo']])(
|
||||
'should publish a package %s',
|
||||
async (pkgName) => {
|
||||
const { tempFolder } = await prepareGenericEmptyProject(
|
||||
pkgName,
|
||||
'1.0.0-patch',
|
||||
registry.port,
|
||||
registry.getToken(),
|
||||
registry.getRegistryUrl()
|
||||
);
|
||||
const resp = await pnpm(
|
||||
{ cwd: tempFolder },
|
||||
'publish',
|
||||
'--json',
|
||||
...addRegistry(registry.getRegistryUrl())
|
||||
);
|
||||
const parsedBody = JSON.parse(resp.stdout as string);
|
||||
expect(parsedBody.name).toEqual(pkgName);
|
||||
expect(parsedBody.files).toBeDefined();
|
||||
expect(parsedBody.files).toBeDefined();
|
||||
}
|
||||
);
|
||||
|
||||
afterAll(async () => {
|
||||
registry.stop();
|
||||
});
|
||||
});
|
||||
33
e2e/cli/e2e-pnpm8/search.spec.ts
Normal file
33
e2e/cli/e2e-pnpm8/search.spec.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import { addRegistry, initialSetup } from '@verdaccio/test-cli-commons';
|
||||
|
||||
import { pnpm } from './utils';
|
||||
|
||||
describe('search a package', () => {
|
||||
jest.setTimeout(10000);
|
||||
let registry;
|
||||
|
||||
beforeAll(async () => {
|
||||
const setup = await initialSetup();
|
||||
registry = setup.registry;
|
||||
await registry.init();
|
||||
});
|
||||
|
||||
test('should search a package', async () => {
|
||||
const resp = await pnpm(
|
||||
{},
|
||||
'search',
|
||||
'@verdaccio/cli',
|
||||
'--json',
|
||||
...addRegistry(registry.getRegistryUrl())
|
||||
);
|
||||
const parsedBody = JSON.parse(resp.stdout as string);
|
||||
const pkgFind = parsedBody.find((item) => {
|
||||
return item.name === '@verdaccio/cli';
|
||||
});
|
||||
expect(pkgFind.name).toEqual('@verdaccio/cli');
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
registry.stop();
|
||||
});
|
||||
});
|
||||
89
e2e/cli/e2e-pnpm8/star.spec.ts
Normal file
89
e2e/cli/e2e-pnpm8/star.spec.ts
Normal file
@@ -0,0 +1,89 @@
|
||||
import {
|
||||
addRegistry,
|
||||
initialSetup,
|
||||
pnpmUtils,
|
||||
prepareGenericEmptyProject,
|
||||
} from '@verdaccio/test-cli-commons';
|
||||
|
||||
import { pnpm } from './utils';
|
||||
|
||||
describe('star a package', () => {
|
||||
jest.setTimeout(20000);
|
||||
let registry;
|
||||
|
||||
beforeAll(async () => {
|
||||
const setup = await initialSetup();
|
||||
registry = setup.registry;
|
||||
await registry.init();
|
||||
});
|
||||
|
||||
test.each([['@verdaccio/foo']])('should star a package %s', async (pkgName) => {
|
||||
const { tempFolder } = await prepareGenericEmptyProject(
|
||||
pkgName,
|
||||
'1.0.0-patch',
|
||||
registry.port,
|
||||
registry.getToken(),
|
||||
registry.getRegistryUrl()
|
||||
);
|
||||
|
||||
await pnpmUtils.publish(pnpm, tempFolder, pkgName, registry);
|
||||
const resp = await pnpm(
|
||||
{ cwd: tempFolder },
|
||||
'star',
|
||||
pkgName,
|
||||
...addRegistry(registry.getRegistryUrl())
|
||||
);
|
||||
expect(resp.stdout).toEqual(`★ ${pkgName}`);
|
||||
});
|
||||
|
||||
test.each([['@verdaccio/bar']])('should unstar a package %s', async (pkgName) => {
|
||||
const { tempFolder } = await prepareGenericEmptyProject(
|
||||
pkgName,
|
||||
'1.0.0-patch',
|
||||
registry.port,
|
||||
registry.getToken(),
|
||||
registry.getRegistryUrl()
|
||||
);
|
||||
|
||||
await pnpmUtils.publish(pnpm, tempFolder, pkgName, registry);
|
||||
const resp = await pnpm(
|
||||
{ cwd: tempFolder },
|
||||
'star',
|
||||
pkgName,
|
||||
...addRegistry(registry.getRegistryUrl())
|
||||
);
|
||||
expect(resp.stdout).toEqual(`★ ${pkgName}`);
|
||||
|
||||
const resp1 = await pnpm(
|
||||
{ cwd: tempFolder },
|
||||
'unstar',
|
||||
pkgName,
|
||||
...addRegistry(registry.getRegistryUrl())
|
||||
);
|
||||
expect(resp1.stdout).toEqual(`☆ ${pkgName}`);
|
||||
});
|
||||
|
||||
test('should list stars of a user %s', async () => {
|
||||
const pkgName = '@verdaccio/stars';
|
||||
const { tempFolder } = await prepareGenericEmptyProject(
|
||||
pkgName,
|
||||
'1.0.0-patch',
|
||||
registry.port,
|
||||
registry.getToken(),
|
||||
registry.getRegistryUrl()
|
||||
);
|
||||
await pnpmUtils.publish(pnpm, tempFolder, pkgName, registry);
|
||||
await pnpm({ cwd: tempFolder }, 'star', pkgName, ...addRegistry(registry.getRegistryUrl()));
|
||||
const resp = await pnpm(
|
||||
{ cwd: tempFolder },
|
||||
'stars',
|
||||
...addRegistry(registry.getRegistryUrl())
|
||||
);
|
||||
// side effects: this result is affected the the package published in the previous step
|
||||
expect(resp.stdout).toEqual(`@verdaccio/foo@verdaccio/stars`);
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
registry.stop();
|
||||
});
|
||||
});
|
||||
8
e2e/cli/e2e-pnpm8/tsconfig.json
Normal file
8
e2e/cli/e2e-pnpm8/tsconfig.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"extends": "../../../tsconfig.reference.json",
|
||||
"references": [
|
||||
{
|
||||
"path": "../cli-commons"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
e2e/cli/e2e-pnpm8/utils.ts
Normal file
12
e2e/cli/e2e-pnpm8/utils.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import { SpawnOptions } from 'child_process';
|
||||
import { join } from 'path';
|
||||
|
||||
import { exec } from '@verdaccio/test-cli-commons';
|
||||
|
||||
function getCommand() {
|
||||
return join(__dirname, './node_modules/.bin/pnpm');
|
||||
}
|
||||
|
||||
export function pnpm(options: SpawnOptions, ...args: string[]) {
|
||||
return exec(options, getCommand(), args);
|
||||
}
|
||||
@@ -4,7 +4,7 @@
|
||||
"version": "1.0.1-6-next.6",
|
||||
"dependencies": {
|
||||
"@verdaccio/test-cli-commons": "workspace:1.1.0-6-next.6",
|
||||
"@yarnpkg/cli-dist": "3.3.1"
|
||||
"@yarnpkg/cli-dist": "3.4.1"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "jest"
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -3,6 +3,7 @@
|
||||
"name": "@verdaccio/e2e-cli-yarn4",
|
||||
"version": "1.0.1-6-next.6",
|
||||
"dependencies": {
|
||||
"@yarnpkg/cli-dist": "4.0.0-rc.39",
|
||||
"@verdaccio/test-cli-commons": "workspace:1.1.0-6-next.6"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -7,10 +7,7 @@ export function getCommand(projectFolder) {
|
||||
}
|
||||
|
||||
export function getYarnCommand() {
|
||||
// FUTURE: yarn 4 rc still not available via registry
|
||||
// tags: https://repo.yarnpkg.com/tags
|
||||
// download binary: https://repo.yarnpkg.com/4.0.0-rc.14/packages/yarnpkg-cli/bin/yarn.js
|
||||
return join(__dirname, './bin/yarn-4.0.0-rc.14.cjs');
|
||||
return join(__dirname, './node_modules/@yarnpkg/cli-dist/bin/yarn.js');
|
||||
}
|
||||
|
||||
export function yarn(projectFolder, ...args: string[]) {
|
||||
|
||||
6
e2e/docker/apache-verdaccio/apache_proxy/Dockerfile
Normal file
6
e2e/docker/apache-verdaccio/apache_proxy/Dockerfile
Normal file
@@ -0,0 +1,6 @@
|
||||
FROM eboraas/apache
|
||||
LABEL Juan Picado <jotadeveloper@gmail.com>
|
||||
# http://pierrecaserta.com/apache-proxy-one-docker-server-many-domains/
|
||||
RUN a2enmod proxy
|
||||
COPY ./conf/000-default.conf /etc/apache2/sites-enabled/000-default.conf
|
||||
COPY ./conf/env.load /etc/apache2/mods-enabled/env.load
|
||||
@@ -0,0 +1,17 @@
|
||||
ServerName localhost:80
|
||||
ServerAdmin admin@localhost
|
||||
|
||||
<VirtualHost *:80>
|
||||
ServerName localhost
|
||||
<Proxy *>
|
||||
Allow from localhost
|
||||
</Proxy>
|
||||
SSLProxyEngine On
|
||||
ProxyRequests Off
|
||||
ProxyPreserveHost On
|
||||
AllowEncodedSlashes NoDecode
|
||||
ProxyPass / http://verdaccio:4873/ nocanon
|
||||
ProxyPassReverse / http://verdaccio:4873/
|
||||
CustomLog /var/log/apache2/verdaccio-access.log combined
|
||||
ErrorLog /var/log/apache2/verdaccio-error.log
|
||||
</VirtualHost>
|
||||
4
e2e/docker/apache-verdaccio/apache_proxy/conf/env.load
Normal file
4
e2e/docker/apache-verdaccio/apache_proxy/conf/env.load
Normal file
@@ -0,0 +1,4 @@
|
||||
LoadModule env_module /usr/lib/apache2/modules/mod_env.so
|
||||
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
|
||||
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
|
||||
LoadModule socache_shmcb_module /usr/lib/apache2/modules/mod_socache_shmcb.so
|
||||
23
e2e/docker/apache-verdaccio/docker-compose.yaml
Normal file
23
e2e/docker/apache-verdaccio/docker-compose.yaml
Normal file
@@ -0,0 +1,23 @@
|
||||
version: '2'
|
||||
|
||||
services:
|
||||
verdaccio:
|
||||
image: verdaccio/verdaccio:nightly-master
|
||||
container_name: verdaccio
|
||||
ports:
|
||||
- '4873:4873'
|
||||
volumes:
|
||||
- verdaccio:/verdaccio
|
||||
|
||||
apacheproxy:
|
||||
build: apache_proxy/
|
||||
links:
|
||||
- verdaccio
|
||||
ports:
|
||||
- '80:80'
|
||||
volumes_from:
|
||||
- verdaccio
|
||||
|
||||
volumes:
|
||||
verdaccio:
|
||||
driver: local
|
||||
9
e2e/docker/docker-build-install-plugin/Dockerfile
Normal file
9
e2e/docker/docker-build-install-plugin/Dockerfile
Normal file
@@ -0,0 +1,9 @@
|
||||
FROM verdaccio/verdaccio:nightly-master
|
||||
LABEL Juan Picado <jotadeveloper@gmail.com>
|
||||
ADD docker.yaml /verdaccio/conf/config.yaml
|
||||
USER root
|
||||
RUN npm install --global verdaccio-static-token \
|
||||
# && npm install --global verdaccio-memory@6-next \
|
||||
&& npm install --global verdaccio-auth-memory@6-next
|
||||
USER $VERDACCIO_USER_UID
|
||||
|
||||
12
e2e/docker/docker-build-install-plugin/docker-compose.yaml
Normal file
12
e2e/docker/docker-build-install-plugin/docker-compose.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
version: '2'
|
||||
|
||||
services:
|
||||
verdaccio:
|
||||
build: .
|
||||
ports:
|
||||
- '4873:4873'
|
||||
volumes:
|
||||
- verdaccio:/verdaccio
|
||||
volumes:
|
||||
verdaccio:
|
||||
driver: local
|
||||
46
e2e/docker/docker-build-install-plugin/docker.yaml
Normal file
46
e2e/docker/docker-build-install-plugin/docker.yaml
Normal file
@@ -0,0 +1,46 @@
|
||||
# store:
|
||||
# memory:
|
||||
# limit: 1000
|
||||
|
||||
storage: ./storage
|
||||
|
||||
plugins: /verdaccio/plugins
|
||||
|
||||
web:
|
||||
title: Verdaccio Publish Config Test
|
||||
auth:
|
||||
auth-memory:
|
||||
users:
|
||||
foo:
|
||||
name: foo
|
||||
password: s3cret
|
||||
bar:
|
||||
name: bar
|
||||
password: s3cret
|
||||
uplinks:
|
||||
npmjs:
|
||||
url: https://registry.npmjs.org/
|
||||
packages:
|
||||
'@*/*':
|
||||
access: $all
|
||||
publish: $authenticated
|
||||
unpublish: $authenticated
|
||||
proxy: npmjs
|
||||
'**':
|
||||
access: $all
|
||||
publish: $authenticated
|
||||
unpublish: $authenticated
|
||||
proxy: npmjs
|
||||
server:
|
||||
keepAliveTimeout: 60
|
||||
middlewares:
|
||||
audit:
|
||||
enabled: true
|
||||
static-token:
|
||||
- token: mySecureToken
|
||||
user: systemUser
|
||||
password: systemPassword
|
||||
- token: ABCD1234
|
||||
user: uncle
|
||||
password: tom
|
||||
log: { type: stdout, format: pretty, level: http }
|
||||
3
e2e/docker/docker-e2e-ui/Dockerfile
Normal file
3
e2e/docker/docker-e2e-ui/Dockerfile
Normal file
@@ -0,0 +1,3 @@
|
||||
FROM verdaccio/verdaccio:nightly-master
|
||||
LABEL Juan Picado <jotadeveloper@gmail.com>
|
||||
ADD docker.yaml /verdaccio/conf/config.yaml
|
||||
12
e2e/docker/docker-e2e-ui/docker-compose.yaml
Normal file
12
e2e/docker/docker-e2e-ui/docker-compose.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
version: '2'
|
||||
|
||||
services:
|
||||
verdaccio:
|
||||
build: .
|
||||
ports:
|
||||
- '4873:4873'
|
||||
volumes:
|
||||
- verdaccio:/verdaccio
|
||||
volumes:
|
||||
verdaccio:
|
||||
driver: local
|
||||
37
e2e/docker/docker-e2e-ui/docker.yaml
Normal file
37
e2e/docker/docker-e2e-ui/docker.yaml
Normal file
@@ -0,0 +1,37 @@
|
||||
storage: /verdaccio/storage/data
|
||||
|
||||
plugins: /verdaccio/plugins
|
||||
|
||||
web:
|
||||
enable: true
|
||||
title: verdaccio-server-e2e
|
||||
login: true
|
||||
|
||||
auth:
|
||||
htpasswd:
|
||||
file: /verdaccio/storage/htpasswd
|
||||
|
||||
uplinks:
|
||||
npmjs:
|
||||
url: https://registry.npmjs.org/
|
||||
|
||||
packages:
|
||||
'@verdaccio/*':
|
||||
access: $all
|
||||
publish: $authenticated
|
||||
'@*/*':
|
||||
access: $all
|
||||
publish: $authenticated
|
||||
unpublish: $authenticated
|
||||
proxy: npmjs
|
||||
'**':
|
||||
access: $all
|
||||
publish: $authenticated
|
||||
unpublish: $authenticated
|
||||
proxy: npmjs
|
||||
|
||||
middlewares:
|
||||
audit:
|
||||
enabled: true
|
||||
|
||||
log: { type: stdout, format: json, level: info }
|
||||
3
e2e/docker/proxy-nginx/conf/nginx/Dockerfile
Executable file
3
e2e/docker/proxy-nginx/conf/nginx/Dockerfile
Executable file
@@ -0,0 +1,3 @@
|
||||
FROM tutum/nginx
|
||||
RUN rm /etc/nginx/sites-enabled/default
|
||||
ADD sites-enabled /etc/nginx/sites-enabled
|
||||
14
e2e/docker/proxy-nginx/conf/nginx/sites-enabled/verdaccio-conf
Executable file
14
e2e/docker/proxy-nginx/conf/nginx/sites-enabled/verdaccio-conf
Executable file
@@ -0,0 +1,14 @@
|
||||
server {
|
||||
listen 80 default_server;
|
||||
access_log /var/log/nginx/verdaccio.log;
|
||||
charset utf-8;
|
||||
location / {
|
||||
proxy_pass http://verdaccio:4873/;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-NginX-Proxy true;
|
||||
proxy_ssl_session_reuse off;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_redirect off;
|
||||
}
|
||||
}
|
||||
26
e2e/docker/proxy-nginx/docker-compose.yaml
Normal file
26
e2e/docker/proxy-nginx/docker-compose.yaml
Normal file
@@ -0,0 +1,26 @@
|
||||
version: '2'
|
||||
|
||||
services:
|
||||
verdaccio:
|
||||
image: verdaccio/verdaccio:nightly-master
|
||||
container_name: verdaccio_root_path
|
||||
ports:
|
||||
- '4873:4873'
|
||||
volumes:
|
||||
- verdaccio:/verdaccio
|
||||
|
||||
nginx:
|
||||
restart: always
|
||||
build: conf/nginx
|
||||
ports:
|
||||
- '80:80'
|
||||
volumes:
|
||||
- /www/public
|
||||
volumes_from:
|
||||
- verdaccio
|
||||
links:
|
||||
- verdaccio:verdaccio
|
||||
|
||||
volumes:
|
||||
verdaccio:
|
||||
driver: local
|
||||
@@ -3,10 +3,10 @@
|
||||
"name": "@verdaccio/e2e-ui",
|
||||
"version": "2.0.0-6-next.3",
|
||||
"devDependencies": {
|
||||
"verdaccio": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/test-helper": "workspace:2.0.0-6-next.7",
|
||||
"verdaccio": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/test-helper": "workspace:2.0.0-6-next.8",
|
||||
"debug": "4.3.4",
|
||||
"cypress": "11.2.0"
|
||||
},
|
||||
|
||||
45
package.json
45
package.json
@@ -38,74 +38,73 @@
|
||||
"@babel/preset-typescript": "7.18.6",
|
||||
"@babel/register": "7.18.9",
|
||||
"@babel/runtime": "7.20.7",
|
||||
"@dianmora/contributors": "5.0.0",
|
||||
"@changesets/changelog-github": "0.4.8",
|
||||
"@changesets/cli": "2.24.4",
|
||||
"@changesets/get-dependents-graph": "1.3.5",
|
||||
"@crowdin/cli": "3.9.1",
|
||||
"@dianmora/contributors": "5.0.0",
|
||||
"@emotion/react": "11.10.5",
|
||||
"@emotion/styled": "11.10.5",
|
||||
"@testing-library/dom": "8.19.1",
|
||||
"@testing-library/jest-dom": "5.16.5",
|
||||
"@testing-library/react": "12.1.4",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
"@trivago/prettier-plugin-sort-imports": "3.4.0",
|
||||
"@trivago/prettier-plugin-sort-imports": "^4.0.0",
|
||||
"@types/async": "3.2.16",
|
||||
"@types/express": "4.17.15",
|
||||
"@types/http-errors": "1.8.2",
|
||||
"@types/jest": "27.5.2",
|
||||
"@types/jsonwebtoken": "8.5.9",
|
||||
"@types/lodash": "4.14.191",
|
||||
"@types/mime": "2.0.3",
|
||||
"@types/minimatch": "3.0.5",
|
||||
"@types/redux": "3.6.0",
|
||||
"@types/node": "16.18.10",
|
||||
"@types/jsonwebtoken": "8.5.9",
|
||||
"@types/request": "2.48.8",
|
||||
"@types/semver": "7.3.13",
|
||||
"@types/node-fetch": "2.6.2",
|
||||
"@types/supertest": "2.0.12",
|
||||
"@types/testing-library__jest-dom": "5.14.5",
|
||||
"@types/validator": "13.7.10",
|
||||
"@types/webpack": "5.28.0",
|
||||
"@types/webpack-env": "1.18.0",
|
||||
"@types/react": "18.0.26",
|
||||
"@types/react-dom": "18.0.9",
|
||||
"@types/react-router-dom": "5.3.3",
|
||||
"@types/react-virtualized": "9.21.21",
|
||||
"@typescript-eslint/eslint-plugin": "5.49.0",
|
||||
"@typescript-eslint/parser": "5.49.0",
|
||||
"@types/redux": "3.6.0",
|
||||
"@types/request": "2.48.8",
|
||||
"@types/semver": "7.3.13",
|
||||
"@types/supertest": "2.0.12",
|
||||
"@types/testing-library__jest-dom": "5.14.5",
|
||||
"@types/validator": "13.7.12",
|
||||
"@types/webpack": "5.28.0",
|
||||
"@types/webpack-env": "1.18.0",
|
||||
"@typescript-eslint/eslint-plugin": "5.52.0",
|
||||
"@typescript-eslint/parser": "5.52.0",
|
||||
"@verdaccio/crowdin-translations": "workspace:*",
|
||||
"@verdaccio/eslint-config": "workspace:*",
|
||||
"@verdaccio/types": "workspace:*",
|
||||
"@verdaccio/ui-theme": "workspace:*",
|
||||
"babel-core": "7.0.0-bridge.0",
|
||||
"babel-eslint": "10.1.0",
|
||||
"babel-jest": "29.3.1",
|
||||
"babel-jest": "29.4.3",
|
||||
"babel-plugin-dynamic-import-node": "2.3.3",
|
||||
"babel-plugin-emotion": "10.2.2",
|
||||
"concurrently": "6.5.1",
|
||||
"core-js": "3.27.0",
|
||||
"cross-env": "7.0.3",
|
||||
"debug": "4.3.4",
|
||||
"detect-secrets": "1.0.6",
|
||||
"jest-diff": "29.3.1",
|
||||
"eslint": "8.33.0",
|
||||
"eslint": "8.34.0",
|
||||
"fs-extra": "10.1.0",
|
||||
"got": "11.8.6",
|
||||
"husky": "7.0.4",
|
||||
"in-publish": "2.0.1",
|
||||
"jest": "29.3.1",
|
||||
"jest-environment-jsdom": "29.3.1",
|
||||
"jest": "29.4.3",
|
||||
"jest-diff": "29.4.3",
|
||||
"jest-environment-jsdom": "29.4.3",
|
||||
"jest-environment-jsdom-global": "3.1.2",
|
||||
"jest-environment-node": "29.3.1",
|
||||
"jest-junit": "12.3.0",
|
||||
"kleur": "3.0.3",
|
||||
"lint-staged": "11.2.6",
|
||||
"got": "11.8.6",
|
||||
"nock": "13.2.9",
|
||||
"nodemon": "2.0.20",
|
||||
"npm-run-all": "4.1.5",
|
||||
"prettier": "2.8.3",
|
||||
"prettier": "2.8.4",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
"rimraf": "3.0.2",
|
||||
"selfsigned": "1.10.14",
|
||||
"supertest": "6.3.3",
|
||||
|
||||
@@ -1,5 +1,33 @@
|
||||
# @verdaccio/api
|
||||
|
||||
## 6.0.0-6-next.46
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [ddb6a223]
|
||||
- Updated dependencies [dc571aab]
|
||||
- @verdaccio/auth@6.0.0-6-next.42
|
||||
- @verdaccio/config@6.0.0-6-next.63
|
||||
- @verdaccio/core@6.0.0-6-next.63
|
||||
- @verdaccio/middleware@6.0.0-6-next.42
|
||||
- @verdaccio/store@6.0.0-6-next.43
|
||||
- @verdaccio/utils@6.0.0-6-next.31
|
||||
- @verdaccio/logger@6.0.0-6-next.31
|
||||
|
||||
## 6.0.0-6-next.45
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [4fc21146]
|
||||
- Updated dependencies [378e907d]
|
||||
- @verdaccio/middleware@6.0.0-6-next.41
|
||||
- @verdaccio/core@6.0.0-6-next.62
|
||||
- @verdaccio/auth@6.0.0-6-next.41
|
||||
- @verdaccio/logger@6.0.0-6-next.30
|
||||
- @verdaccio/store@6.0.0-6-next.42
|
||||
- @verdaccio/config@6.0.0-6-next.62
|
||||
- @verdaccio/utils@6.0.0-6-next.30
|
||||
|
||||
## 6.0.0-6-next.44
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/api",
|
||||
"version": "6.0.0-6-next.44",
|
||||
"version": "6.0.0-6-next.46",
|
||||
"description": "loaders logic",
|
||||
"main": "./build/index.js",
|
||||
"types": "build/index.d.ts",
|
||||
@@ -39,13 +39,13 @@
|
||||
},
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@verdaccio/auth": "workspace:6.0.0-6-next.40",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.29",
|
||||
"@verdaccio/middleware": "workspace:6.0.0-6-next.40",
|
||||
"@verdaccio/store": "workspace:6.0.0-6-next.41",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.29",
|
||||
"@verdaccio/auth": "workspace:6.0.0-6-next.42",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.31",
|
||||
"@verdaccio/middleware": "workspace:6.0.0-6-next.42",
|
||||
"@verdaccio/store": "workspace:6.0.0-6-next.43",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.31",
|
||||
"abortcontroller-polyfill": "1.7.5",
|
||||
"cookies": "0.8.0",
|
||||
"debug": "4.3.4",
|
||||
@@ -57,9 +57,9 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "16.18.10",
|
||||
"@verdaccio/server": "workspace:6.0.0-6-next.50",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.20",
|
||||
"@verdaccio/test-helper": "workspace:2.0.0-6-next.7",
|
||||
"@verdaccio/server": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.22",
|
||||
"@verdaccio/test-helper": "workspace:2.0.0-6-next.8",
|
||||
"supertest": "6.3.3",
|
||||
"nock": "13.2.9",
|
||||
"mockdate": "3.0.5"
|
||||
|
||||
@@ -1,5 +1,35 @@
|
||||
# @verdaccio/auth
|
||||
|
||||
## 6.0.0-6-next.42
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- ddb6a223: feat: signature package
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [ddb6a223]
|
||||
- Updated dependencies [dc571aab]
|
||||
- @verdaccio/config@6.0.0-6-next.63
|
||||
- @verdaccio/signature@6.0.0-6-next.2
|
||||
- @verdaccio/core@6.0.0-6-next.63
|
||||
- @verdaccio/loaders@6.0.0-6-next.32
|
||||
- verdaccio-htpasswd@11.0.0-6-next.33
|
||||
- @verdaccio/utils@6.0.0-6-next.31
|
||||
- @verdaccio/logger@6.0.0-6-next.31
|
||||
|
||||
## 6.0.0-6-next.41
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [378e907d]
|
||||
- @verdaccio/core@6.0.0-6-next.62
|
||||
- @verdaccio/loaders@6.0.0-6-next.31
|
||||
- @verdaccio/logger@6.0.0-6-next.30
|
||||
- verdaccio-htpasswd@11.0.0-6-next.32
|
||||
- @verdaccio/config@6.0.0-6-next.62
|
||||
- @verdaccio/utils@6.0.0-6-next.30
|
||||
|
||||
## 6.0.0-6-next.40
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -4,7 +4,7 @@ module.exports = Object.assign({}, config, {
|
||||
coverageThreshold: {
|
||||
global: {
|
||||
// FIXME: increase to 90
|
||||
lines: 42,
|
||||
lines: 30,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/auth",
|
||||
"version": "6.0.0-6-next.40",
|
||||
"version": "6.0.0-6-next.42",
|
||||
"description": "logger",
|
||||
"main": "./build/index.js",
|
||||
"types": "./build/index.d.ts",
|
||||
@@ -39,19 +39,19 @@
|
||||
},
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/loaders": "workspace:6.0.0-6-next.30",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.29",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.29",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/loaders": "workspace:6.0.0-6-next.32",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.31",
|
||||
"@verdaccio/signature": "workspace:6.0.0-6-next.2",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.31",
|
||||
"debug": "4.3.4",
|
||||
"express": "4.18.2",
|
||||
"jsonwebtoken": "9.0.0",
|
||||
"lodash": "4.17.21",
|
||||
"verdaccio-htpasswd": "workspace:11.0.0-6-next.31"
|
||||
"verdaccio-htpasswd": "workspace:11.0.0-6-next.33"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.20"
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.22"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
|
||||
@@ -15,6 +15,7 @@ import {
|
||||
} from '@verdaccio/core';
|
||||
import { asyncLoadPlugin } from '@verdaccio/loaders';
|
||||
import { logger } from '@verdaccio/logger';
|
||||
import { aesEncrypt, parseBasicPayload, signPayload } from '@verdaccio/signature';
|
||||
import {
|
||||
AllowAccess,
|
||||
Callback,
|
||||
@@ -27,9 +28,6 @@ import {
|
||||
} from '@verdaccio/types';
|
||||
import { getMatchedPackagesSpec, isFunction, isNil } from '@verdaccio/utils';
|
||||
|
||||
import { signPayload } from './jwt-token';
|
||||
import { aesEncrypt } from './legacy-token';
|
||||
import { parseBasicPayload } from './token';
|
||||
import {
|
||||
convertPayloadToBase64,
|
||||
getDefaultPlugins,
|
||||
@@ -47,6 +45,7 @@ export interface TokenEncryption {
|
||||
aesEncrypt(buf: string): string | void;
|
||||
}
|
||||
|
||||
// remove
|
||||
export interface AESPayload {
|
||||
user: string;
|
||||
password: string;
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
export { Auth, TokenEncryption } from './auth';
|
||||
export { Auth } from './auth';
|
||||
export * from './utils';
|
||||
export * from './legacy-token';
|
||||
export * from './jwt-token';
|
||||
export * from './token';
|
||||
|
||||
@@ -11,12 +11,10 @@ import {
|
||||
errorUtils,
|
||||
pluginUtils,
|
||||
} from '@verdaccio/core';
|
||||
import { aesDecrypt, parseBasicPayload, verifyPayload } from '@verdaccio/signature';
|
||||
import { AuthPackageAllow, Config, Logger, RemoteUser, Security } from '@verdaccio/types';
|
||||
|
||||
import { AESPayload, TokenEncryption } from './auth';
|
||||
import { verifyPayload } from './jwt-token';
|
||||
import { aesDecrypt } from './legacy-token';
|
||||
import { parseBasicPayload } from './token';
|
||||
|
||||
const debug = buildDebug('verdaccio:auth:utils');
|
||||
|
||||
|
||||
@@ -17,24 +17,22 @@ import {
|
||||
errorUtils,
|
||||
} from '@verdaccio/core';
|
||||
import { setup } from '@verdaccio/logger';
|
||||
import { aesDecrypt, signPayload, verifyPayload } from '@verdaccio/signature';
|
||||
import { Config, RemoteUser, Security } from '@verdaccio/types';
|
||||
import { buildToken, buildUserBuffer, getAuthenticatedMessage } from '@verdaccio/utils';
|
||||
import type { AllowActionCallbackResponse } from '@verdaccio/utils';
|
||||
|
||||
import {
|
||||
ActionsAllowed,
|
||||
AllowActionCallbackResponse,
|
||||
Auth,
|
||||
aesDecrypt,
|
||||
allow_action,
|
||||
getApiToken,
|
||||
getDefaultPlugins,
|
||||
getMiddlewareCredentials,
|
||||
signPayload,
|
||||
verifyJWTPayload,
|
||||
verifyPayload,
|
||||
} from '../src';
|
||||
|
||||
setup([]);
|
||||
setup({});
|
||||
|
||||
const parseConfigurationFile = (conf) => {
|
||||
const { name, ext } = path.parse(conf);
|
||||
@@ -452,6 +450,7 @@ describe('Auth utilities', () => {
|
||||
const config: Config = getConfig('security-legacy', secret);
|
||||
const auth: Auth = new Auth(config);
|
||||
await auth.init();
|
||||
// @ts-expect-error
|
||||
const token = auth.aesEncrypt(null);
|
||||
const security: Security = config.security;
|
||||
const credentials = getMiddlewareCredentials(
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
{
|
||||
"path": "../loaders"
|
||||
},
|
||||
{
|
||||
"path": "../signature"
|
||||
},
|
||||
{
|
||||
"path": "../logger/logger"
|
||||
},
|
||||
|
||||
@@ -1,5 +1,26 @@
|
||||
# @verdaccio/cli
|
||||
|
||||
## 6.0.0-6-next.63
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [ddb6a223]
|
||||
- Updated dependencies [dc571aab]
|
||||
- @verdaccio/config@6.0.0-6-next.63
|
||||
- @verdaccio/core@6.0.0-6-next.63
|
||||
- @verdaccio/node-api@6.0.0-6-next.63
|
||||
- @verdaccio/logger@6.0.0-6-next.31
|
||||
|
||||
## 6.0.0-6-next.62
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [378e907d]
|
||||
- @verdaccio/core@6.0.0-6-next.62
|
||||
- @verdaccio/logger@6.0.0-6-next.30
|
||||
- @verdaccio/node-api@6.0.0-6-next.62
|
||||
- @verdaccio/config@6.0.0-6-next.62
|
||||
|
||||
## 6.0.0-6-next.61
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/cli",
|
||||
"version": "6.0.0-6-next.61",
|
||||
"version": "6.0.0-6-next.63",
|
||||
"author": {
|
||||
"name": "Juan Picado",
|
||||
"email": "juanpicado19@gmail.com"
|
||||
@@ -44,11 +44,11 @@
|
||||
"start": "ts-node src/index.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.29",
|
||||
"@verdaccio/node-api": "workspace:6.0.0-6-next.61",
|
||||
"clipanion": "3.1.0",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.31",
|
||||
"@verdaccio/node-api": "workspace:6.0.0-6-next.63",
|
||||
"clipanion": "3.2.0",
|
||||
"envinfo": "7.8.1",
|
||||
"kleur": "3.0.3",
|
||||
"semver": "7.3.8"
|
||||
|
||||
@@ -1,5 +1,26 @@
|
||||
# @verdaccio/config
|
||||
|
||||
## 6.0.0-6-next.63
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- ddb6a223: feat: signature package
|
||||
- dc571aab: feat: add forceEnhancedLegacySignature
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [dc571aab]
|
||||
- @verdaccio/core@6.0.0-6-next.63
|
||||
- @verdaccio/utils@6.0.0-6-next.31
|
||||
|
||||
## 6.0.0-6-next.62
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [378e907d]
|
||||
- @verdaccio/core@6.0.0-6-next.62
|
||||
- @verdaccio/utils@6.0.0-6-next.30
|
||||
|
||||
## 6.0.0-6-next.61
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/config",
|
||||
"version": "6.0.0-6-next.61",
|
||||
"version": "6.0.0-6-next.63",
|
||||
"description": "logger",
|
||||
"main": "./build/index.js",
|
||||
"types": "build/index.d.ts",
|
||||
@@ -38,8 +38,8 @@
|
||||
"build": "pnpm run build:js && pnpm run build:types"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.29",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.31",
|
||||
"debug": "4.3.4",
|
||||
"js-yaml": "4.1.0",
|
||||
"lodash": "4.17.21",
|
||||
|
||||
@@ -28,7 +28,6 @@ const debug = buildDebug('verdaccio:config');
|
||||
* @return {String} the config file path
|
||||
*/
|
||||
function findConfigFile(configPath?: string): string {
|
||||
// console.log(process.env);
|
||||
if (typeof configPath !== 'undefined') {
|
||||
return path.resolve(configPath);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,8 @@ import assert from 'assert';
|
||||
import buildDebug from 'debug';
|
||||
import _ from 'lodash';
|
||||
|
||||
import { APP_ERROR } from '@verdaccio/core';
|
||||
import { APP_ERROR, warningUtils } from '@verdaccio/core';
|
||||
import { Codes } from '@verdaccio/core/build/warning-utils';
|
||||
import {
|
||||
Config as AppConfig,
|
||||
AuthConf,
|
||||
@@ -45,9 +46,11 @@ class Config implements AppConfig {
|
||||
public users: any;
|
||||
public auth: AuthConf;
|
||||
public server_id: string;
|
||||
// @deprecated use configPath instead
|
||||
public config_path: string;
|
||||
public configPath: string;
|
||||
/**
|
||||
* @deprecated use configPath or config.getConfigPath();
|
||||
*/
|
||||
public self_path: string;
|
||||
public storage: string | void;
|
||||
|
||||
public plugins: string | void | null;
|
||||
@@ -57,14 +60,24 @@ class Config implements AppConfig {
|
||||
public secret: string;
|
||||
public flags: FlagsConfig;
|
||||
public userRateLimit: RateLimit;
|
||||
public constructor(config: ConfigYaml & { config_path: string }) {
|
||||
private configOptions: { forceEnhancedLegacySignature: boolean };
|
||||
public constructor(
|
||||
config: ConfigYaml & { config_path: string },
|
||||
configOptions = { forceEnhancedLegacySignature: true }
|
||||
) {
|
||||
const self = this;
|
||||
this.configOptions = configOptions;
|
||||
this.storage = process.env.VERDACCIO_STORAGE_PATH || config.storage;
|
||||
if (!config.configPath) {
|
||||
throw new Error('config_path is required');
|
||||
// backport self_path for previous to version 6
|
||||
// @ts-expect-error
|
||||
config.configPath = config.config_path ?? config.self_path;
|
||||
if (!config.configPath) {
|
||||
throw new Error('configPath property is required');
|
||||
}
|
||||
}
|
||||
this.config_path = config.config_path ?? (config.configPath as string);
|
||||
this.configPath = config.configPath;
|
||||
this.self_path = this.configPath;
|
||||
debug('config path: %s', this.configPath);
|
||||
this.plugins = config.plugins;
|
||||
this.security = _.merge(defaultSecurity, config.security);
|
||||
@@ -117,6 +130,10 @@ class Config implements AppConfig {
|
||||
}
|
||||
}
|
||||
|
||||
public getConfigPath() {
|
||||
return this.configPath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for package spec
|
||||
*/
|
||||
@@ -127,18 +144,35 @@ class Config implements AppConfig {
|
||||
|
||||
/**
|
||||
* Store or create whether receive a secret key
|
||||
* @secret external secret key
|
||||
*/
|
||||
public checkSecretKey(secret?: string): string {
|
||||
debug('check secret key');
|
||||
if (_.isString(secret) && _.isEmpty(secret) === false) {
|
||||
if (typeof secret === 'string' && _.isEmpty(secret) === false) {
|
||||
this.secret = secret;
|
||||
debug('reusing previous key');
|
||||
return secret;
|
||||
}
|
||||
// it generates a secret key
|
||||
// generate a new a secret key
|
||||
// FUTURE: this might be an external secret key, perhaps within config file?
|
||||
debug('generate a new key');
|
||||
this.secret = generateRandomSecretKey();
|
||||
//
|
||||
if (this.configOptions.forceEnhancedLegacySignature) {
|
||||
this.secret = generateRandomSecretKey();
|
||||
} else {
|
||||
this.secret =
|
||||
this.security.enhancedLegacySignature === true
|
||||
? generateRandomSecretKey()
|
||||
: generateRandomHexString(32);
|
||||
// set this to false allow use old token signature and is not recommended
|
||||
// only use for migration reasons, major release will remove this property and
|
||||
// set it by default
|
||||
if (this.security.enhancedLegacySignature === false) {
|
||||
warningUtils.emit(Codes.VERWAR005);
|
||||
}
|
||||
}
|
||||
|
||||
debug('generated a new secret key %s', this.secret?.length);
|
||||
return this.secret;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
"references": [
|
||||
{
|
||||
"path": "../utils"
|
||||
},
|
||||
{
|
||||
"path": "../core/core"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
# @verdaccio/core
|
||||
|
||||
## 6.0.0-6-next.63
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- dc571aab: feat: add forceEnhancedLegacySignature
|
||||
|
||||
## 6.0.0-6-next.62
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 378e907d: fix(core): fix `isObject` function.`isObject(true)` should return false.
|
||||
|
||||
## 6.0.0-6-next.61
|
||||
|
||||
## 6.0.0-6-next.60
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/core",
|
||||
"version": "6.0.0-6-next.61",
|
||||
"version": "6.0.0-6-next.63",
|
||||
"description": "core utilities",
|
||||
"keywords": [
|
||||
"private",
|
||||
@@ -38,13 +38,13 @@
|
||||
"semver": "7.3.8",
|
||||
"ajv": "8.11.2",
|
||||
"process-warning": "1.0.0",
|
||||
"core-js": "3.27.0"
|
||||
"core-js": "3.28.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"lodash": "4.17.21",
|
||||
"typedoc": "0.23.23",
|
||||
"typedoc": "0.23.25",
|
||||
"typedoc-plugin-missing-exports": "latest",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.20"
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.22"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "rimraf ./build",
|
||||
|
||||
@@ -95,14 +95,15 @@ export function normalizeMetadata(manifest: Manifest, name: string): Manifest {
|
||||
* @return {Boolean}
|
||||
*/
|
||||
export function isObject(obj: any): boolean {
|
||||
if (obj === null || typeof obj === 'undefined' || typeof obj === 'string') {
|
||||
return false;
|
||||
}
|
||||
// if (obj === null || typeof obj === 'undefined' || typeof obj === 'string') {
|
||||
// return false;
|
||||
// }
|
||||
|
||||
return (
|
||||
(typeof obj === 'object' || typeof obj.prototype === 'undefined') &&
|
||||
Array.isArray(obj) === false
|
||||
);
|
||||
// return (
|
||||
// (typeof obj === 'object' || typeof obj.prototype === 'undefined') &&
|
||||
// Array.isArray(obj) === false
|
||||
// );
|
||||
return Object.prototype.toString.call(obj) === '[object Object]';
|
||||
}
|
||||
|
||||
export function validatePassword(
|
||||
|
||||
@@ -9,6 +9,7 @@ export enum Codes {
|
||||
VERWAR002 = 'VERWAR002',
|
||||
VERWAR003 = 'VERWAR003',
|
||||
VERWAR004 = 'VERWAR004',
|
||||
VERWAR005 = 'VERWAR005',
|
||||
// deprecation warnings
|
||||
VERDEP003 = 'VERDEP003',
|
||||
}
|
||||
@@ -39,6 +40,12 @@ host:port (e.g. "localhost:4873") or full url '(e.g. "http://localhost:4873/")
|
||||
https://verdaccio.org/docs/en/configuration#listen-port`
|
||||
);
|
||||
|
||||
warningInstance.create(
|
||||
verdaccioWarning,
|
||||
Codes.VERWAR005,
|
||||
'disable enhanced legacy signature is considered a security risk, please reconsider enable it'
|
||||
);
|
||||
|
||||
warningInstance.create(
|
||||
verdaccioDeprecation,
|
||||
Codes.VERDEP003,
|
||||
|
||||
@@ -31,6 +31,7 @@ describe('isObject', () => {
|
||||
expect(isObject(['foo'])).toBeFalsy();
|
||||
expect(isObject(null)).toBeFalsy();
|
||||
expect(isObject(undefined)).toBeFalsy();
|
||||
expect(isObject(true)).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
"lockfile": "1.0.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.20"
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.22"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "rimraf ./build",
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Change Log
|
||||
|
||||
## 11.0.0-6-next.32
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [dc571aab]
|
||||
- @verdaccio/core@6.0.0-6-next.63
|
||||
- @verdaccio/url@11.0.0-6-next.29
|
||||
- @verdaccio/utils@6.0.0-6-next.31
|
||||
|
||||
## 11.0.0-6-next.31
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [378e907d]
|
||||
- @verdaccio/core@6.0.0-6-next.62
|
||||
- @verdaccio/url@11.0.0-6-next.28
|
||||
- @verdaccio/utils@6.0.0-6-next.30
|
||||
|
||||
## 11.0.0-6-next.30
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/tarball",
|
||||
"version": "11.0.0-6-next.30",
|
||||
"version": "11.0.0-6-next.32",
|
||||
"description": "tarball utilities resolver",
|
||||
"keywords": [
|
||||
"private",
|
||||
@@ -34,13 +34,13 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": "4.3.4",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/url": "workspace:11.0.0-6-next.27",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.29",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/url": "workspace:11.0.0-6-next.29",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.31",
|
||||
"lodash": "4.17.21"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.20",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.22",
|
||||
"node-mocks-http": "1.12.1"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
# Change Log
|
||||
|
||||
## 11.0.0-6-next.22
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- dc571aab: feat: add forceEnhancedLegacySignature
|
||||
|
||||
## 11.0.0-6-next.21
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 4fc21146: fix: missing logo on header
|
||||
|
||||
## 11.0.0-6-next.20
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/types",
|
||||
"version": "11.0.0-6-next.20",
|
||||
"version": "11.0.0-6-next.22",
|
||||
"description": "verdaccio types definitions",
|
||||
"keywords": [
|
||||
"private",
|
||||
@@ -41,7 +41,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "16.18.10",
|
||||
"typedoc": "0.23.23"
|
||||
"typedoc": "0.23.25"
|
||||
},
|
||||
"typedoc": {
|
||||
"entryPoint": "./src/types.ts",
|
||||
|
||||
@@ -128,7 +128,6 @@ export type TemplateUIOptions = {
|
||||
base: string;
|
||||
primaryColor: string;
|
||||
version?: string;
|
||||
logoURI?: string;
|
||||
flags: FlagsConfig;
|
||||
} & CommonWebConf;
|
||||
|
||||
@@ -186,6 +185,7 @@ export interface APITokenOptions {
|
||||
}
|
||||
|
||||
export interface Security {
|
||||
enhancedLegacySignature?: boolean;
|
||||
web: JWTOptions;
|
||||
api: APITokenOptions;
|
||||
}
|
||||
@@ -267,8 +267,6 @@ export interface ConfigYaml {
|
||||
flags?: FlagsConfig;
|
||||
userRateLimit?: RateLimit;
|
||||
// internal objects, added by internal yaml to JS config parser
|
||||
// @deprecated use configPath instead
|
||||
config_path?: string;
|
||||
// save the configuration file path
|
||||
configPath?: string;
|
||||
}
|
||||
@@ -283,6 +281,8 @@ export interface Config extends Omit<ConfigYaml, 'packages' | 'security' | 'conf
|
||||
secret: string;
|
||||
// save the configuration file path, it's fails without thi configPath
|
||||
configPath: string;
|
||||
// @deprecated use configPath
|
||||
self_path?: string;
|
||||
// packages from yaml file looks different from packages inside the config file
|
||||
packages: PackageList;
|
||||
// security object defaults is added by the config file but optional in the yaml file
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
# Change Log
|
||||
|
||||
## 11.0.0-6-next.29
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [dc571aab]
|
||||
- @verdaccio/core@6.0.0-6-next.63
|
||||
|
||||
## 11.0.0-6-next.28
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [378e907d]
|
||||
- @verdaccio/core@6.0.0-6-next.62
|
||||
|
||||
## 11.0.0-6-next.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/url",
|
||||
"version": "11.0.0-6-next.27",
|
||||
"version": "11.0.0-6-next.29",
|
||||
"description": "url utilities resolver",
|
||||
"keywords": [
|
||||
"private",
|
||||
@@ -33,13 +33,13 @@
|
||||
"access": "public"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.63",
|
||||
"debug": "4.3.4",
|
||||
"lodash": "4.17.21",
|
||||
"validator": "13.7.0"
|
||||
"validator": "13.9.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.20",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.22",
|
||||
"node-mocks-http": "1.12.1"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,21 @@
|
||||
# @verdaccio/hooks
|
||||
|
||||
## 6.0.0-6-next.33
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [dc571aab]
|
||||
- @verdaccio/core@6.0.0-6-next.63
|
||||
- @verdaccio/logger@6.0.0-6-next.31
|
||||
|
||||
## 6.0.0-6-next.32
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [378e907d]
|
||||
- @verdaccio/core@6.0.0-6-next.62
|
||||
- @verdaccio/logger@6.0.0-6-next.30
|
||||
|
||||
## 6.0.0-6-next.31
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/hooks",
|
||||
"version": "6.0.0-6-next.31",
|
||||
"version": "6.0.0-6-next.33",
|
||||
"description": "loaders logic",
|
||||
"main": "./build/index.js",
|
||||
"types": "build/index.d.ts",
|
||||
@@ -29,18 +29,18 @@
|
||||
"node": ">=16"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.29",
|
||||
"core-js": "3.27.0",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.31",
|
||||
"core-js": "3.28.0",
|
||||
"debug": "4.3.4",
|
||||
"handlebars": "4.7.7",
|
||||
"undici": "4.16.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "16.18.10",
|
||||
"@verdaccio/auth": "workspace:6.0.0-6-next.40",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.20"
|
||||
"@verdaccio/auth": "workspace:6.0.0-6-next.42",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.22"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "rimraf ./build",
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
# @verdaccio/loaders
|
||||
|
||||
## 6.0.0-6-next.32
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/logger@6.0.0-6-next.31
|
||||
|
||||
## 6.0.0-6-next.31
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/logger@6.0.0-6-next.30
|
||||
|
||||
## 6.0.0-6-next.30
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/loaders",
|
||||
"version": "6.0.0-6-next.30",
|
||||
"version": "6.0.0-6-next.32",
|
||||
"description": "loaders logic",
|
||||
"main": "./build/index.js",
|
||||
"types": "build/index.d.ts",
|
||||
@@ -13,14 +13,14 @@
|
||||
"url": "https://github.com/verdaccio/verdaccio"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.29",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.31",
|
||||
"debug": "4.3.4",
|
||||
"lodash": "4.17.21"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.20",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.22",
|
||||
"@verdaccio-scope/verdaccio-auth-foo": "0.0.2",
|
||||
"verdaccio-auth-memory": "workspace:*",
|
||||
"customprefix-auth": "1.0.0-6-next.0"
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
# @verdaccio/logger-7
|
||||
|
||||
## 6.0.0-6-next.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/logger-commons@6.0.0-6-next.31
|
||||
|
||||
## 6.0.0-6-next.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/logger-commons@6.0.0-6-next.30
|
||||
|
||||
## 6.0.0-6-next.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/logger-7",
|
||||
"version": "6.0.0-6-next.6",
|
||||
"version": "6.0.0-6-next.8",
|
||||
"description": "logger for verdaccio 5.x version",
|
||||
"main": "./build/index.js",
|
||||
"types": "./build/index.d.ts",
|
||||
@@ -38,11 +38,11 @@
|
||||
"build": "pnpm run build:js && pnpm run build:types"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/logger-commons": "workspace:6.0.0-6-next.29",
|
||||
"@verdaccio/logger-commons": "workspace:6.0.0-6-next.31",
|
||||
"pino": "7.11.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.20"
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.22"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
# @verdaccio/logger-commons
|
||||
|
||||
## 6.0.0-6-next.31
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [dc571aab]
|
||||
- @verdaccio/core@6.0.0-6-next.63
|
||||
|
||||
## 6.0.0-6-next.30
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [378e907d]
|
||||
- @verdaccio/core@6.0.0-6-next.62
|
||||
|
||||
## 6.0.0-6-next.29
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/logger-commons",
|
||||
"version": "6.0.0-6-next.29",
|
||||
"version": "6.0.0-6-next.31",
|
||||
"description": "logger",
|
||||
"main": "./build/index.js",
|
||||
"types": "./build/index.d.ts",
|
||||
@@ -38,14 +38,14 @@
|
||||
"build": "pnpm run build:js && pnpm run build:types"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/logger-prettify": "workspace:6.0.0-6-next.9",
|
||||
"debug": "4.3.4",
|
||||
"colorette": "2.0.19"
|
||||
},
|
||||
"devDependencies": {
|
||||
"pino": "8.8.0",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.20"
|
||||
"pino": "8.10.0",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.22"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
"sonic-boom": "3.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"pino": "8.8.0"
|
||||
"pino": "8.10.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
# @verdaccio/logger
|
||||
|
||||
## 6.0.0-6-next.31
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/logger-commons@6.0.0-6-next.31
|
||||
|
||||
## 6.0.0-6-next.30
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/logger-commons@6.0.0-6-next.30
|
||||
|
||||
## 6.0.0-6-next.29
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/logger",
|
||||
"version": "6.0.0-6-next.29",
|
||||
"version": "6.0.0-6-next.31",
|
||||
"description": "logger",
|
||||
"main": "./build/index.js",
|
||||
"types": "./build/index.d.ts",
|
||||
@@ -38,11 +38,11 @@
|
||||
"build": "pnpm run build:js && pnpm run build:types"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/logger-commons": "workspace:6.0.0-6-next.29",
|
||||
"pino": "8.8.0"
|
||||
"@verdaccio/logger-commons": "workspace:6.0.0-6-next.31",
|
||||
"pino": "8.10.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.20"
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.22"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
|
||||
@@ -1,5 +1,27 @@
|
||||
# @verdaccio/middleware
|
||||
|
||||
## 6.0.0-6-next.42
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [ddb6a223]
|
||||
- Updated dependencies [dc571aab]
|
||||
- @verdaccio/config@6.0.0-6-next.63
|
||||
- @verdaccio/core@6.0.0-6-next.63
|
||||
- @verdaccio/url@11.0.0-6-next.29
|
||||
- @verdaccio/utils@6.0.0-6-next.31
|
||||
|
||||
## 6.0.0-6-next.41
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 4fc21146: fix: missing logo on header
|
||||
- Updated dependencies [378e907d]
|
||||
- @verdaccio/core@6.0.0-6-next.62
|
||||
- @verdaccio/url@11.0.0-6-next.28
|
||||
- @verdaccio/config@6.0.0-6-next.62
|
||||
- @verdaccio/utils@6.0.0-6-next.30
|
||||
|
||||
## 6.0.0-6-next.40
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/middleware",
|
||||
"version": "6.0.0-6-next.40",
|
||||
"version": "6.0.0-6-next.42",
|
||||
"description": "express middleware utils",
|
||||
"main": "./build/index.js",
|
||||
"types": "build/index.d.ts",
|
||||
@@ -38,12 +38,12 @@
|
||||
"build": "pnpm run build:js && pnpm run build:types"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.29",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.61",
|
||||
"@verdaccio/url": "workspace:11.0.0-6-next.27",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.31",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.63",
|
||||
"@verdaccio/url": "workspace:11.0.0-6-next.29",
|
||||
"debug": "4.3.4",
|
||||
"lru-cache": "7.14.1",
|
||||
"lru-cache": "7.16.1",
|
||||
"express": "4.18.2",
|
||||
"lodash": "4.17.21",
|
||||
"mime": "2.6.0",
|
||||
@@ -54,7 +54,7 @@
|
||||
"url": "https://opencollective.com/verdaccio"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.29",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.31",
|
||||
"body-parser": "1.20.1",
|
||||
"supertest": "6.3.3"
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import { HTTP_STATUS } from '@verdaccio/core';
|
||||
import { isURLhasValidProtocol } from '@verdaccio/url';
|
||||
|
||||
import { setSecurityWebHeaders } from './security';
|
||||
import renderHTML, { isHTTPProtocol } from './utils/renderHTML';
|
||||
import renderHTML from './utils/renderHTML';
|
||||
|
||||
const debug = buildDebug('verdaccio:web:render');
|
||||
|
||||
@@ -31,23 +31,10 @@ export function renderWebMiddleware(config, tokenMiddleware, pluginOptions) {
|
||||
if (typeof tokenMiddleware === 'function') {
|
||||
router.use(tokenMiddleware);
|
||||
}
|
||||
|
||||
router.use(setSecurityWebHeaders);
|
||||
|
||||
// Logo
|
||||
let logoURI = config?.web?.logo ?? '';
|
||||
if (logoURI && !isURLhasValidProtocol(logoURI)) {
|
||||
// URI related to a local file
|
||||
|
||||
// Note: `path.join` will break on Windows, because it transforms `/` to `\`
|
||||
// Use POSIX version `path.posix.join` instead.
|
||||
logoURI = path.posix.join('/-/static/', path.basename(logoURI));
|
||||
router.get(logoURI, function (req, res, next) {
|
||||
res.sendFile(path.resolve(config.web.logo), sendFileCallback(next));
|
||||
debug('render static');
|
||||
});
|
||||
}
|
||||
|
||||
// Static
|
||||
// any match within the static is routed to the file system
|
||||
router.get('/-/static/*', function (req, res, next) {
|
||||
const filename = req.params[0];
|
||||
const file = `${staticPath}/${filename}`;
|
||||
@@ -55,13 +42,13 @@ export function renderWebMiddleware(config, tokenMiddleware, pluginOptions) {
|
||||
res.sendFile(file, sendFileCallback(next));
|
||||
});
|
||||
|
||||
// logo
|
||||
if (config?.web?.logo && !isHTTPProtocol(config?.web?.logo)) {
|
||||
// check the origin of the logo
|
||||
if (config?.web?.logo && !isURLhasValidProtocol(config?.web?.logo)) {
|
||||
// URI related to a local file
|
||||
const absoluteLocalFile = path.posix.resolve(config.web.logo);
|
||||
debug('serve local logo %s', absoluteLocalFile);
|
||||
try {
|
||||
// TODO: remove existsSync by async alternative
|
||||
// TODO: replace existsSync by async alternative
|
||||
if (
|
||||
fs.existsSync(absoluteLocalFile) &&
|
||||
typeof fs.accessSync(absoluteLocalFile, fs.constants.R_OK) === 'undefined'
|
||||
|
||||
@@ -6,6 +6,7 @@ import { URL } from 'url';
|
||||
import { WEB_TITLE } from '@verdaccio/config';
|
||||
import { HEADERS } from '@verdaccio/core';
|
||||
import { TemplateUIOptions } from '@verdaccio/types';
|
||||
import { isURLhasValidProtocol } from '@verdaccio/url';
|
||||
import { getPublicUrl } from '@verdaccio/url';
|
||||
|
||||
import renderTemplate from './template';
|
||||
@@ -21,20 +22,12 @@ const defaultManifestFiles = {
|
||||
ico: 'favicon.ico',
|
||||
};
|
||||
|
||||
/**
|
||||
* Check if URI is starting with "http://", "https://" or "//"
|
||||
* @param {string} uri
|
||||
*/
|
||||
export function isHTTPProtocol(uri: string): boolean {
|
||||
return /^(https?:)?\/\//.test(uri);
|
||||
}
|
||||
|
||||
export function resolveLogo(config, req) {
|
||||
const isLocalFile = config?.web?.logo && !isHTTPProtocol(config?.web?.logo);
|
||||
const isLocalFile = config?.web?.logo && !isURLhasValidProtocol(config?.web?.logo);
|
||||
|
||||
if (isLocalFile) {
|
||||
return `${getPublicUrl(config?.url_prefix, req)}-/static/${path.basename(config?.web?.logo)}`;
|
||||
} else if (isHTTPProtocol(config?.web?.logo)) {
|
||||
} else if (isURLhasValidProtocol(config?.web?.logo)) {
|
||||
return config?.web?.logo;
|
||||
} else {
|
||||
return '';
|
||||
@@ -53,7 +46,7 @@ export default function renderHTML(config, manifest, manifestFiles, req, res) {
|
||||
const title = config?.web?.title ?? WEB_TITLE;
|
||||
const login = hasLogin(config);
|
||||
const scope = config?.web?.scope ?? '';
|
||||
const logoURI = resolveLogo(config, req);
|
||||
const logo = resolveLogo(config, req);
|
||||
const pkgManagers = config?.web?.pkgManagers ?? ['yarn', 'pnpm', 'npm'];
|
||||
const version = config?.web?.version;
|
||||
const flags = {
|
||||
@@ -94,7 +87,7 @@ export default function renderHTML(config, manifest, manifestFiles, req, res) {
|
||||
base,
|
||||
primaryColor,
|
||||
version,
|
||||
logoURI,
|
||||
logo,
|
||||
flags,
|
||||
login,
|
||||
pkgManagers,
|
||||
|
||||
BIN
packages/middleware/test/config/dark-logo.png
Normal file
BIN
packages/middleware/test/config/dark-logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.6 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user