Compare commits

...

10 Commits

Author SHA1 Message Date
Juan Picado
0a6668c060 chore: update versions (6-next) (#3593)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-02-05 21:58:06 +01:00
Juan Picado
fa274ee44d bump up middleware 2023-02-05 21:36:05 +01:00
Juan Picado
ebc0d5a201 update lockfile 2023-02-05 21:27:53 +01:00
Juan Picado
7b8c250869 chore: add missing changeset config 2023-02-05 21:24:25 +01:00
Juan Picado
631abe1ac1 refactor logger module (#3592)
* refactor logger module

* Update index.ts
2023-02-05 21:00:32 +01:00
Juan Picado
4122520a19 chore: update versions (6-next) (#3591) 2023-02-04 12:28:11 +01:00
Juan Picado
9943e2b189 refactor middleware dependencies (#3588)
* refactor middleware dependencies

* improve wrap

* chore: fix local

* chore: fix test

* changeset
2023-02-04 11:34:33 +01:00
Juan Picado
7abfb6aa3d Update docusaurus.config.js 2023-02-02 20:02:42 +01:00
verdacciobot
5ba6cd1533 chore: updated static data 2023-02-02 00:15:07 +00:00
TLDMain
859c51cd44 fix package parameter (#3575) 2023-01-31 17:09:38 +01:00
152 changed files with 1721 additions and 716 deletions

View File

@@ -0,0 +1,8 @@
---
'@verdaccio/middleware': patch
'@verdaccio/server': patch
'@verdaccio/test-helper': patch
'@verdaccio/local-publish': patch
---
fix: extract logger from middleware

View 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

View File

@@ -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",

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/middleware': patch
---
chore: bumb up package

View File

@@ -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",

View File

@@ -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"
},

View File

@@ -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": {

View File

@@ -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

View File

@@ -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"

View File

@@ -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,

View File

@@ -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,

View File

@@ -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'),

View File

@@ -23,7 +23,7 @@
"path": "../hooks"
},
{
"path": "../logger"
"path": "../logger/logger"
},
{
"path": "../middleware"

View File

@@ -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

View File

@@ -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"

View File

@@ -20,7 +20,7 @@
"path": "../loaders"
},
{
"path": "../logger"
"path": "../logger/logger"
},
{
"path": "../utils"

View File

@@ -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

View File

@@ -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",

View File

@@ -20,7 +20,7 @@
"path": "../node-api"
},
{
"path": "../logger"
"path": "../logger/logger"
}
]
}

View File

@@ -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

View File

@@ -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",

View File

@@ -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

View File

@@ -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",

View File

@@ -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

View File

@@ -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": {

View File

@@ -1,4 +1,4 @@
import { PackageAccess, PackageList } from './manifest';
import { PackageAccess, PackageList } from '@verdaccio/types/src/manifest';
export type TypeToken = 'Bearer' | 'Basic';

View File

@@ -1 +1 @@
export * from './storage';
export * from '@verdaccio/types/src/plugins/storage';

View File

@@ -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[];

View File

@@ -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';

View File

@@ -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

View File

@@ -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"

View File

@@ -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

View File

@@ -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": {

View File

@@ -14,7 +14,7 @@
"path": "../config"
},
{
"path": "../logger"
"path": "../logger/logger"
}
]
}

View File

@@ -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

View File

@@ -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:*",

View File

@@ -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)) {

View File

@@ -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;
}
}

View File

@@ -15,7 +15,7 @@
"path": "../core/core"
},
{
"path": "../logger"
"path": "../logger/logger"
}
]
}

View File

@@ -1,3 +0,0 @@
{
"extends": "../../.babelrc"
}

View File

@@ -1,3 +0,0 @@
{
"extends": "../../.babelrc"
}

View File

@@ -0,0 +1,14 @@
{
"extends": "../../../.babelrc",
"presets": [
[
"@babel/env",
{
"targets": {
"node": 12
}
}
],
"@babel/typescript"
]
}

View 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

View File

