Compare commits
17 Commits
@verdaccio
...
@verdaccio
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0a6668c060 | ||
|
|
fa274ee44d | ||
|
|
ebc0d5a201 | ||
|
|
7b8c250869 | ||
|
|
631abe1ac1 | ||
|
|
4122520a19 | ||
|
|
9943e2b189 | ||
|
|
7abfb6aa3d | ||
|
|
5ba6cd1533 | ||
|
|
859c51cd44 | ||
|
|
079faf23ca | ||
|
|
deec651a7f | ||
|
|
7f9db75ff7 | ||
|
|
dc2a373bd8 | ||
|
|
f61747543c | ||
|
|
a1986e098d | ||
|
|
6c3539ca28 |
8
.changeset/big-years-repair.md
Normal file
8
.changeset/big-years-repair.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
'@verdaccio/api': minor
|
||||
'@verdaccio/middleware': minor
|
||||
'@verdaccio/utils': minor
|
||||
'@verdaccio/web': minor
|
||||
---
|
||||
|
||||
feat: expose middleware utils
|
||||
8
.changeset/eight-bottles-own.md
Normal file
8
.changeset/eight-bottles-own.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
'@verdaccio/middleware': patch
|
||||
'@verdaccio/server': patch
|
||||
'@verdaccio/test-helper': patch
|
||||
'@verdaccio/local-publish': patch
|
||||
---
|
||||
|
||||
fix: extract logger from middleware
|
||||
25
.changeset/fifty-stingrays-fold.md
Normal file
25
.changeset/fifty-stingrays-fold.md
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
'@verdaccio/api': minor
|
||||
'@verdaccio/auth': minor
|
||||
'@verdaccio/cli': minor
|
||||
'@verdaccio/types': minor
|
||||
'@verdaccio/hooks': minor
|
||||
'@verdaccio/loaders': minor
|
||||
'@verdaccio/middleware': minor
|
||||
'@verdaccio/node-api': minor
|
||||
'verdaccio-audit': minor
|
||||
'verdaccio-auth-memory': minor
|
||||
'verdaccio-htpasswd': minor
|
||||
'@verdaccio/local-storage': minor
|
||||
'@verdaccio/proxy': minor
|
||||
'@verdaccio/server': minor
|
||||
'@verdaccio/server-fastify': minor
|
||||
'@verdaccio/store': minor
|
||||
'verdaccio': minor
|
||||
'@verdaccio/web': minor
|
||||
'@verdaccio/logger': minor
|
||||
'@verdaccio/logger-7': minor
|
||||
'@verdaccio/logger-commons': minor
|
||||
---
|
||||
|
||||
feat: refactor logger
|
||||
@@ -54,12 +54,15 @@
|
||||
"@verdaccio/e2e-cli-npm9": "1.0.1-6-next.5",
|
||||
"@verdaccio/e2e-ui": "2.0.0-6-next.3",
|
||||
"customprefix-auth": "0.0.1",
|
||||
"@verdaccio/crowdin-translations": "1.0.0"
|
||||
"@verdaccio/crowdin-translations": "1.0.0",
|
||||
"@verdaccio/logger-7": "6.0.0-6-next.1",
|
||||
"@verdaccio/logger-commons": "6.0.0-6-next.25"
|
||||
},
|
||||
"changesets": [
|
||||
"afraid-mice-obey",
|
||||
"angry-nails-appear",
|
||||
"big-lobsters-sin",
|
||||
"big-years-repair",
|
||||
"brave-seahorses-press",
|
||||
"bright-poems-obey",
|
||||
"brown-cycles-laugh",
|
||||
@@ -72,6 +75,7 @@
|
||||
"dry-planes-tap",
|
||||
"dull-monkeys-search",
|
||||
"early-jokes-nail",
|
||||
"eight-bottles-own",
|
||||
"eleven-brooms-hunt",
|
||||
"eleven-spoons-matter",
|
||||
"fair-lemons-beam",
|
||||
@@ -80,6 +84,7 @@
|
||||
"few-cooks-destroy",
|
||||
"few-mangos-grow",
|
||||
"fifty-jars-rest",
|
||||
"fifty-stingrays-fold",
|
||||
"fluffy-papayas-lay",
|
||||
"four-ways-try",
|
||||
"fuzzy-drinks-taste",
|
||||
@@ -147,6 +152,7 @@
|
||||
"three-pots-sit",
|
||||
"tiny-seals-join",
|
||||
"tricky-taxis-watch",
|
||||
"twelve-crabs-guess",
|
||||
"two-dolls-check",
|
||||
"unlucky-hairs-wonder",
|
||||
"wild-jokes-beam",
|
||||
|
||||
5
.changeset/twelve-crabs-guess.md
Normal file
5
.changeset/twelve-crabs-guess.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@verdaccio/middleware': patch
|
||||
---
|
||||
|
||||
chore: bumb up package
|
||||
6
.github/workflows/codeql-analysis.yml
vendored
6
.github/workflows/codeql-analysis.yml
vendored
@@ -34,7 +34,7 @@ jobs:
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@515828d97454b8354517688ddc5b48402b723750 # tag=v2
|
||||
uses: github/codeql-action/init@3ebbd71c74ef574dbc558c82f70e52732c8b44fe # tag=v2
|
||||
|
||||
# Override language selection by uncommenting this and choosing your languages
|
||||
# with:
|
||||
@@ -42,7 +42,7 @@ jobs:
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@515828d97454b8354517688ddc5b48402b723750 # tag=v2
|
||||
uses: github/codeql-action/autobuild@3ebbd71c74ef574dbc558c82f70e52732c8b44fe # tag=v2
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
@@ -56,4 +56,4 @@ jobs:
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@515828d97454b8354517688ddc5b48402b723750 # tag=v2
|
||||
uses: github/codeql-action/analyze@3ebbd71c74ef574dbc558c82f70e52732c8b44fe # tag=v2
|
||||
|
||||
7
.github/workflows/e2e-ci.yml
vendored
7
.github/workflows/e2e-ci.yml
vendored
@@ -75,14 +75,15 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
pkg: [npm6, npm7, npm8, npm9, pnpm6, pnpm7, yarn1, yarn2, yarn3, yarn4]
|
||||
name: ${{ matrix.pkg }} / ${{ matrix.os }}
|
||||
pkg: [npm6, npm7, npm8, npm9, pnpm6, pnpm7, yarn1, yarn2, yarn3, yarn4]
|
||||
node: [16, 18, 19]
|
||||
name: ${{ matrix.pkg }}/ ubuntu-latest / ${{ matrix.node }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # tag=v3
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
node-version: ${{ matrix.node }}
|
||||
- name: Install pnpm
|
||||
run: npm i pnpm@6.32.15 -g
|
||||
- uses: actions/cache@58c146cc91c5b9e778e71775dfe9bf1442ad9a12 # v3
|
||||
|
||||
2
.github/workflows/website.yml
vendored
2
.github/workflows/website.yml
vendored
@@ -109,7 +109,7 @@ jobs:
|
||||
|
||||
- name: Format lighthouse score
|
||||
id: format_lighthouse_score
|
||||
uses: actions/github-script@d556feaca394842dc55e4734bf3bb9f685482fa0 # tag=v6
|
||||
uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # tag=v6
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
script: |
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
"main": "./build/index.js",
|
||||
"types": "./build/index.d.ts",
|
||||
"devDependencies": {
|
||||
"verdaccio": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.55",
|
||||
"verdaccio": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.19",
|
||||
"yaml": "2.2.0",
|
||||
"debug": "4.3.4",
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
"name": "@verdaccio/e2e-ui",
|
||||
"version": "2.0.0-6-next.3",
|
||||
"devDependencies": {
|
||||
"verdaccio": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/test-helper": "workspace:2.0.0-6-next.6",
|
||||
"verdaccio": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/test-helper": "workspace:2.0.0-6-next.7",
|
||||
"debug": "4.3.4",
|
||||
"cypress": "11.2.0"
|
||||
},
|
||||
|
||||
11
package.json
11
package.json
@@ -73,8 +73,8 @@
|
||||
"@types/react-dom": "18.0.9",
|
||||
"@types/react-router-dom": "5.3.3",
|
||||
"@types/react-virtualized": "9.21.21",
|
||||
"@typescript-eslint/eslint-plugin": "5.47.0",
|
||||
"@typescript-eslint/parser": "5.47.0",
|
||||
"@typescript-eslint/eslint-plugin": "5.49.0",
|
||||
"@typescript-eslint/parser": "5.49.0",
|
||||
"@verdaccio/crowdin-translations": "workspace:*",
|
||||
"@verdaccio/eslint-config": "workspace:*",
|
||||
"@verdaccio/types": "workspace:*",
|
||||
@@ -90,7 +90,7 @@
|
||||
"debug": "4.3.4",
|
||||
"detect-secrets": "1.0.6",
|
||||
"jest-diff": "29.3.1",
|
||||
"eslint": "8.30.0",
|
||||
"eslint": "8.33.0",
|
||||
"fs-extra": "10.1.0",
|
||||
"husky": "7.0.4",
|
||||
"in-publish": "2.0.1",
|
||||
@@ -105,7 +105,7 @@
|
||||
"nock": "13.2.9",
|
||||
"nodemon": "2.0.20",
|
||||
"npm-run-all": "4.1.5",
|
||||
"prettier": "2.8.1",
|
||||
"prettier": "2.8.3",
|
||||
"rimraf": "3.0.2",
|
||||
"selfsigned": "1.10.14",
|
||||
"supertest": "6.3.3",
|
||||
@@ -157,7 +157,8 @@
|
||||
"crowdin:sync": "pnpm crowdin:upload && pnpm crowdin:download --verbose",
|
||||
"postinstall": "husky install",
|
||||
"local:registry": "pnpm start --filter ...@verdaccio/local-publish",
|
||||
"local:publish": "cross-env npm_config_registry=http://localhost:4873 pnpm ci:publish",
|
||||
"local:snapshots": "changeset version --snapshot",
|
||||
"local:publish": "cross-env npm_config_registry=http://localhost:4873 pnpm ci:publish -- --no-git-tag",
|
||||
"local:publish:release": "concurrently \"pnpm local:registry\" \"pnpm local:publish\""
|
||||
},
|
||||
"pnpm": {
|
||||
|
||||
@@ -1,5 +1,48 @@
|
||||
# @verdaccio/api
|
||||
|
||||
## 6.0.0-6-next.41
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [fa274ee4]
|
||||
- @verdaccio/middleware@6.0.0-6-next.37
|
||||
- @verdaccio/core@6.0.0-6-next.58
|
||||
- @verdaccio/config@6.0.0-6-next.58
|
||||
- @verdaccio/auth@6.0.0-6-next.37
|
||||
- @verdaccio/store@6.0.0-6-next.38
|
||||
- @verdaccio/utils@6.0.0-6-next.26
|
||||
- @verdaccio/logger@6.0.0-6-next.26
|
||||
|
||||
## 6.0.0-6-next.40
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [9943e2b1]
|
||||
- @verdaccio/middleware@6.0.0-6-next.36
|
||||
- @verdaccio/store@6.0.0-6-next.37
|
||||
- @verdaccio/core@6.0.0-6-next.57
|
||||
- @verdaccio/config@6.0.0-6-next.57
|
||||
- @verdaccio/auth@6.0.0-6-next.36
|
||||
- @verdaccio/logger@6.0.0-6-next.25
|
||||
- @verdaccio/utils@6.0.0-6-next.25
|
||||
|
||||
## 6.0.0-6-next.39
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- a1986e09: feat: expose middleware utils
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a1986e09]
|
||||
- @verdaccio/middleware@6.0.0-6-next.35
|
||||
- @verdaccio/utils@6.0.0-6-next.24
|
||||
- @verdaccio/auth@6.0.0-6-next.35
|
||||
- @verdaccio/config@6.0.0-6-next.56
|
||||
- @verdaccio/store@6.0.0-6-next.36
|
||||
- @verdaccio/core@6.0.0-6-next.56
|
||||
- @verdaccio/logger@6.0.0-6-next.24
|
||||
|
||||
## 6.0.0-6-next.38
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/api",
|
||||
"version": "6.0.0-6-next.38",
|
||||
"version": "6.0.0-6-next.41",
|
||||
"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.34",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.23",
|
||||
"@verdaccio/middleware": "workspace:6.0.0-6-next.34",
|
||||
"@verdaccio/store": "workspace:6.0.0-6-next.35",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.23",
|
||||
"@verdaccio/auth": "workspace:6.0.0-6-next.37",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.26",
|
||||
"@verdaccio/middleware": "workspace:6.0.0-6-next.37",
|
||||
"@verdaccio/store": "workspace:6.0.0-6-next.38",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.26",
|
||||
"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.44",
|
||||
"@verdaccio/server": "workspace:6.0.0-6-next.47",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.19",
|
||||
"@verdaccio/test-helper": "workspace:2.0.0-6-next.6",
|
||||
"@verdaccio/test-helper": "workspace:2.0.0-6-next.7",
|
||||
"supertest": "6.3.3",
|
||||
"nock": "13.2.9",
|
||||
"mockdate": "3.0.5"
|
||||
|
||||
@@ -4,13 +4,17 @@ import mime from 'mime';
|
||||
|
||||
import { Auth } from '@verdaccio/auth';
|
||||
import { constants, errorUtils } from '@verdaccio/core';
|
||||
import { logger } from '@verdaccio/logger';
|
||||
import { allow, media } from '@verdaccio/middleware';
|
||||
import { Storage } from '@verdaccio/store';
|
||||
|
||||
import { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/custom';
|
||||
|
||||
export default function (route: Router, auth: Auth, storage: Storage): void {
|
||||
const can = allow(auth);
|
||||
const can = allow(auth, {
|
||||
beforeAll: (a, b) => logger.trace(a, b),
|
||||
afterAll: (a, b) => logger.trace(a, b),
|
||||
});
|
||||
const addTagPackageVersionMiddleware = async function (
|
||||
req: $RequestExtend,
|
||||
res: $ResponseExtend,
|
||||
|
||||
@@ -42,7 +42,6 @@ export default function (config: Config, auth: Auth, storage: Storage): Router {
|
||||
// TODO: For some reason? what reason?
|
||||
app.param('_rev', match(/^-rev$/));
|
||||
app.param('org_couchdb_user', match(/^org\.couchdb\.user:/));
|
||||
app.param('anything', match(/.*/));
|
||||
app.use(auth.apiJWTmiddleware());
|
||||
app.use(bodyParser.json({ strict: false, limit: config.max_body_size || '10mb' }));
|
||||
// @ts-ignore
|
||||
|
||||
@@ -3,6 +3,7 @@ import { Router } from 'express';
|
||||
|
||||
import { Auth } from '@verdaccio/auth';
|
||||
import { HEADERS, HEADER_TYPE, stringUtils } from '@verdaccio/core';
|
||||
import { logger } from '@verdaccio/logger';
|
||||
import { allow } from '@verdaccio/middleware';
|
||||
import { Storage } from '@verdaccio/store';
|
||||
|
||||
@@ -11,8 +12,10 @@ import { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/cust
|
||||
const debug = buildDebug('verdaccio:api:package');
|
||||
|
||||
export default function (route: Router, auth: Auth, storage: Storage): void {
|
||||
const can = allow(auth);
|
||||
|
||||
const can = allow(auth, {
|
||||
beforeAll: (a, b) => logger.trace(a, b),
|
||||
afterAll: (a, b) => logger.trace(a, b),
|
||||
});
|
||||
route.get(
|
||||
'/:package/:version?',
|
||||
can('access'),
|
||||
@@ -58,13 +61,13 @@ export default function (route: Router, auth: Auth, storage: Storage): void {
|
||||
);
|
||||
|
||||
route.get(
|
||||
'/:pkg/-/:filename',
|
||||
'/:package/-/:filename',
|
||||
can('access'),
|
||||
async function (req: $RequestExtend, res: $ResponseExtend, next): Promise<void> {
|
||||
const { pkg, filename } = req.params;
|
||||
const { package: pkgName, filename } = req.params;
|
||||
const abort = new AbortController();
|
||||
try {
|
||||
const stream = (await storage.getTarballNext(pkg, filename, {
|
||||
const stream = (await storage.getTarballNext(pkgName, filename, {
|
||||
signal: abort.signal,
|
||||
// TODO: review why this param
|
||||
// enableRemote: true,
|
||||
|
||||
@@ -93,7 +93,10 @@ const debug = buildDebug('verdaccio:api:publish');
|
||||
*
|
||||
*/
|
||||
export default function publish(router: Router, auth: Auth, storage: Storage): void {
|
||||
const can = allow(auth);
|
||||
const can = allow(auth, {
|
||||
beforeAll: (a, b) => logger.trace(a, b),
|
||||
afterAll: (a, b) => logger.trace(a, b),
|
||||
});
|
||||
router.put(
|
||||
'/:package',
|
||||
can('publish'),
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"path": "../hooks"
|
||||
},
|
||||
{
|
||||
"path": "../logger"
|
||||
"path": "../logger/logger"
|
||||
},
|
||||
{
|
||||
"path": "../middleware"
|
||||
|
||||
@@ -1,5 +1,39 @@
|
||||
# @verdaccio/auth
|
||||
|
||||
## 6.0.0-6-next.37
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.58
|
||||
- @verdaccio/config@6.0.0-6-next.58
|
||||
- @verdaccio/loaders@6.0.0-6-next.27
|
||||
- verdaccio-htpasswd@11.0.0-6-next.28
|
||||
- @verdaccio/utils@6.0.0-6-next.26
|
||||
- @verdaccio/logger@6.0.0-6-next.26
|
||||
|
||||
## 6.0.0-6-next.36
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.57
|
||||
- @verdaccio/config@6.0.0-6-next.57
|
||||
- @verdaccio/loaders@6.0.0-6-next.26
|
||||
- @verdaccio/logger@6.0.0-6-next.25
|
||||
- verdaccio-htpasswd@11.0.0-6-next.27
|
||||
- @verdaccio/utils@6.0.0-6-next.25
|
||||
|
||||
## 6.0.0-6-next.35
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a1986e09]
|
||||
- @verdaccio/utils@6.0.0-6-next.24
|
||||
- @verdaccio/config@6.0.0-6-next.56
|
||||
- @verdaccio/loaders@6.0.0-6-next.25
|
||||
- verdaccio-htpasswd@11.0.0-6-next.26
|
||||
- @verdaccio/core@6.0.0-6-next.56
|
||||
- @verdaccio/logger@6.0.0-6-next.24
|
||||
|
||||
## 6.0.0-6-next.34
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/auth",
|
||||
"version": "6.0.0-6-next.34",
|
||||
"version": "6.0.0-6-next.37",
|
||||
"description": "logger",
|
||||
"main": "./build/index.js",
|
||||
"types": "./build/index.d.ts",
|
||||
@@ -39,16 +39,16 @@
|
||||
},
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/loaders": "workspace:6.0.0-6-next.24",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.23",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.23",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/loaders": "workspace:6.0.0-6-next.27",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.26",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.26",
|
||||
"debug": "4.3.4",
|
||||
"express": "4.18.2",
|
||||
"jsonwebtoken": "9.0.0",
|
||||
"lodash": "4.17.21",
|
||||
"verdaccio-htpasswd": "workspace:11.0.0-6-next.25"
|
||||
"verdaccio-htpasswd": "workspace:11.0.0-6-next.28"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.19"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"path": "../loaders"
|
||||
},
|
||||
{
|
||||
"path": "../logger"
|
||||
"path": "../logger/logger"
|
||||
},
|
||||
{
|
||||
"path": "../utils"
|
||||
|
||||
@@ -1,5 +1,32 @@
|
||||
# @verdaccio/cli
|
||||
|
||||
## 6.0.0-6-next.58
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/node-api@6.0.0-6-next.58
|
||||
- @verdaccio/core@6.0.0-6-next.58
|
||||
- @verdaccio/config@6.0.0-6-next.58
|
||||
- @verdaccio/logger@6.0.0-6-next.26
|
||||
|
||||
## 6.0.0-6-next.57
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/node-api@6.0.0-6-next.57
|
||||
- @verdaccio/core@6.0.0-6-next.57
|
||||
- @verdaccio/config@6.0.0-6-next.57
|
||||
- @verdaccio/logger@6.0.0-6-next.25
|
||||
|
||||
## 6.0.0-6-next.56
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/config@6.0.0-6-next.56
|
||||
- @verdaccio/node-api@6.0.0-6-next.56
|
||||
- @verdaccio/core@6.0.0-6-next.56
|
||||
- @verdaccio/logger@6.0.0-6-next.24
|
||||
|
||||
## 6.0.0-6-next.55
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/cli",
|
||||
"version": "6.0.0-6-next.55",
|
||||
"version": "6.0.0-6-next.58",
|
||||
"author": {
|
||||
"name": "Juan Picado",
|
||||
"email": "juanpicado19@gmail.com"
|
||||
@@ -44,10 +44,10 @@
|
||||
"start": "ts-node src/index.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.23",
|
||||
"@verdaccio/node-api": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.26",
|
||||
"@verdaccio/node-api": "workspace:6.0.0-6-next.58",
|
||||
"clipanion": "3.1.0",
|
||||
"envinfo": "7.8.1",
|
||||
"kleur": "3.0.3",
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"path": "../node-api"
|
||||
},
|
||||
{
|
||||
"path": "../logger"
|
||||
"path": "../logger/logger"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,5 +1,27 @@
|
||||
# @verdaccio/config
|
||||
|
||||
## 6.0.0-6-next.58
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.58
|
||||
- @verdaccio/utils@6.0.0-6-next.26
|
||||
|
||||
## 6.0.0-6-next.57
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.57
|
||||
- @verdaccio/utils@6.0.0-6-next.25
|
||||
|
||||
## 6.0.0-6-next.56
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a1986e09]
|
||||
- @verdaccio/utils@6.0.0-6-next.24
|
||||
- @verdaccio/core@6.0.0-6-next.56
|
||||
|
||||
## 6.0.0-6-next.55
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/config",
|
||||
"version": "6.0.0-6-next.55",
|
||||
"version": "6.0.0-6-next.58",
|
||||
"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.55",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.23",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.26",
|
||||
"debug": "4.3.4",
|
||||
"yaml": "2.2.0",
|
||||
"lodash": "4.17.21",
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @verdaccio/core
|
||||
|
||||
## 6.0.0-6-next.58
|
||||
|
||||
## 6.0.0-6-next.57
|
||||
|
||||
## 6.0.0-6-next.56
|
||||
|
||||
## 6.0.0-6-next.55
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/core",
|
||||
"version": "6.0.0-6-next.55",
|
||||
"version": "6.0.0-6-next.58",
|
||||
"description": "core utilities",
|
||||
"keywords": [
|
||||
"private",
|
||||
|
||||
@@ -1,5 +1,30 @@
|
||||
# Change Log
|
||||
|
||||
## 11.0.0-6-next.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.58
|
||||
- @verdaccio/url@11.0.0-6-next.24
|
||||
- @verdaccio/utils@6.0.0-6-next.26
|
||||
|
||||
## 11.0.0-6-next.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.57
|
||||
- @verdaccio/url@11.0.0-6-next.23
|
||||
- @verdaccio/utils@6.0.0-6-next.25
|
||||
|
||||
## 11.0.0-6-next.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a1986e09]
|
||||
- @verdaccio/utils@6.0.0-6-next.24
|
||||
- @verdaccio/core@6.0.0-6-next.56
|
||||
- @verdaccio/url@11.0.0-6-next.22
|
||||
|
||||
## 11.0.0-6-next.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/tarball",
|
||||
"version": "11.0.0-6-next.24",
|
||||
"version": "11.0.0-6-next.27",
|
||||
"description": "tarball utilities resolver",
|
||||
"keywords": [
|
||||
"private",
|
||||
@@ -34,9 +34,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": "4.3.4",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/url": "workspace:11.0.0-6-next.21",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.23",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/url": "workspace:11.0.0-6-next.24",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.26",
|
||||
"lodash": "4.17.21"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { PackageAccess, PackageList } from './manifest';
|
||||
import { PackageAccess, PackageList } from '@verdaccio/types/src/manifest';
|
||||
|
||||
export type TypeToken = 'Bearer' | 'Basic';
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
export * from './storage';
|
||||
export * from '@verdaccio/types/src/plugins/storage';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Callback, CallbackAction } from '../commons';
|
||||
import { Manifest, Token } from '../manifest';
|
||||
import { Callback, CallbackAction } from '@verdaccio/types/src/commons';
|
||||
import { Manifest, Token } from '@verdaccio/types/src/manifest';
|
||||
|
||||
export type StorageList = string[];
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
export * from './plugins';
|
||||
export * from './manifest';
|
||||
export * from './search';
|
||||
export * from './commons';
|
||||
export * from './configuration';
|
||||
export * from '@verdaccio/types/src/plugins';
|
||||
export * from '@verdaccio/types/src/manifest';
|
||||
export * from '@verdaccio/types/src/search';
|
||||
export * from '@verdaccio/types/src/commons';
|
||||
export * from '@verdaccio/types/src/configuration';
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Change Log
|
||||
|
||||
## 11.0.0-6-next.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.58
|
||||
|
||||
## 11.0.0-6-next.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.57
|
||||
|
||||
## 11.0.0-6-next.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.56
|
||||
|
||||
## 11.0.0-6-next.21
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/url",
|
||||
"version": "11.0.0-6-next.21",
|
||||
"version": "11.0.0-6-next.24",
|
||||
"description": "url utilities resolver",
|
||||
"keywords": [
|
||||
"private",
|
||||
@@ -33,7 +33,7 @@
|
||||
"access": "public"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.58",
|
||||
"debug": "4.3.4",
|
||||
"lodash": "4.17.21",
|
||||
"validator": "13.7.0"
|
||||
|
||||
@@ -1,5 +1,26 @@
|
||||
# @verdaccio/hooks
|
||||
|
||||
## 6.0.0-6-next.28
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.58
|
||||
- @verdaccio/logger@6.0.0-6-next.26
|
||||
|
||||
## 6.0.0-6-next.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.57
|
||||
- @verdaccio/logger@6.0.0-6-next.25
|
||||
|
||||
## 6.0.0-6-next.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.56
|
||||
- @verdaccio/logger@6.0.0-6-next.24
|
||||
|
||||
## 6.0.0-6-next.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/hooks",
|
||||
"version": "6.0.0-6-next.25",
|
||||
"version": "6.0.0-6-next.28",
|
||||
"description": "loaders logic",
|
||||
"main": "./build/index.js",
|
||||
"types": "build/index.d.ts",
|
||||
@@ -29,8 +29,8 @@
|
||||
"node": ">=16"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.23",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.26",
|
||||
"core-js": "3.27.0",
|
||||
"debug": "4.3.4",
|
||||
"handlebars": "4.7.7",
|
||||
@@ -38,8 +38,8 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "16.18.10",
|
||||
"@verdaccio/auth": "workspace:6.0.0-6-next.34",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/auth": "workspace:6.0.0-6-next.37",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.19"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
"path": "../config"
|
||||
},
|
||||
{
|
||||
"path": "../logger"
|
||||
"path": "../logger/logger"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# @verdaccio/loaders
|
||||
|
||||
## 6.0.0-6-next.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/logger@6.0.0-6-next.26
|
||||
|
||||
## 6.0.0-6-next.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/logger@6.0.0-6-next.25
|
||||
|
||||
## 6.0.0-6-next.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/logger@6.0.0-6-next.24
|
||||
|
||||
## 6.0.0-6-next.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/loaders",
|
||||
"version": "6.0.0-6-next.24",
|
||||
"version": "6.0.0-6-next.27",
|
||||
"description": "loaders logic",
|
||||
"main": "./build/index.js",
|
||||
"types": "build/index.d.ts",
|
||||
@@ -13,13 +13,13 @@
|
||||
"url": "https://github.com/verdaccio/verdaccio"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.23",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.26",
|
||||
"debug": "4.3.4",
|
||||
"lodash": "4.17.21"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.19",
|
||||
"@verdaccio-scope/verdaccio-auth-foo": "0.0.2",
|
||||
"verdaccio-auth-memory": "workspace:*",
|
||||
|
||||
@@ -80,7 +80,9 @@ export async function asyncLoadPlugin<T extends pluginUtils.Plugin<T>>(
|
||||
await isDirectory(pluginsPath);
|
||||
const pluginDir = pluginsPath;
|
||||
const externalFilePlugin = resolve(pluginDir, `${prefix}-${pluginId}`);
|
||||
let plugin = tryLoad<T>(externalFilePlugin);
|
||||
let plugin = tryLoad<T>(externalFilePlugin, (a: any, b: any) => {
|
||||
logger.error(a, b);
|
||||
});
|
||||
if (plugin && isValid(plugin)) {
|
||||
plugin = executePlugin(plugin, pluginConfigs[pluginId], params);
|
||||
if (!sanityCheck(plugin)) {
|
||||
@@ -106,7 +108,9 @@ export async function asyncLoadPlugin<T extends pluginUtils.Plugin<T>>(
|
||||
debug('is scoped plugin %s', isScoped);
|
||||
const pluginName = isScoped ? pluginId : `${prefix}-${pluginId}`;
|
||||
debug('plugin pkg name %s', pluginName);
|
||||
let plugin = tryLoad<T>(pluginName);
|
||||
let plugin = tryLoad<T>(pluginName, (a: any, b: any) => {
|
||||
logger.error(a, b);
|
||||
});
|
||||
if (plugin && isValid(plugin)) {
|
||||
plugin = executePlugin(plugin, pluginConfigs[pluginId], params);
|
||||
if (!sanityCheck(plugin)) {
|
||||
|
||||
@@ -2,7 +2,6 @@ import buildDebug from 'debug';
|
||||
import _ from 'lodash';
|
||||
|
||||
import { pluginUtils } from '@verdaccio/core';
|
||||
import { logger } from '@verdaccio/logger';
|
||||
|
||||
const debug = buildDebug('verdaccio:plugin:loader:utils');
|
||||
const MODULE_NOT_FOUND = 'MODULE_NOT_FOUND';
|
||||
@@ -23,7 +22,7 @@ export function isES6<T>(plugin: PluginType<T>): boolean {
|
||||
* @param {*} path the module's path
|
||||
* @return {Object}
|
||||
*/
|
||||
export function tryLoad<T>(path: string): PluginType<T> | null {
|
||||
export function tryLoad<T>(path: string, onError: any): PluginType<T> | null {
|
||||
try {
|
||||
debug('loading plugin %s', path);
|
||||
return require(path) as PluginType<T>;
|
||||
@@ -32,7 +31,7 @@ export function tryLoad<T>(path: string): PluginType<T> | null {
|
||||
debug('plugin %s not found', path);
|
||||
return null;
|
||||
}
|
||||
logger.error({ err: err.msg }, 'error loading plugin @{err}');
|
||||
onError({ err: err.msg }, 'error loading plugin @{err}');
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"path": "../core/core"
|
||||
},
|
||||
{
|
||||
"path": "../logger"
|
||||
"path": "../logger/logger"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"extends": "../../.babelrc"
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"extends": "../../.babelrc"
|
||||
}
|
||||
14
packages/logger/logger-7/.babelrc
Normal file
14
packages/logger/logger-7/.babelrc
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"extends": "../../../.babelrc",
|
||||
"presets": [
|
||||
[
|
||||
"@babel/env",
|
||||
{
|
||||
"targets": {
|
||||
"node": 12
|
||||
}
|
||||
}
|
||||
],
|
||||
"@babel/typescript"
|
||||
]
|
||||
}
|
||||
7
packages/logger/logger-7/CHANGELOG.md
Normal file
7
packages/logger/logger-7/CHANGELOG.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# @verdaccio/logger-7
|
||||
|
||||
## 6.0.0-6-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/logger-commons@6.0.0-6-next.26
|
||||
12
packages/logger/logger-7/README.md
Normal file
12
packages/logger/logger-7/README.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# @verdaccio/logger-7
|
||||
|
||||
[](https://opencollective.com/verdaccio)
|
||||
[](https://stackshare.io/verdaccio)
|
||||
[](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
|
||||
[](https://crowdin.com/project/verdaccio)
|
||||
[](https://www.tickgit.com/browse?repo=github.com/verdaccio/verdaccio)
|
||||
|
||||
[](https://twitter.com/verdaccio_npm)
|
||||
[](https://github.com/verdaccio/verdaccio/stargazers)
|
||||
|
||||
Special version of `verdaccio` logger for verdaccio 5.x versions.
|
||||
@@ -1,4 +1,4 @@
|
||||
const config = require('../../jest/config');
|
||||
const config = require('../../../jest/config');
|
||||
|
||||
module.exports = Object.assign({}, config, {
|
||||
coverageThreshold: {
|
||||
51
packages/logger/logger-7/package.json
Normal file
51
packages/logger/logger-7/package.json
Normal file
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"name": "@verdaccio/logger-7",
|
||||
"version": "6.0.0-6-next.2",
|
||||
"description": "logger for verdaccio 5.x version",
|
||||
"main": "./build/index.js",
|
||||
"types": "./build/index.d.ts",
|
||||
"author": {
|
||||
"name": "Juan Picado",
|
||||
"email": "juanpicado19@gmail.com"
|
||||
},
|
||||
"repository": {
|
||||
"type": "https",
|
||||
"url": "https://github.com/verdaccio/verdaccio"
|
||||
},
|
||||
"license": "MIT",
|
||||
"homepage": "https://verdaccio.org",
|
||||
"keywords": [
|
||||
"private",
|
||||
"package",
|
||||
"repository",
|
||||
"registry",
|
||||
"enterprise",
|
||||
"modules",
|
||||
"proxy",
|
||||
"server",
|
||||
"verdaccio"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "rimraf ./build",
|
||||
"test": "echo 1",
|
||||
"type-check": "tsc --noEmit -p tsconfig.build.json",
|
||||
"build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json",
|
||||
"build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps",
|
||||
"watch": "pnpm build:js -- --watch",
|
||||
"build": "pnpm run build:js && pnpm run build:types"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/logger-commons": "workspace:6.0.0-6-next.26",
|
||||
"pino": "7.11.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.19"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/verdaccio"
|
||||
}
|
||||
}
|
||||
24
packages/logger/logger-7/src/index.ts
Normal file
24
packages/logger/logger-7/src/index.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import pino from 'pino';
|
||||
|
||||
import { prepareSetup } from '@verdaccio/logger-commons';
|
||||
import { Logger, LoggerFormat, LoggerType } from '@verdaccio/types';
|
||||
|
||||
let logger: Logger;
|
||||
|
||||
export type LoggerConfigItem = {
|
||||
type?: LoggerType;
|
||||
format?: LoggerFormat;
|
||||
path?: string;
|
||||
level?: string;
|
||||
colors?: boolean;
|
||||
async?: boolean;
|
||||
};
|
||||
|
||||
export function setup(options: LoggerConfigItem) {
|
||||
if (typeof logger !== 'undefined') {
|
||||
return logger;
|
||||
}
|
||||
|
||||
logger = prepareSetup(options, pino);
|
||||
return logger;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "../../tsconfig.base",
|
||||
"extends": "../../../tsconfig.base",
|
||||
"compilerOptions": {
|
||||
"rootDir": "./src",
|
||||
"outDir": "./build"
|
||||
16
packages/logger/logger-7/tsconfig.json
Normal file
16
packages/logger/logger-7/tsconfig.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"extends": "../../../tsconfig.reference.json",
|
||||
"compilerOptions": {
|
||||
"rootDir": "./src",
|
||||
"outDir": "./build"
|
||||
},
|
||||
"include": ["src/**/*.ts"],
|
||||
"references": [
|
||||
{
|
||||
"path": "../logger-prettify"
|
||||
},
|
||||
{
|
||||
"path": "../logger-commons"
|
||||
}
|
||||
]
|
||||
}
|
||||
14
packages/logger/logger-commons/.babelrc
Normal file
14
packages/logger/logger-commons/.babelrc
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"extends": "../../../.babelrc",
|
||||
"presets": [
|
||||
[
|
||||
"@babel/env",
|
||||
{
|
||||
"targets": {
|
||||
"node": 12
|
||||
}
|
||||
}
|
||||
],
|
||||
"@babel/typescript"
|
||||
]
|
||||
}
|
||||
7
packages/logger/logger-commons/CHANGELOG.md
Normal file
7
packages/logger/logger-commons/CHANGELOG.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# @verdaccio/logger-commons
|
||||
|
||||
## 6.0.0-6-next.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.58
|
||||
10
packages/logger/logger-commons/jest.config.js
Normal file
10
packages/logger/logger-commons/jest.config.js
Normal file
@@ -0,0 +1,10 @@
|
||||
const config = require('../../../jest/config');
|
||||
|
||||
module.exports = Object.assign({}, config, {
|
||||
coverageThreshold: {
|
||||
global: {
|
||||
// FIXME: increase to 90
|
||||
lines: 39,
|
||||
},
|
||||
},
|
||||
});
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/logger",
|
||||
"version": "6.0.0-6-next.23",
|
||||
"name": "@verdaccio/logger-commons",
|
||||
"version": "6.0.0-6-next.26",
|
||||
"description": "logger",
|
||||
"main": "./build/index.js",
|
||||
"types": "./build/index.d.ts",
|
||||
@@ -38,13 +38,13 @@
|
||||
"build": "pnpm run build:js && pnpm run build:types"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/logger-prettify": "workspace:6.0.0-6-next.8",
|
||||
"debug": "4.3.4",
|
||||
"colorette": "2.0.19",
|
||||
"pino": "8.8.0"
|
||||
"colorette": "2.0.19"
|
||||
},
|
||||
"devDependencies": {
|
||||
"pino": "8.8.0",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.19"
|
||||
},
|
||||
"funding": {
|
||||
1
packages/logger/logger-commons/src/index.ts
Normal file
1
packages/logger/logger-commons/src/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export { setup, createLogger, prepareSetup } from './logger';
|
||||
@@ -1,7 +1,6 @@
|
||||
// <reference types="node" />
|
||||
import { isColorSupported } from 'colorette';
|
||||
import buildDebug from 'debug';
|
||||
import pino from 'pino';
|
||||
|
||||
import { fillInMsgTemplate } from '@verdaccio/logger-prettify';
|
||||
import { Logger, LoggerConfigItem, LoggerFormat } from '@verdaccio/types';
|
||||
@@ -33,7 +32,8 @@ export function createLogger(
|
||||
// eslint-disable-next-line no-undef
|
||||
// @ts-ignore
|
||||
destination: NodeJS.WritableStream = pino.destination(1),
|
||||
format: LoggerFormat = DEFAULT_LOG_FORMAT
|
||||
format: LoggerFormat = DEFAULT_LOG_FORMAT,
|
||||
pino
|
||||
): any {
|
||||
debug('setup logger');
|
||||
let pinoConfig = {
|
||||
@@ -109,7 +109,7 @@ const DEFAULT_LOGGER_CONF: LoggerConfigItem = {
|
||||
|
||||
export type LoggerConfig = LoggerConfigItem;
|
||||
|
||||
export function prepareSetup(options: LoggerConfigItem = DEFAULT_LOGGER_CONF) {
|
||||
export function prepareSetup(options: LoggerConfigItem = DEFAULT_LOGGER_CONF, pino) {
|
||||
let logger: Logger;
|
||||
let loggerConfig = options;
|
||||
if (!loggerConfig?.level) {
|
||||
@@ -133,7 +133,8 @@ export function prepareSetup(options: LoggerConfigItem = DEFAULT_LOGGER_CONF) {
|
||||
{ level: loggerConfig.level, path: loggerConfig.path, colors: loggerConfig.colors },
|
||||
// @ts-ignore
|
||||
destination,
|
||||
loggerConfig.format
|
||||
loggerConfig.format,
|
||||
pino
|
||||
);
|
||||
return logger;
|
||||
} else {
|
||||
@@ -143,7 +144,8 @@ export function prepareSetup(options: LoggerConfigItem = DEFAULT_LOGGER_CONF) {
|
||||
{ level: loggerConfig.level, colors: loggerConfig.colors },
|
||||
// @ts-ignore
|
||||
pino.destination(1),
|
||||
loggerConfig.format
|
||||
loggerConfig.format,
|
||||
pino
|
||||
);
|
||||
return logger;
|
||||
}
|
||||
@@ -151,11 +153,11 @@ export function prepareSetup(options: LoggerConfigItem = DEFAULT_LOGGER_CONF) {
|
||||
|
||||
export let logger: Logger;
|
||||
|
||||
export function setup(options: LoggerConfigItem) {
|
||||
export function setup(options: LoggerConfigItem, pino) {
|
||||
if (typeof logger !== 'undefined') {
|
||||
return logger;
|
||||
}
|
||||
|
||||
logger = prepareSetup(options);
|
||||
logger = prepareSetup(options, pino);
|
||||
return logger;
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
import pino from 'pino';
|
||||
import { Writable } from 'stream';
|
||||
|
||||
import { createLogger } from '../src';
|
||||
@@ -13,7 +14,7 @@ describe('logger test', () => {
|
||||
callback();
|
||||
},
|
||||
});
|
||||
const logger = createLogger({ level: 'http' }, stream, 'json');
|
||||
const logger = createLogger({ level: 'http' }, stream, 'json', pino);
|
||||
logger.info('test');
|
||||
});
|
||||
});
|
||||
@@ -1,5 +1,6 @@
|
||||
import { readFile } from 'fs/promises';
|
||||
import { join } from 'path';
|
||||
import pino from 'pino';
|
||||
import { setTimeout } from 'timers/promises';
|
||||
|
||||
import { fileUtils } from '@verdaccio/core';
|
||||
@@ -27,7 +28,7 @@ describe('logger test', () => {
|
||||
describe('basic', () => {
|
||||
test('should include default level', async () => {
|
||||
const file = await createLogFile();
|
||||
const logger = prepareSetup({ type: 'file', path: file, colors: false });
|
||||
const logger = prepareSetup({ type: 'file', path: file, colors: false }, pino);
|
||||
logger.info({ packageName: 'test' }, `testing @{packageName}`);
|
||||
// Note: this should not be logged
|
||||
logger.debug(`this should not be logged`);
|
||||
@@ -40,7 +41,10 @@ describe('logger test', () => {
|
||||
|
||||
test('should include all logging level', async () => {
|
||||
const file = await createLogFile();
|
||||
const logger = prepareSetup({ type: 'file', level: 'trace', path: file, colors: false });
|
||||
const logger = prepareSetup(
|
||||
{ type: 'file', level: 'trace', path: file, colors: false },
|
||||
pino
|
||||
);
|
||||
logger.info({ packageName: 'test' }, `testing @{packageName}`);
|
||||
logger.debug(`this should not be logged`);
|
||||
logger.trace(`this should not be logged`);
|
||||
@@ -55,13 +59,16 @@ describe('logger test', () => {
|
||||
describe('json format', () => {
|
||||
test('should log into a file with json format', async () => {
|
||||
const file = await createLogFile();
|
||||
const logger = prepareSetup({
|
||||
...defaultOptions,
|
||||
format: 'json',
|
||||
type: 'file',
|
||||
path: file,
|
||||
level: 'info',
|
||||
});
|
||||
const logger = prepareSetup(
|
||||
{
|
||||
...defaultOptions,
|
||||
format: 'json',
|
||||
type: 'file',
|
||||
path: file,
|
||||
level: 'info',
|
||||
},
|
||||
pino
|
||||
);
|
||||
logger.info(
|
||||
{ packageName: 'test' },
|
||||
`publishing or updating a new version for @{packageName}`
|
||||
@@ -79,13 +86,16 @@ describe('logger test', () => {
|
||||
describe('pretty format', () => {
|
||||
test('should log into a file with pretty', async () => {
|
||||
const file = await createLogFile();
|
||||
const logger = prepareSetup({
|
||||
format: 'pretty',
|
||||
type: 'file',
|
||||
path: file,
|
||||
level: 'trace',
|
||||
colors: false,
|
||||
});
|
||||
const logger = prepareSetup(
|
||||
{
|
||||
format: 'pretty',
|
||||
type: 'file',
|
||||
path: file,
|
||||
level: 'trace',
|
||||
colors: false,
|
||||
},
|
||||
pino
|
||||
);
|
||||
logger.info(
|
||||
{ packageName: 'test' },
|
||||
`publishing or updating a new version for @{packageName}`
|
||||
@@ -96,13 +106,16 @@ describe('logger test', () => {
|
||||
|
||||
test('should log into a file with pretty-timestamped', async () => {
|
||||
const file = await createLogFile();
|
||||
const logger = prepareSetup({
|
||||
format: 'pretty-timestamped',
|
||||
type: 'file',
|
||||
path: file,
|
||||
level: 'trace',
|
||||
colors: false,
|
||||
});
|
||||
const logger = prepareSetup(
|
||||
{
|
||||
format: 'pretty-timestamped',
|
||||
type: 'file',
|
||||
path: file,
|
||||
level: 'trace',
|
||||
colors: false,
|
||||
},
|
||||
pino
|
||||
);
|
||||
logger.info(
|
||||
{ packageName: 'test' },
|
||||
`publishing or updating a new version for @{packageName}`
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "../../tsconfig.base.json",
|
||||
"extends": "../../../tsconfig.base",
|
||||
"compilerOptions": {
|
||||
"rootDir": "./src",
|
||||
"outDir": "./build"
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "../../tsconfig.reference.json",
|
||||
"extends": "../../../tsconfig.reference.json",
|
||||
"compilerOptions": {
|
||||
"rootDir": "./src",
|
||||
"outDir": "./build"
|
||||
14
packages/logger/logger-prettify/.babelrc
Normal file
14
packages/logger/logger-prettify/.babelrc
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"extends": "../../../.babelrc",
|
||||
"presets": [
|
||||
[
|
||||
"@babel/env",
|
||||
{
|
||||
"targets": {
|
||||
"node": 12
|
||||
}
|
||||
}
|
||||
],
|
||||
"@babel/typescript"
|
||||
]
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
const config = require('../../jest/config');
|
||||
const config = require('../../../jest/config');
|
||||
|
||||
module.exports = Object.assign({}, config, {
|
||||
coverageThreshold: {
|
||||
9
packages/logger/logger-prettify/tsconfig.build.json
Normal file
9
packages/logger/logger-prettify/tsconfig.build.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"extends": "../../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"rootDir": "./src",
|
||||
"outDir": "./build"
|
||||
},
|
||||
"include": ["src/**/*.ts"],
|
||||
"exclude": ["src/**/*.test.ts"]
|
||||
}
|
||||
9
packages/logger/logger-prettify/tsconfig.json
Normal file
9
packages/logger/logger-prettify/tsconfig.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"extends": "../../../tsconfig.reference",
|
||||
"compilerOptions": {
|
||||
"rootDir": "./src",
|
||||
"outDir": "./build"
|
||||
},
|
||||
"include": ["src/**/*.ts"],
|
||||
"exclude": ["src/**/*.test.ts"]
|
||||
}
|
||||
3
packages/logger/logger/.babelrc
Normal file
3
packages/logger/logger/.babelrc
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": "../../../.babelrc"
|
||||
}
|
||||
@@ -1,5 +1,23 @@
|
||||
# @verdaccio/logger
|
||||
|
||||
## 6.0.0-6-next.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/logger-commons@6.0.0-6-next.26
|
||||
|
||||
## 6.0.0-6-next.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.57
|
||||
|
||||
## 6.0.0-6-next.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.56
|
||||
|
||||
## 6.0.0-6-next.23
|
||||
|
||||
### Patch Changes
|
||||
75
packages/logger/logger/README.md
Normal file
75
packages/logger/logger/README.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# @verdaccio/logger
|
||||
|
||||
[](https://opencollective.com/verdaccio)
|
||||
[](https://stackshare.io/verdaccio)
|
||||
[](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
|
||||
[](https://crowdin.com/project/verdaccio)
|
||||
[](https://www.tickgit.com/browse?repo=github.com/verdaccio/verdaccio)
|
||||
|
||||
[](https://twitter.com/verdaccio_npm)
|
||||
[](https://github.com/verdaccio/verdaccio/stargazers)
|
||||
|
||||
## Donations
|
||||
|
||||
Verdaccio is run by **volunteers**; nobody is working full-time on it. If you find this project to be useful and would like to support its development, consider making a donation - **your logo might end up in this readme.** 😉
|
||||
|
||||
**[Donate](https://opencollective.com/verdaccio)** 💵👍🏻 starting from _\$1/month_ or just one single contribution.
|
||||
|
||||
## Report a vulnerability
|
||||
|
||||
If you want to report a security vulnerability, please follow the steps which we have defined for you in our [security policy](https://github.com/verdaccio/verdaccio/security/policy).
|
||||
|
||||
## Open Collective Sponsors
|
||||
|
||||
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio#sponsor)]
|
||||
|
||||
[](https://opencollective.com/verdaccio/sponsor/0/website)
|
||||
[](https://opencollective.com/verdaccio/sponsor/1/website)
|
||||
[](https://opencollective.com/verdaccio/sponsor/2/website)
|
||||
[](https://opencollective.com/verdaccio/sponsor/3/website)
|
||||
[](https://opencollective.com/verdaccio/sponsor/4/website)
|
||||
[](https://opencollective.com/verdaccio/sponsor/5/website)
|
||||
[](https://opencollective.com/verdaccio/sponsor/6/website)
|
||||
[](https://opencollective.com/verdaccio/sponsor/7/website)
|
||||
[](https://opencollective.com/verdaccio/sponsor/8/website)
|
||||
[](https://opencollective.com/verdaccio/sponsor/9/website)
|
||||
|
||||
## Open Collective Backers
|
||||
|
||||
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/verdaccio#backer)]
|
||||
|
||||
[](https://opencollective.com/verdaccio#backers)
|
||||
|
||||
## Special Thanks
|
||||
|
||||
Thanks to the following companies to help us to achieve our goals providing free open source licenses.
|
||||
|
||||
[](https://www.jetbrains.com/)
|
||||
[](https://crowdin.com/)
|
||||
[](https://balsamiq.com/)
|
||||
|
||||
## Contributors
|
||||
|
||||
This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
|
||||
|
||||
[](../../graphs/contributors)
|
||||
|
||||
### FAQ / Contact / Troubleshoot
|
||||
|
||||
If you have any issue you can try the following options, do no desist to ask or check our issues database, perhaps someone has asked already what you are looking for.
|
||||
|
||||
- [Blog](https://verdaccio.org/blog/)
|
||||
- [Donations](https://opencollective.com/verdaccio)
|
||||
- [Reporting an issue](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md#reporting-a-bug)
|
||||
- [Running discussions](https://github.com/verdaccio/verdaccio/issues?q=is%3Aissue+is%3Aopen+label%3Adiscuss)
|
||||
- [Chat](http://chat.verdaccio.org/)
|
||||
- [Logos](https://verdaccio.org/docs/en/logo)
|
||||
- [Docker Examples](https://github.com/verdaccio/docker-examples)
|
||||
- [FAQ](https://github.com/verdaccio/verdaccio/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Aquestion%20)
|
||||
|
||||
### License
|
||||
|
||||
Verdaccio is [MIT licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
|
||||
|
||||
The Verdaccio documentation and logos (excluding /thanks, e.g., .md, .png, .sketch) files within the /assets folder) is
|
||||
[Creative Commons licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE-docs).
|
||||
10
packages/logger/logger/jest.config.js
Normal file
10
packages/logger/logger/jest.config.js
Normal file
@@ -0,0 +1,10 @@
|
||||
const config = require('../../../jest/config');
|
||||
|
||||
module.exports = Object.assign({}, config, {
|
||||
coverageThreshold: {
|
||||
global: {
|
||||
// FIXME: increase to 90
|
||||
lines: 39,
|
||||
},
|
||||
},
|
||||
});
|
||||
51
packages/logger/logger/package.json
Normal file
51
packages/logger/logger/package.json
Normal file
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"name": "@verdaccio/logger",
|
||||
"version": "6.0.0-6-next.26",
|
||||
"description": "logger",
|
||||
"main": "./build/index.js",
|
||||
"types": "./build/index.d.ts",
|
||||
"author": {
|
||||
"name": "Juan Picado",
|
||||
"email": "juanpicado19@gmail.com"
|
||||
},
|
||||
"repository": {
|
||||
"type": "https",
|
||||
"url": "https://github.com/verdaccio/verdaccio"
|
||||
},
|
||||
"license": "MIT",
|
||||
"homepage": "https://verdaccio.org",
|
||||
"keywords": [
|
||||
"private",
|
||||
"package",
|
||||
"repository",
|
||||
"registry",
|
||||
"enterprise",
|
||||
"modules",
|
||||
"proxy",
|
||||
"server",
|
||||
"verdaccio"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "rimraf ./build",
|
||||
"test": "echo 1",
|
||||
"type-check": "tsc --noEmit -p tsconfig.build.json",
|
||||
"build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json",
|
||||
"build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps",
|
||||
"watch": "pnpm build:js -- --watch",
|
||||
"build": "pnpm run build:js && pnpm run build:types"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/logger-commons": "workspace:6.0.0-6-next.26",
|
||||
"pino": "8.8.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.19"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/verdaccio"
|
||||
}
|
||||
}
|
||||
15
packages/logger/logger/src/index.ts
Normal file
15
packages/logger/logger/src/index.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import pino from 'pino';
|
||||
|
||||
import { prepareSetup } from '@verdaccio/logger-commons';
|
||||
import { Logger, LoggerConfigItem } from '@verdaccio/types';
|
||||
|
||||
export function setup(options: LoggerConfigItem) {
|
||||
if (typeof logger !== 'undefined') {
|
||||
return logger;
|
||||
}
|
||||
|
||||
logger = prepareSetup(options, pino);
|
||||
return logger;
|
||||
}
|
||||
|
||||
export let logger: Logger;
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "../../tsconfig.reference",
|
||||
"extends": "../../../tsconfig.base",
|
||||
"compilerOptions": {
|
||||
"rootDir": "./src",
|
||||
"outDir": "./build"
|
||||
16
packages/logger/logger/tsconfig.json
Normal file
16
packages/logger/logger/tsconfig.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"extends": "../../../tsconfig.reference.json",
|
||||
"compilerOptions": {
|
||||
"rootDir": "./src",
|
||||
"outDir": "./build"
|
||||
},
|
||||
"include": ["src/**/*.ts"],
|
||||
"references": [
|
||||
{
|
||||
"path": "../logger-prettify"
|
||||
},
|
||||
{
|
||||
"path": "../logger-commons"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
export { setup, createLogger, logger, prepareSetup } from './logger';
|
||||
@@ -1,3 +1,14 @@
|
||||
{
|
||||
"extends": "../../.babelrc"
|
||||
"extends": "../../.babelrc",
|
||||
"presets": [
|
||||
[
|
||||
"@babel/env",
|
||||
{
|
||||
"targets": {
|
||||
"node": 12
|
||||
}
|
||||
}
|
||||
],
|
||||
"@babel/typescript"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,5 +1,34 @@
|
||||
# @verdaccio/middleware
|
||||
|
||||
## 6.0.0-6-next.37
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- fa274ee4: chore: bumb up package
|
||||
- @verdaccio/core@6.0.0-6-next.58
|
||||
- @verdaccio/utils@6.0.0-6-next.26
|
||||
|
||||
## 6.0.0-6-next.36
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 9943e2b1: fix: extract logger from middleware
|
||||
- @verdaccio/core@6.0.0-6-next.57
|
||||
- @verdaccio/utils@6.0.0-6-next.25
|
||||
|
||||
## 6.0.0-6-next.35
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- a1986e09: feat: expose middleware utils
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a1986e09]
|
||||
- @verdaccio/utils@6.0.0-6-next.24
|
||||
- @verdaccio/core@6.0.0-6-next.56
|
||||
- @verdaccio/logger@6.0.0-6-next.24
|
||||
|
||||
## 6.0.0-6-next.34
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
const config = require('../../jest/config');
|
||||
|
||||
module.exports = Object.assign({}, config, {});
|
||||
module.exports = Object.assign({}, config, {
|
||||
coverageThreshold: {
|
||||
global: {
|
||||
lines: 67,
|
||||
functions: 70,
|
||||
branches: 55,
|
||||
statements: 67,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@verdaccio/middleware",
|
||||
"version": "6.0.0-6-next.34",
|
||||
"description": "loaders logic",
|
||||
"version": "6.0.0-6-next.37",
|
||||
"description": "express middleware utils",
|
||||
"main": "./build/index.js",
|
||||
"types": "build/index.d.ts",
|
||||
"author": {
|
||||
@@ -26,8 +26,7 @@
|
||||
"verdaccio"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=14",
|
||||
"npm": ">=6"
|
||||
"node": ">=12"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "rimraf ./build",
|
||||
@@ -35,19 +34,23 @@
|
||||
"build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json",
|
||||
"build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps",
|
||||
"watch": "pnpm build:js -- --watch",
|
||||
"test": "jest",
|
||||
"build": "pnpm run build:js && pnpm run build:types"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.26",
|
||||
"debug": "4.3.4",
|
||||
"body-parser": "1.20.1",
|
||||
"@verdaccio/auth": "workspace:6.0.0-6-next.34",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.55",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.23",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.23",
|
||||
"lodash": "4.17.21"
|
||||
"lodash": "4.17.21",
|
||||
"mime": "2.6.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/verdaccio"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.26",
|
||||
"body-parser": "1.20.1",
|
||||
"supertest": "6.3.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1,17 @@
|
||||
export * from './middleware';
|
||||
export { match } from './middlewares/match';
|
||||
export { setSecurityWebHeaders } from './middlewares/security-headers';
|
||||
export { validateName, validatePackage } from './middlewares/validation';
|
||||
export { media } from './middlewares/media';
|
||||
export { encodeScopePackage } from './middlewares/encode-pkg';
|
||||
export { expectJson } from './middlewares/json';
|
||||
export { antiLoop } from './middlewares/antiLoop';
|
||||
export { final } from './middlewares/final';
|
||||
export { allow } from './middlewares/allow';
|
||||
export { errorReportingMiddleware, handleError } from './middlewares/error';
|
||||
export {
|
||||
log,
|
||||
LOG_STATUS_MESSAGE,
|
||||
LOG_VERDACCIO_BYTES,
|
||||
LOG_VERDACCIO_ERROR,
|
||||
} from './middlewares/log';
|
||||
export * from './types';
|
||||
|
||||
@@ -1,413 +0,0 @@
|
||||
import buildDebug from 'debug';
|
||||
import { NextFunction, Request, Response } from 'express';
|
||||
import { HttpError } from 'http-errors';
|
||||
import _ from 'lodash';
|
||||
|
||||
import { Auth } from '@verdaccio/auth';
|
||||
import {
|
||||
API_ERROR,
|
||||
HEADERS,
|
||||
HEADER_TYPE,
|
||||
HTTP_STATUS,
|
||||
TOKEN_BASIC,
|
||||
TOKEN_BEARER,
|
||||
VerdaccioError,
|
||||
errorUtils,
|
||||
} from '@verdaccio/core';
|
||||
import { logger } from '@verdaccio/logger';
|
||||
import { Config, Logger, Package, RemoteUser } from '@verdaccio/types';
|
||||
import {
|
||||
isObject,
|
||||
stringToMD5,
|
||||
validateName as utilValidateName,
|
||||
validatePackage as utilValidatePackage,
|
||||
} from '@verdaccio/utils';
|
||||
|
||||
import { getVersionFromTarball } from './middleware-utils';
|
||||
|
||||
export type $RequestExtend = Request & { remote_user?: RemoteUser; log: Logger };
|
||||
export type $ResponseExtend = Response & { cookies?: any };
|
||||
export type $NextFunctionVer = NextFunction & any;
|
||||
|
||||
const debug = buildDebug('verdaccio:middleware');
|
||||
|
||||
export function match(regexp: RegExp): any {
|
||||
return function (
|
||||
req: $RequestExtend,
|
||||
res: $ResponseExtend,
|
||||
next: $NextFunctionVer,
|
||||
value: string
|
||||
): void {
|
||||
if (regexp.exec(value)) {
|
||||
next();
|
||||
} else {
|
||||
next('route');
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// TODO: remove, was relocated to web package
|
||||
// @ts-deprecated
|
||||
export function setSecurityWebHeaders(
|
||||
req: $RequestExtend,
|
||||
res: $ResponseExtend,
|
||||
next: $NextFunctionVer
|
||||
): void {
|
||||
// disable loading in frames (clickjacking, etc.)
|
||||
res.header(HEADERS.FRAMES_OPTIONS, 'deny');
|
||||
// avoid stablish connections outside of domain
|
||||
res.header(HEADERS.CSP, "connect-src 'self'");
|
||||
// https://stackoverflow.com/questions/18337630/what-is-x-content-type-options-nosniff
|
||||
res.header(HEADERS.CTO, 'nosniff');
|
||||
// https://stackoverflow.com/questions/9090577/what-is-the-http-header-x-xss-protection
|
||||
res.header(HEADERS.XSS, '1; mode=block');
|
||||
next();
|
||||
}
|
||||
|
||||
export function validateName(
|
||||
req: $RequestExtend,
|
||||
res: $ResponseExtend,
|
||||
next: $NextFunctionVer,
|
||||
value: string,
|
||||
name: string
|
||||
): void {
|
||||
if (value === '-') {
|
||||
// special case in couchdb usually
|
||||
next('route');
|
||||
} else if (utilValidateName(value)) {
|
||||
next();
|
||||
} else {
|
||||
next(errorUtils.getForbidden('invalid ' + name));
|
||||
}
|
||||
}
|
||||
|
||||
export function validatePackage(
|
||||
req: $RequestExtend,
|
||||
res: $ResponseExtend,
|
||||
next: $NextFunctionVer,
|
||||
value: string,
|
||||
name: string
|
||||
): void {
|
||||
if (value === '-') {
|
||||
// special case in couchdb usually
|
||||
next('route');
|
||||
} else if (utilValidatePackage(value)) {
|
||||
next();
|
||||
} else {
|
||||
next(errorUtils.getForbidden('invalid ' + name));
|
||||
}
|
||||
}
|
||||
|
||||
export function media(expect: string | null): any {
|
||||
return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {
|
||||
if (req.headers[HEADER_TYPE.CONTENT_TYPE] !== expect) {
|
||||
next(
|
||||
errorUtils.getCode(
|
||||
HTTP_STATUS.UNSUPPORTED_MEDIA,
|
||||
'wrong content-type, expect: ' + expect + ', got: ' + req.get[HEADER_TYPE.CONTENT_TYPE]
|
||||
)
|
||||
);
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export function encodeScopePackage(
|
||||
req: $RequestExtend,
|
||||
res: $ResponseExtend,
|
||||
next: $NextFunctionVer
|
||||
): void {
|
||||
if (req.url.indexOf('@') !== -1) {
|
||||
// e.g.: /@org/pkg/1.2.3 -> /@org%2Fpkg/1.2.3, /@org%2Fpkg/1.2.3 -> /@org%2Fpkg/1.2.3
|
||||
req.url = req.url.replace(/^(\/@[^\/%]+)\/(?!$)/, '$1%2F');
|
||||
}
|
||||
next();
|
||||
}
|
||||
|
||||
export function expectJson(
|
||||
req: $RequestExtend,
|
||||
res: $ResponseExtend,
|
||||
next: $NextFunctionVer
|
||||
): void {
|
||||
if (!isObject(req.body)) {
|
||||
return next(errorUtils.getBadRequest("can't parse incoming json"));
|
||||
}
|
||||
next();
|
||||
}
|
||||
|
||||
export function antiLoop(config: Config): Function {
|
||||
return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {
|
||||
if (req?.headers?.via != null) {
|
||||
const arr = req.headers.via.split(',');
|
||||
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
const m = arr[i].match(/\s*(\S+)\s+(\S+)/);
|
||||
if (m && m[2] === config.server_id) {
|
||||
return next(errorUtils.getCode(HTTP_STATUS.LOOP_DETECTED, 'loop detected'));
|
||||
}
|
||||
}
|
||||
}
|
||||
next();
|
||||
};
|
||||
}
|
||||
|
||||
export function allow(auth: Auth): Function {
|
||||
return function (action: string): Function {
|
||||
return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {
|
||||
req.pause();
|
||||
const packageName = req.params.scope
|
||||
? `@${req.params.scope}/${req.params.package}`
|
||||
: req.params.package;
|
||||
const packageVersion = req.params.filename
|
||||
? getVersionFromTarball(req.params.filename)
|
||||
: undefined;
|
||||
const remote = req.remote_user;
|
||||
logger.trace(
|
||||
{ action, user: remote?.name },
|
||||
`[middleware/allow][@{action}] allow for @{user}`
|
||||
);
|
||||
auth['allow_' + action](
|
||||
{ packageName, packageVersion },
|
||||
remote,
|
||||
function (error, allowed): void {
|
||||
req.resume();
|
||||
if (error) {
|
||||
next(error);
|
||||
} else if (allowed) {
|
||||
next();
|
||||
} else {
|
||||
// last plugin (that's our built-in one) returns either
|
||||
// cb(err) or cb(null, true), so this should never happen
|
||||
throw errorUtils.getInternalError(API_ERROR.PLUGIN_ERROR);
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
export interface MiddlewareError {
|
||||
error: string;
|
||||
}
|
||||
|
||||
export type FinalBody = Package | MiddlewareError | string;
|
||||
|
||||
export function final(
|
||||
body: FinalBody,
|
||||
req: $RequestExtend,
|
||||
res: $ResponseExtend,
|
||||
// if we remove `next` breaks test
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
next: $NextFunctionVer
|
||||
): void {
|
||||
if (res.statusCode === HTTP_STATUS.UNAUTHORIZED && !res.getHeader(HEADERS.WWW_AUTH)) {
|
||||
// they say it's required for 401, so...
|
||||
res.header(HEADERS.WWW_AUTH, `${TOKEN_BASIC}, ${TOKEN_BEARER}`);
|
||||
}
|
||||
|
||||
try {
|
||||
if (_.isString(body) || _.isObject(body)) {
|
||||
if (!res.getHeader(HEADERS.CONTENT_TYPE)) {
|
||||
res.header(HEADERS.CONTENT_TYPE, HEADERS.JSON);
|
||||
}
|
||||
|
||||
if (typeof body === 'object' && _.isNil(body) === false) {
|
||||
if (typeof (body as MiddlewareError).error === 'string') {
|
||||
res.locals._verdaccio_error = (body as MiddlewareError).error;
|
||||
// res._verdaccio_error = (body as MiddlewareError).error;
|
||||
}
|
||||
body = JSON.stringify(body, undefined, ' ') + '\n';
|
||||
}
|
||||
|
||||
// don't send etags with errors
|
||||
if (
|
||||
!res.statusCode ||
|
||||
(res.statusCode >= HTTP_STATUS.OK && res.statusCode < HTTP_STATUS.MULTIPLE_CHOICES)
|
||||
) {
|
||||
res.header(HEADERS.ETAG, '"' + stringToMD5(body as string) + '"');
|
||||
}
|
||||
} else {
|
||||
// send(null), send(204), etc.
|
||||
}
|
||||
} catch (err: any) {
|
||||
// if verdaccio sends headers first, and then calls res.send()
|
||||
// as an error handler, we can't report error properly,
|
||||
// and should just close socket
|
||||
if (err.message.match(/set headers after they are sent/)) {
|
||||
if (_.isNil(res.socket) === false) {
|
||||
res.socket?.destroy();
|
||||
}
|
||||
return;
|
||||
}
|
||||
throw err;
|
||||
}
|
||||
|
||||
res.send(body);
|
||||
}
|
||||
|
||||
// FIXME: deprecated, moved to @verdaccio/dev-commons
|
||||
export const LOG_STATUS_MESSAGE =
|
||||
"@{status}, user: @{user}(@{remoteIP}), req: '@{request.method} @{request.url}'";
|
||||
export const LOG_VERDACCIO_ERROR = `${LOG_STATUS_MESSAGE}, error: @{!error}`;
|
||||
export const LOG_VERDACCIO_BYTES = `${LOG_STATUS_MESSAGE}, bytes: @{bytes.in}/@{bytes.out}`;
|
||||
|
||||
export function log(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {
|
||||
// logger
|
||||
req.log = logger.child({ sub: 'in' });
|
||||
|
||||
const _auth = req.headers.authorization;
|
||||
if (_.isNil(_auth) === false) {
|
||||
req.headers.authorization = '<Classified>';
|
||||
}
|
||||
|
||||
const _cookie = req.get('cookie');
|
||||
if (_.isNil(_cookie) === false) {
|
||||
req.headers.cookie = '<Classified>';
|
||||
}
|
||||
|
||||
req.url = req.originalUrl;
|
||||
req.log.info({ req: req, ip: req.ip }, "@{ip} requested '@{req.method} @{req.url}'");
|
||||
req.originalUrl = req.url;
|
||||
|
||||
if (_.isNil(_auth) === false) {
|
||||
req.headers.authorization = _auth;
|
||||
}
|
||||
|
||||
if (_.isNil(_cookie) === false) {
|
||||
req.headers.cookie = _cookie;
|
||||
}
|
||||
|
||||
let bytesin = 0;
|
||||
req.on('data', function (chunk): void {
|
||||
bytesin += chunk.length;
|
||||
});
|
||||
|
||||
let bytesout = 0;
|
||||
const _write = res.write;
|
||||
// FIXME: res.write should return boolean
|
||||
// @ts-ignore
|
||||
res.write = function (buf): boolean {
|
||||
bytesout += buf.length;
|
||||
/* eslint prefer-rest-params: "off" */
|
||||
// @ts-ignore
|
||||
_write.apply(res, arguments);
|
||||
};
|
||||
|
||||
const log = function (): void {
|
||||
const forwardedFor = req.get('x-forwarded-for');
|
||||
const remoteAddress = req.connection.remoteAddress;
|
||||
const remoteIP = forwardedFor ? `${forwardedFor} via ${remoteAddress}` : remoteAddress;
|
||||
let message;
|
||||
if (res.locals._verdaccio_error) {
|
||||
message = LOG_VERDACCIO_ERROR;
|
||||
} else {
|
||||
message = LOG_VERDACCIO_BYTES;
|
||||
}
|
||||
|
||||
req.url = req.originalUrl;
|
||||
req.log.http(
|
||||
{
|
||||
request: {
|
||||
method: req.method,
|
||||
url: req.url,
|
||||
},
|
||||
user: (req.remote_user && req.remote_user.name) || null,
|
||||
remoteIP,
|
||||
status: res.statusCode,
|
||||
error: res.locals._verdaccio_error,
|
||||
bytes: {
|
||||
in: bytesin,
|
||||
out: bytesout,
|
||||
},
|
||||
},
|
||||
message
|
||||
);
|
||||
req.originalUrl = req.url;
|
||||
};
|
||||
|
||||
req.on('close', function (): void {
|
||||
log();
|
||||
});
|
||||
|
||||
const _end = res.end;
|
||||
// @ts-ignore
|
||||
res.end = function (buf): void {
|
||||
if (buf) {
|
||||
bytesout += buf.length;
|
||||
}
|
||||
/* eslint prefer-rest-params: "off" */
|
||||
// @ts-ignore
|
||||
_end.apply(res, arguments);
|
||||
log();
|
||||
};
|
||||
next();
|
||||
}
|
||||
|
||||
export function handleError(
|
||||
err: HttpError,
|
||||
req: $RequestExtend,
|
||||
res: $ResponseExtend,
|
||||
next: $NextFunctionVer
|
||||
) {
|
||||
debug('error handler init');
|
||||
if (_.isError(err)) {
|
||||
debug('is native error');
|
||||
if (err.code === 'ECONNABORT' && res.statusCode === HTTP_STATUS.NOT_MODIFIED) {
|
||||
return next();
|
||||
}
|
||||
if (_.isFunction(res.locals.report_error) === false) {
|
||||
debug('is locals error report ref');
|
||||
// in case of very early error this middleware may not be loaded before error is generated
|
||||
// fixing that
|
||||
errorReportingMiddleware(req, res, _.noop);
|
||||
}
|
||||
debug('set locals error report ref');
|
||||
res.locals.report_error(err);
|
||||
} else {
|
||||
// Fall to Middleware.final
|
||||
debug('no error to report, jump next layer');
|
||||
return next(err);
|
||||
}
|
||||
}
|
||||
|
||||
// Middleware
|
||||
export function errorReportingMiddleware(
|
||||
req: $RequestExtend,
|
||||
res: $ResponseExtend,
|
||||
next: $NextFunctionVer
|
||||
): void {
|
||||
debug('error report middleware');
|
||||
res.locals.report_error =
|
||||
res.locals.report_error ||
|
||||
function (err: VerdaccioError): void {
|
||||
if (err.status && err.status >= HTTP_STATUS.BAD_REQUEST && err.status < 600) {
|
||||
debug('is error > 409 %o', err?.status);
|
||||
if (_.isNil(res.headersSent) === false) {
|
||||
debug('send status %o', err?.status);
|
||||
res.status(err.status);
|
||||
debug('next layer %o', err?.message);
|
||||
next({ error: err.message || API_ERROR.UNKNOWN_ERROR });
|
||||
}
|
||||
} else {
|
||||
debug('is error < 409 %o', err?.status);
|
||||
logger.error({ err: err }, 'unexpected error: @{!err.message}\n@{err.stack}');
|
||||
if (!res.status || !res.send) {
|
||||
// TODO: decide which debug keep
|
||||
logger.error('this is an error in express.js, please report this');
|
||||
debug('this is an error in express.js, please report this, destroy response %o', err);
|
||||
res.destroy();
|
||||
} else if (!res.headersSent) {
|
||||
debug('report internal error %o', err);
|
||||
res.status(HTTP_STATUS.INTERNAL_ERROR);
|
||||
next({ error: API_ERROR.INTERNAL_SERVER_ERROR });
|
||||
} else {
|
||||
// socket should be already closed
|
||||
debug('this should not happen, otherwise report %o', err);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
debug('error report middleware next()');
|
||||
next();
|
||||
}
|
||||
52
packages/middleware/src/middlewares/allow.ts
Normal file
52
packages/middleware/src/middlewares/allow.ts
Normal file
@@ -0,0 +1,52 @@
|
||||
import { API_ERROR, errorUtils } from '@verdaccio/core';
|
||||
import { getVersionFromTarball } from '@verdaccio/utils';
|
||||
|
||||
import { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types';
|
||||
|
||||
export function allow<T>(
|
||||
auth: T,
|
||||
options = {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
beforeAll: (_a: any, _b: any) => {},
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
afterAll: (_a: any, _b: any) => {},
|
||||
}
|
||||
): Function {
|
||||
const { beforeAll, afterAll } = options;
|
||||
return function (action: string): Function {
|
||||
return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {
|
||||
req.pause();
|
||||
const packageName = req.params.scope
|
||||
? `@${req.params.scope}/${req.params.package}`
|
||||
: req.params.package;
|
||||
const packageVersion = req.params.filename
|
||||
? getVersionFromTarball(req.params.filename)
|
||||
: undefined;
|
||||
const remote = req.remote_user;
|
||||
beforeAll?.(
|
||||
{ action, user: remote?.name },
|
||||
`[middleware/allow][@{action}] allow for @{user}`
|
||||
);
|
||||
auth['allow_' + action](
|
||||
{ packageName, packageVersion },
|
||||
remote,
|
||||
function (error, allowed): void {
|
||||
req.resume();
|
||||
if (error) {
|
||||
next(error);
|
||||
} else if (allowed) {
|
||||
afterAll?.(
|
||||
{ action, user: remote?.name },
|
||||
`[middleware/allow][@{action}] allowed for @{user}`
|
||||
);
|
||||
next();
|
||||
} else {
|
||||
// last plugin (that's our built-in one) returns either
|
||||
// cb(err) or cb(null, true), so this should never happen
|
||||
throw errorUtils.getInternalError(API_ERROR.PLUGIN_ERROR);
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
};
|
||||
}
|
||||
30
packages/middleware/src/middlewares/antiLoop.ts
Normal file
30
packages/middleware/src/middlewares/antiLoop.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
import { HTTP_STATUS, errorUtils } from '@verdaccio/core';
|
||||
import { Config } from '@verdaccio/types';
|
||||
|
||||
import { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types';
|
||||
|
||||
/**
|
||||
* A middleware that avoid a registry points itself as proxy and avoid create infinite loops.
|
||||
* @param config
|
||||
* @returns
|
||||
*/
|
||||
export function antiLoop(config: Config): Function {
|
||||
return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {
|
||||
if (req?.headers?.via != null) {
|
||||
const arr = req.get('via')?.split(',');
|
||||
if (Array.isArray(arr)) {
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
// the "via" header must contains an specific headers, this has to be on sync
|
||||
// with the proxy request
|
||||
// match eg: Server 1 or Server 2
|
||||
// TODO: improve this RegEX
|
||||
const m = arr[i].trim().match(/\s*(\S+)\s+(\S+)/);
|
||||
if (m && m[2] === config.server_id) {
|
||||
return next(errorUtils.getCode(HTTP_STATUS.LOOP_DETECTED, 'loop detected'));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
next();
|
||||
};
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user