Compare commits
10 Commits
@verdaccio
...
@verdaccio
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0a6668c060 | ||
|
|
fa274ee44d | ||
|
|
ebc0d5a201 | ||
|
|
7b8c250869 | ||
|
|
631abe1ac1 | ||
|
|
4122520a19 | ||
|
|
9943e2b189 | ||
|
|
7abfb6aa3d | ||
|
|
5ba6cd1533 | ||
|
|
859c51cd44 |
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,7 +54,9 @@
|
||||
"@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",
|
||||
@@ -73,6 +75,7 @@
|
||||
"dry-planes-tap",
|
||||
"dull-monkeys-search",
|
||||
"early-jokes-nail",
|
||||
"eight-bottles-own",
|
||||
"eleven-brooms-hunt",
|
||||
"eleven-spoons-matter",
|
||||
"fair-lemons-beam",
|
||||
@@ -81,6 +84,7 @@
|
||||
"few-cooks-destroy",
|
||||
"few-mangos-grow",
|
||||
"fifty-jars-rest",
|
||||
"fifty-stingrays-fold",
|
||||
"fluffy-papayas-lay",
|
||||
"four-ways-try",
|
||||
"fuzzy-drinks-taste",
|
||||
@@ -148,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
|
||||
@@ -5,9 +5,9 @@
|
||||
"main": "./build/index.js",
|
||||
"types": "./build/index.d.ts",
|
||||
"devDependencies": {
|
||||
"verdaccio": "workspace:6.0.0-6-next.56",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.56",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.56",
|
||||
"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.56",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.56",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.56",
|
||||
"@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"
|
||||
},
|
||||
|
||||
@@ -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,31 @@
|
||||
# @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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/api",
|
||||
"version": "6.0.0-6-next.39",
|
||||
"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.35",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.56",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.56",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.24",
|
||||
"@verdaccio/middleware": "workspace:6.0.0-6-next.35",
|
||||
"@verdaccio/store": "workspace:6.0.0-6-next.36",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.24",
|
||||
"@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.45",
|
||||
"@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,
|
||||
|
||||
@@ -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,27 @@
|
||||
# @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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/auth",
|
||||
"version": "6.0.0-6-next.35",
|
||||
"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.56",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.56",
|
||||
"@verdaccio/loaders": "workspace:6.0.0-6-next.25",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.24",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.24",
|
||||
"@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.26"
|
||||
"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,23 @@
|
||||
# @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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/cli",
|
||||
"version": "6.0.0-6-next.56",
|
||||
"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.56",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.56",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.24",
|
||||
"@verdaccio/node-api": "workspace:6.0.0-6-next.56",
|
||||
"@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,19 @@
|
||||
# @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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/config",
|
||||
"version": "6.0.0-6-next.56",
|
||||
"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.56",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.24",
|
||||
"@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,9 @@
|
||||
# @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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/core",
|
||||
"version": "6.0.0-6-next.56",
|
||||
"version": "6.0.0-6-next.58",
|
||||
"description": "core utilities",
|
||||
"keywords": [
|
||||
"private",
|
||||
|
||||
@@ -1,5 +1,21 @@
|
||||
# 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/tarball",
|
||||
"version": "11.0.0-6-next.25",
|
||||
"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.56",
|
||||
"@verdaccio/url": "workspace:11.0.0-6-next.22",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.24",
|
||||
"@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,17 @@
|
||||
# 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/url",
|
||||
"version": "11.0.0-6-next.22",
|
||||
"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.56",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.58",
|
||||
"debug": "4.3.4",
|
||||
"lodash": "4.17.21",
|
||||
"validator": "13.7.0"
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
# @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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/hooks",
|
||||
"version": "6.0.0-6-next.26",
|
||||
"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.56",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.24",
|
||||
"@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.35",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.56",
|
||||
"@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,17 @@
|
||||
# @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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/loaders",
|
||||
"version": "6.0.0-6-next.25",
|
||||
"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.24",
|
||||
"@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.56",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.56",
|
||||
"@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.24",
|
||||
"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.56",
|
||||
"@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,17 @@
|
||||
# @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
|
||||
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,5 +1,21 @@
|
||||
# @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
|
||||
|
||||
@@ -4,8 +4,8 @@ module.exports = Object.assign({}, config, {
|
||||
coverageThreshold: {
|
||||
global: {
|
||||
lines: 67,
|
||||
functions: 80,
|
||||
branches: 56,
|
||||
functions: 70,
|
||||
branches: 55,
|
||||
statements: 67,
|
||||
},
|
||||
},
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@verdaccio/middleware",
|
||||
"version": "6.0.0-6-next.35",
|
||||
"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",
|
||||
@@ -39,9 +38,8 @@
|
||||
"build": "pnpm run build:js && pnpm run build:types"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.56",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.24",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.24",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.58",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.26",
|
||||
"debug": "4.3.4",
|
||||
"lodash": "4.17.21",
|
||||
"mime": "2.6.0"
|
||||
@@ -51,6 +49,7 @@
|
||||
"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,10 +1,18 @@
|
||||
import { API_ERROR, errorUtils } from '@verdaccio/core';
|
||||
import { logger } from '@verdaccio/logger';
|
||||
import { getVersionFromTarball } from '@verdaccio/utils';
|
||||
|
||||
import { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types';
|
||||
|
||||
export function allow<T>(auth: T): Function {
|
||||
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();
|
||||
@@ -15,7 +23,7 @@ export function allow<T>(auth: T): Function {
|
||||
? getVersionFromTarball(req.params.filename)
|
||||
: undefined;
|
||||
const remote = req.remote_user;
|
||||
logger.trace(
|
||||
beforeAll?.(
|
||||
{ action, user: remote?.name },
|
||||
`[middleware/allow][@{action}] allow for @{user}`
|
||||
);
|
||||
@@ -27,6 +35,10 @@ export function allow<T>(auth: T): Function {
|
||||
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
|
||||
|
||||
@@ -3,76 +3,77 @@ import { HttpError } from 'http-errors';
|
||||
import _ from 'lodash';
|
||||
|
||||
import { API_ERROR, HTTP_STATUS, VerdaccioError } from '@verdaccio/core';
|
||||
import { logger } from '@verdaccio/logger';
|
||||
|
||||
import { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types';
|
||||
|
||||
const debug = buildDebug('verdaccio:middleware:error');
|
||||
|
||||
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();
|
||||
export const handleError = (logger) =>
|
||||
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(logger)(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);
|
||||
}
|
||||
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 });
|
||||
export const errorReportingMiddleware = (logger) =>
|
||||
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 {
|
||||
// socket should be already closed
|
||||
debug('this should not happen, otherwise report %o', err);
|
||||
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();
|
||||
}
|
||||
debug('error report middleware next()');
|
||||
next();
|
||||
};
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
import _ from 'lodash';
|
||||
|
||||
import { logger } from '@verdaccio/logger';
|
||||
|
||||
import { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types';
|
||||
|
||||
// FIXME: deprecated, moved to @verdaccio/dev-commons
|
||||
@@ -10,94 +8,96 @@ export const LOG_STATUS_MESSAGE =
|
||||
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' });
|
||||
export const log = (logger) => {
|
||||
return 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 _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;
|
||||
const _cookie = req.get('cookie');
|
||||
if (_.isNil(_cookie) === false) {
|
||||
req.headers.cookie = '<Classified>';
|
||||
}
|
||||
|
||||
req.url = req.originalUrl;
|
||||
req.log.http(
|
||||
{
|
||||
request: {
|
||||
method: req.method,
|
||||
url: req.url,
|
||||
},
|
||||
user: req.remote_user?.name || null,
|
||||
remoteIP,
|
||||
status: res.statusCode,
|
||||
error: res.locals._verdaccio_error,
|
||||
bytes: {
|
||||
in: bytesin,
|
||||
out: bytesout,
|
||||
},
|
||||
},
|
||||
message
|
||||
);
|
||||
req.log.info({ req: req, ip: req.ip }, "@{ip} requested '@{req.method} @{req.url}'");
|
||||
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;
|
||||
if (_.isNil(_auth) === false) {
|
||||
req.headers.authorization = _auth;
|
||||
}
|
||||
/* eslint prefer-rest-params: "off" */
|
||||
|
||||
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
|
||||
_end.apply(res, arguments);
|
||||
log();
|
||||
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?.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();
|
||||
};
|
||||
next();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import request from 'supertest';
|
||||
|
||||
import { HTTP_STATUS } from '@verdaccio/core';
|
||||
import { setup } from '@verdaccio/logger';
|
||||
import { logger, setup } from '@verdaccio/logger';
|
||||
|
||||
import { allow } from '../src';
|
||||
import { getApp } from './helper';
|
||||
@@ -9,11 +9,14 @@ import { getApp } from './helper';
|
||||
setup({});
|
||||
|
||||
test('should allow request', async () => {
|
||||
const can = allow({
|
||||
allow_publish: (params, remove, cb) => {
|
||||
return cb(null, true);
|
||||
const can = allow(
|
||||
{
|
||||
allow_publish: (params, remove, cb) => {
|
||||
return cb(null, true);
|
||||
},
|
||||
},
|
||||
});
|
||||
logger
|
||||
);
|
||||
const app = getApp([]);
|
||||
// @ts-ignore
|
||||
app.get('/:package', can('publish'), (req, res) => {
|
||||
@@ -24,11 +27,14 @@ test('should allow request', async () => {
|
||||
});
|
||||
|
||||
test('should allow scope request', async () => {
|
||||
const can = allow({
|
||||
allow_publish: (params, remove, cb) => {
|
||||
return cb(null, true);
|
||||
const can = allow(
|
||||
{
|
||||
allow_publish: (params, remove, cb) => {
|
||||
return cb(null, true);
|
||||
},
|
||||
},
|
||||
});
|
||||
logger
|
||||
);
|
||||
const app = getApp([]);
|
||||
// @ts-ignore
|
||||
app.get('/:package/:scope', can('publish'), (req, res) => {
|
||||
@@ -39,11 +45,14 @@ test('should allow scope request', async () => {
|
||||
});
|
||||
|
||||
test('should allow filename request', async () => {
|
||||
const can = allow({
|
||||
allow_publish: (params, remove, cb) => {
|
||||
return cb(null, true);
|
||||
const can = allow(
|
||||
{
|
||||
allow_publish: (params, remove, cb) => {
|
||||
return cb(null, true);
|
||||
},
|
||||
},
|
||||
});
|
||||
logger
|
||||
);
|
||||
const app = getApp([]);
|
||||
// @ts-ignore
|
||||
app.get('/:filename', can('publish'), (req, res) => {
|
||||
@@ -54,11 +63,14 @@ test('should allow filename request', async () => {
|
||||
});
|
||||
|
||||
test('should not allow request', async () => {
|
||||
const can = allow({
|
||||
allow_publish: (params, remove, cb) => {
|
||||
return cb(null, false);
|
||||
const can = allow(
|
||||
{
|
||||
allow_publish: (params, remove, cb) => {
|
||||
return cb(null, false);
|
||||
},
|
||||
},
|
||||
});
|
||||
logger
|
||||
);
|
||||
const app = getApp([]);
|
||||
// @ts-ignore
|
||||
app.get('/sec', can('publish'), (req, res) => {
|
||||
@@ -69,11 +81,14 @@ test('should not allow request', async () => {
|
||||
});
|
||||
|
||||
test('should handle error request', async () => {
|
||||
const can = allow({
|
||||
allow_publish: (params, remove, cb) => {
|
||||
return cb(Error('foo error'));
|
||||
const can = allow(
|
||||
{
|
||||
allow_publish: (params, remove, cb) => {
|
||||
return cb(Error('foo error'));
|
||||
},
|
||||
},
|
||||
});
|
||||
logger
|
||||
);
|
||||
const app = getApp([]);
|
||||
// @ts-ignore
|
||||
app.get('/err', can('publish'));
|
||||
|
||||
@@ -2,7 +2,7 @@ import path from 'path';
|
||||
import request from 'supertest';
|
||||
|
||||
import { HTTP_STATUS } from '@verdaccio/core';
|
||||
import { setup } from '@verdaccio/logger';
|
||||
import { logger, setup } from '@verdaccio/logger';
|
||||
|
||||
import { log } from '../src';
|
||||
import { getApp } from './helper';
|
||||
@@ -17,7 +17,7 @@ setup({
|
||||
test('should log request', async () => {
|
||||
const app = getApp([]);
|
||||
// @ts-ignore
|
||||
app.use(log);
|
||||
app.use(log(logger));
|
||||
// @ts-ignore
|
||||
app.get('/:package', (req, res) => {
|
||||
res.status(HTTP_STATUS.OK).json({});
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"path": "../auth"
|
||||
},
|
||||
{
|
||||
"path": "../logger"
|
||||
"path": "../logger/logger"
|
||||
},
|
||||
{
|
||||
"path": "../utils"
|
||||
|
||||
@@ -1,5 +1,26 @@
|
||||
# @verdaccio/node-api
|
||||
|
||||
## 6.0.0-6-next.58
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/server@6.0.0-6-next.47
|
||||
- @verdaccio/core@6.0.0-6-next.58
|
||||
- @verdaccio/config@6.0.0-6-next.58
|
||||
- @verdaccio/server-fastify@6.0.0-6-next.39
|
||||
- @verdaccio/logger@6.0.0-6-next.26
|
||||
|
||||
## 6.0.0-6-next.57
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [9943e2b1]
|
||||
- @verdaccio/server@6.0.0-6-next.46
|
||||
- @verdaccio/core@6.0.0-6-next.57
|
||||
- @verdaccio/config@6.0.0-6-next.57
|
||||
- @verdaccio/logger@6.0.0-6-next.25
|
||||
- @verdaccio/server-fastify@6.0.0-6-next.38
|
||||
|
||||
## 6.0.0-6-next.56
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/node-api",
|
||||
"version": "6.0.0-6-next.56",
|
||||
"version": "6.0.0-6-next.58",
|
||||
"description": "node API",
|
||||
"main": "build/index.js",
|
||||
"types": "build/index.d.ts",
|
||||
@@ -39,11 +39,11 @@
|
||||
},
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.56",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.56",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.24",
|
||||
"@verdaccio/server": "workspace:6.0.0-6-next.45",
|
||||
"@verdaccio/server-fastify": "workspace:6.0.0-6-next.37",
|
||||
"@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/server": "workspace:6.0.0-6-next.47",
|
||||
"@verdaccio/server-fastify": "workspace:6.0.0-6-next.39",
|
||||
"core-js": "3.27.0",
|
||||
"debug": "4.3.4",
|
||||
"lodash": "4.17.21"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"path": "../config"
|
||||
},
|
||||
{
|
||||
"path": "../logger"
|
||||
"path": "../logger/logger"
|
||||
},
|
||||
{
|
||||
"path": "../server/express"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"path": "../../config"
|
||||
},
|
||||
{
|
||||
"path": "../../logger"
|
||||
"path": "../../logger/logger"
|
||||
},
|
||||
{
|
||||
"path": "../../core/core"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user