@@ -0,0 +1,12 @@
# @verdaccio/logger-7
[![backers](https://opencollective.com/verdaccio/tiers/backer/badge.svg?label=Backer&color=brightgreen)](https://opencollective.com/verdaccio)
[![stackshare](https://img.shields.io/badge/Follow%20on-StackShare-blue.svg?logo=stackshare&style=flat)](https://stackshare.io/verdaccio)
[![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/verdaccio/localized.svg)](https://crowdin.com/project/verdaccio)
[![TODOs](https://badgen.net/https/api.tickgit.com/badgen/github.com/verdaccio/verdaccio)](https://www.tickgit.com/browse?repo=github.com/verdaccio/verdaccio)
[![Twitter followers](https://img.shields.io/twitter/follow/verdaccio_npm.svg?style=social&label=Follow)](https://twitter.com/verdaccio_npm)
[![Github](https://img.shields.io/github/stars/verdaccio/verdaccio.svg?style=social&label=Stars)](https://github.com/verdaccio/verdaccio/stargazers)
Special version of `verdaccio` logger for verdaccio 5.x versions.

View File

@@ -1,4 +1,4 @@
const config = require('../../jest/config');
const config = require('../../../jest/config');
module.exports = Object.assign({}, config, {
coverageThreshold: {

View 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"
}
}

View 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;
}

View File

@@ -1,5 +1,5 @@
{
"extends": "../../tsconfig.base",
"extends": "../../../tsconfig.base",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./build"

View File

@@ -0,0 +1,16 @@
{
"extends": "../../../tsconfig.reference.json",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./build"
},
"include": ["src/**/*.ts"],
"references": [
{
"path": "../logger-prettify"
},
{
"path": "../logger-commons"
}
]
}

View File

@@ -0,0 +1,14 @@
{
"extends": "../../../.babelrc",
"presets": [
[
"@babel/env",
{
"targets": {
"node": 12
}
}
],
"@babel/typescript"
]
}

View File

@@ -0,0 +1,7 @@
# @verdaccio/logger-commons
## 6.0.0-6-next.26
### Patch Changes
- @verdaccio/core@6.0.0-6-next.58

View File

@@ -0,0 +1,10 @@
const config = require('../../../jest/config');
module.exports = Object.assign({}, config, {
coverageThreshold: {
global: {
// FIXME: increase to 90
lines: 39,
},
},
});

View File

@@ -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": {

View File

@@ -0,0 +1 @@
export { setup, createLogger, prepareSetup } from './logger';

View File

@@ -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;
}

View File

@@ -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');
});
});

View File

@@ -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}`

View File

@@ -1,5 +1,5 @@
{
"extends": "../../tsconfig.base.json",
"extends": "../../../tsconfig.base",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./build"

View File

@@ -1,5 +1,5 @@
{
"extends": "../../tsconfig.reference.json",
"extends": "../../../tsconfig.reference.json",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./build"

View File

@@ -0,0 +1,14 @@
{
"extends": "../../../.babelrc",
"presets": [
[
"@babel/env",
{
"targets": {
"node": 12
}
}
],
"@babel/typescript"
]
}

View File

@@ -1,4 +1,4 @@
const config = require('../../jest/config');
const config = require('../../../jest/config');
module.exports = Object.assign({}, config, {
coverageThreshold: {

View File

@@ -0,0 +1,9 @@
{
"extends": "../../../tsconfig.base.json",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./build"
},
"include": ["src/**/*.ts"],
"exclude": ["src/**/*.test.ts"]
}

View File

@@ -0,0 +1,9 @@
{
"extends": "../../../tsconfig.reference",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./build"
},
"include": ["src/**/*.ts"],
"exclude": ["src/**/*.test.ts"]
}

View File

@@ -0,0 +1,3 @@
{
"extends": "../../../.babelrc"
}

View File

@@ -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

View File

@@ -0,0 +1,75 @@
# @verdaccio/logger
[![backers](https://opencollective.com/verdaccio/tiers/backer/badge.svg?label=Backer&color=brightgreen)](https://opencollective.com/verdaccio)
[![stackshare](https://img.shields.io/badge/Follow%20on-StackShare-blue.svg?logo=stackshare&style=flat)](https://stackshare.io/verdaccio)
[![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/verdaccio/localized.svg)](https://crowdin.com/project/verdaccio)
[![TODOs](https://badgen.net/https/api.tickgit.com/badgen/github.com/verdaccio/verdaccio)](https://www.tickgit.com/browse?repo=github.com/verdaccio/verdaccio)
[![Twitter followers](https://img.shields.io/twitter/follow/verdaccio_npm.svg?style=social&label=Follow)](https://twitter.com/verdaccio_npm)
[![Github](https://img.shields.io/github/stars/verdaccio/verdaccio.svg?style=social&label=Stars)](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)]
[![sponsor](https://opencollective.com/verdaccio/sponsor/0/avatar.svg)](https://opencollective.com/verdaccio/sponsor/0/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/1/avatar.svg)](https://opencollective.com/verdaccio/sponsor/1/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/2/avatar.svg)](https://opencollective.com/verdaccio/sponsor/2/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/3/avatar.svg)](https://opencollective.com/verdaccio/sponsor/3/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/4/avatar.svg)](https://opencollective.com/verdaccio/sponsor/4/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/5/avatar.svg)](https://opencollective.com/verdaccio/sponsor/5/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/6/avatar.svg)](https://opencollective.com/verdaccio/sponsor/6/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/7/avatar.svg)](https://opencollective.com/verdaccio/sponsor/7/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/8/avatar.svg)](https://opencollective.com/verdaccio/sponsor/8/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/9/avatar.svg)](https://opencollective.com/verdaccio/sponsor/9/website)
## Open Collective Backers
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/verdaccio#backer)]
[![backers](https://opencollective.com/verdaccio/backers.svg?width=890)](https://opencollective.com/verdaccio#backers)
## Special Thanks
Thanks to the following companies to help us to achieve our goals providing free open source licenses.
[![jetbrain](assets/thanks/jetbrains/logo.png)](https://www.jetbrains.com/)
[![crowdin](assets/thanks/crowdin/logo.png)](https://crowdin.com/)
[![balsamiq](assets/thanks/balsamiq/logo.jpg)](https://balsamiq.com/)
## Contributors
This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
[![contributors](https://opencollective.com/verdaccio/contributors.svg?width=890&button=true)](../../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).

View File

@@ -0,0 +1,10 @@
const config = require('../../../jest/config');
module.exports = Object.assign({}, config, {
coverageThreshold: {
global: {
// FIXME: increase to 90
lines: 39,
},
},
});

View 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"
}
}

View 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;

View File

@@ -1,5 +1,5 @@
{
"extends": "../../tsconfig.reference",
"extends": "../../../tsconfig.base",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./build"

View File

@@ -0,0 +1,16 @@
{
"extends": "../../../tsconfig.reference.json",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./build"
},
"include": ["src/**/*.ts"],
"references": [
{
"path": "../logger-prettify"
},
{
"path": "../logger-commons"
}
]
}

View File

@@ -1 +0,0 @@
export { setup, createLogger, logger, prepareSetup } from './logger';

View File

@@ -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

View File

@@ -4,8 +4,8 @@ module.exports = Object.assign({}, config, {
coverageThreshold: {
global: {
lines: 67,
functions: 80,
branches: 56,
functions: 70,
branches: 55,
statements: 67,
},
},

View File

@@ -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"
}

View File

@@ -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

View File

@@ -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();
};

View File

@@ -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();
}
};

View File

@@ -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'));

View File

@@ -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({});

View File

@@ -11,7 +11,7 @@
"path": "../auth"
},
{
"path": "../logger"
"path": "../logger/logger"
},
{
"path": "../utils"

View File

@@ -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

View File

@@ -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"

View File

@@ -11,7 +11,7 @@
"path": "../config"
},
{
"path": "../logger"
"path": "../logger/logger"
},
{
"path": "../server/express"

View File

@@ -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