@verdaccio/middleware 9.0.0-next-9.7 → 9.0.0-next-9.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,18 +2,17 @@ const require_runtime = require("../_virtual/_rolldown/runtime.js");
2
2
  let _verdaccio_core = require("@verdaccio/core");
3
3
  let debug = require("debug");
4
4
  debug = require_runtime.__toESM(debug);
5
- let lodash = require("lodash");
6
- lodash = require_runtime.__toESM(lodash);
5
+ let lodash_es = require("lodash-es");
7
6
  //#region src/middlewares/error.ts
8
7
  var debug$1 = (0, debug.default)("verdaccio:middleware:error");
9
8
  var handleError = (logger) => function handleError(err, req, res, next) {
10
9
  debug$1("error handler init");
11
- if (lodash.default.isError(err)) {
10
+ if ((0, lodash_es.isError)(err)) {
12
11
  debug$1("is native error");
13
12
  if (err.code === "ECONNABORT" && res.statusCode === _verdaccio_core.HTTP_STATUS.NOT_MODIFIED) return next();
14
- if (lodash.default.isFunction(res.locals.report_error) === false) {
13
+ if (typeof res.locals.report_error !== "function") {
15
14
  debug$1("is locals error report ref");
16
- errorReportingMiddleware(logger)(req, res, lodash.default.noop);
15
+ errorReportingMiddleware(logger)(req, res, lodash_es.noop);
17
16
  }
18
17
  debug$1("set locals error report ref");
19
18
  res.locals.report_error(err);
@@ -27,7 +26,7 @@ var errorReportingMiddleware = (logger) => function errorReportingMiddleware(req
27
26
  res.locals.report_error = res.locals.report_error || function(err) {
28
27
  if (err.status && err.status >= _verdaccio_core.HTTP_STATUS.BAD_REQUEST && err.status < 600) {
29
28
  debug$1("is error > 409 %o", err?.status);
30
- if (lodash.default.isNil(res.headersSent) === false) {
29
+ if ((0, lodash_es.isNil)(res.headersSent) === false) {
31
30
  debug$1("send status %o", err?.status);
32
31
  res.status(err.status);
33
32
  debug$1("next layer %o", err?.message);
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","names":[],"sources":["../../src/middlewares/error.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport type { HttpError } from 'http-errors';\nimport _ from 'lodash';\n\nimport type { VerdaccioError } from '@verdaccio/core';\nimport { API_ERROR, HTTP_STATUS } from '@verdaccio/core';\nimport type { Logger } from '@verdaccio/types';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types';\n\nconst debug = buildDebug('verdaccio:middleware:error');\n\nexport const handleError = (logger: Logger) =>\n function handleError(\n err: HttpError,\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ) {\n debug('error handler init');\n if (_.isError(err)) {\n debug('is native error');\n if (err.code === 'ECONNABORT' && res.statusCode === HTTP_STATUS.NOT_MODIFIED) {\n return next();\n }\n if (_.isFunction(res.locals.report_error) === false) {\n debug('is locals error report ref');\n // in case of very early error this middleware may not be loaded before error is generated\n // fixing that\n errorReportingMiddleware(logger)(req, res, _.noop);\n }\n debug('set locals error report ref');\n res.locals.report_error(err);\n } else {\n // Fall to Middleware.final\n debug('no error to report, jump next layer');\n return next(err);\n }\n };\n\n// Middleware\nexport const errorReportingMiddleware = (logger: Logger) =>\n function errorReportingMiddleware(\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ): void {\n debug('error report middleware start');\n res.locals.report_error =\n res.locals.report_error ||\n function (err: VerdaccioError): void {\n if (err.status && err.status >= HTTP_STATUS.BAD_REQUEST && err.status < 600) {\n debug('is error > 409 %o', err?.status);\n if (_.isNil(res.headersSent) === false) {\n debug('send status %o', err?.status);\n res.status(err.status);\n debug('next layer %o', err?.message);\n next({ error: err.message || API_ERROR.UNKNOWN_ERROR });\n }\n } else {\n debug('is error < 409 %o', err?.status);\n logger.error({ err: err }, 'unexpected error: @{!err.message}\\n@{err.stack}');\n if (!res.status || !res.send) {\n // TODO: decide which debug keep\n logger.error('this is an error in express.js, please report this');\n debug('this is an error in express.js, please report this, destroy response %o', err);\n res.destroy();\n } else if (!res.headersSent) {\n debug('send internal error %o', err);\n res.status(HTTP_STATUS.INTERNAL_ERROR);\n next({ error: API_ERROR.INTERNAL_SERVER_ERROR });\n } else {\n // socket should be already closed\n debug('this should not happen, otherwise report %o', err);\n }\n }\n };\n\n debug('error report middleware end (skip next layer) next()');\n next();\n };\n"],"mappings":";;;;;;;AAUA,IAAM,WAAA,GAAA,MAAA,SAAmB,6BAA6B;AAEtD,IAAa,eAAe,WAC1B,SAAS,YACP,KACA,KACA,KACA,MACA;AACA,SAAM,qBAAqB;AAC3B,KAAI,OAAA,QAAE,QAAQ,IAAI,EAAE;AAClB,UAAM,kBAAkB;AACxB,MAAI,IAAI,SAAS,gBAAgB,IAAI,eAAe,gBAAA,YAAY,aAC9D,QAAO,MAAM;AAEf,MAAI,OAAA,QAAE,WAAW,IAAI,OAAO,aAAa,KAAK,OAAO;AACnD,WAAM,6BAA6B;AAGnC,4BAAyB,OAAO,CAAC,KAAK,KAAK,OAAA,QAAE,KAAK;;AAEpD,UAAM,8BAA8B;AACpC,MAAI,OAAO,aAAa,IAAI;QACvB;AAEL,UAAM,sCAAsC;AAC5C,SAAO,KAAK,IAAI;;;AAKtB,IAAa,4BAA4B,WACvC,SAAS,yBACP,KACA,KACA,MACM;AACN,SAAM,gCAAgC;AACtC,KAAI,OAAO,eACT,IAAI,OAAO,gBACX,SAAU,KAA2B;AACnC,MAAI,IAAI,UAAU,IAAI,UAAU,gBAAA,YAAY,eAAe,IAAI,SAAS,KAAK;AAC3E,WAAM,qBAAqB,KAAK,OAAO;AACvC,OAAI,OAAA,QAAE,MAAM,IAAI,YAAY,KAAK,OAAO;AACtC,YAAM,kBAAkB,KAAK,OAAO;AACpC,QAAI,OAAO,IAAI,OAAO;AACtB,YAAM,iBAAiB,KAAK,QAAQ;AACpC,SAAK,EAAE,OAAO,IAAI,WAAW,gBAAA,UAAU,eAAe,CAAC;;SAEpD;AACL,WAAM,qBAAqB,KAAK,OAAO;AACvC,UAAO,MAAM,EAAO,KAAK,EAAE,kDAAkD;AAC7E,OAAI,CAAC,IAAI,UAAU,CAAC,IAAI,MAAM;AAE5B,WAAO,MAAM,qDAAqD;AAClE,YAAM,2EAA2E,IAAI;AACrF,QAAI,SAAS;cACJ,CAAC,IAAI,aAAa;AAC3B,YAAM,0BAA0B,IAAI;AACpC,QAAI,OAAO,gBAAA,YAAY,eAAe;AACtC,SAAK,EAAE,OAAO,gBAAA,UAAU,uBAAuB,CAAC;SAGhD,SAAM,+CAA+C,IAAI;;;AAKjE,SAAM,uDAAuD;AAC7D,OAAM"}
1
+ {"version":3,"file":"error.js","names":[],"sources":["../../src/middlewares/error.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport type { HttpError } from 'http-errors';\nimport { isError, isNil, noop } from 'lodash-es';\n\nimport type { VerdaccioError } from '@verdaccio/core';\nimport { API_ERROR, HTTP_STATUS } from '@verdaccio/core';\nimport type { Logger } from '@verdaccio/types';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types';\n\nconst debug = buildDebug('verdaccio:middleware:error');\n\nexport const handleError = (logger: Logger) =>\n function handleError(\n err: HttpError,\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ) {\n debug('error handler init');\n if (isError(err)) {\n debug('is native error');\n if (err.code === 'ECONNABORT' && res.statusCode === HTTP_STATUS.NOT_MODIFIED) {\n return next();\n }\n if (typeof res.locals.report_error !== 'function') {\n debug('is locals error report ref');\n // in case of very early error this middleware may not be loaded before error is generated\n // fixing that\n errorReportingMiddleware(logger)(req, res, noop);\n }\n debug('set locals error report ref');\n res.locals.report_error(err);\n } else {\n // Fall to Middleware.final\n debug('no error to report, jump next layer');\n return next(err);\n }\n };\n\n// Middleware\nexport const errorReportingMiddleware = (logger: Logger) =>\n function errorReportingMiddleware(\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ): void {\n debug('error report middleware start');\n res.locals.report_error =\n res.locals.report_error ||\n function (err: VerdaccioError): void {\n if (err.status && err.status >= HTTP_STATUS.BAD_REQUEST && err.status < 600) {\n debug('is error > 409 %o', err?.status);\n if (isNil(res.headersSent) === false) {\n debug('send status %o', err?.status);\n res.status(err.status);\n debug('next layer %o', err?.message);\n next({ error: err.message || API_ERROR.UNKNOWN_ERROR });\n }\n } else {\n debug('is error < 409 %o', err?.status);\n logger.error({ err: err }, 'unexpected error: @{!err.message}\\n@{err.stack}');\n if (!res.status || !res.send) {\n // TODO: decide which debug keep\n logger.error('this is an error in express.js, please report this');\n debug('this is an error in express.js, please report this, destroy response %o', err);\n res.destroy();\n } else if (!res.headersSent) {\n debug('send internal error %o', err);\n res.status(HTTP_STATUS.INTERNAL_ERROR);\n next({ error: API_ERROR.INTERNAL_SERVER_ERROR });\n } else {\n // socket should be already closed\n debug('this should not happen, otherwise report %o', err);\n }\n }\n };\n\n debug('error report middleware end (skip next layer) next()');\n next();\n };\n"],"mappings":";;;;;;AAUA,IAAM,WAAA,GAAA,MAAA,SAAmB,6BAA6B;AAEtD,IAAa,eAAe,WAC1B,SAAS,YACP,KACA,KACA,KACA,MACA;AACA,SAAM,qBAAqB;AAC3B,MAAA,GAAA,UAAA,SAAY,IAAI,EAAE;AAChB,UAAM,kBAAkB;AACxB,MAAI,IAAI,SAAS,gBAAgB,IAAI,eAAe,gBAAA,YAAY,aAC9D,QAAO,MAAM;AAEf,MAAI,OAAO,IAAI,OAAO,iBAAiB,YAAY;AACjD,WAAM,6BAA6B;AAGnC,4BAAyB,OAAO,CAAC,KAAK,KAAK,UAAA,KAAK;;AAElD,UAAM,8BAA8B;AACpC,MAAI,OAAO,aAAa,IAAI;QACvB;AAEL,UAAM,sCAAsC;AAC5C,SAAO,KAAK,IAAI;;;AAKtB,IAAa,4BAA4B,WACvC,SAAS,yBACP,KACA,KACA,MACM;AACN,SAAM,gCAAgC;AACtC,KAAI,OAAO,eACT,IAAI,OAAO,gBACX,SAAU,KAA2B;AACnC,MAAI,IAAI,UAAU,IAAI,UAAU,gBAAA,YAAY,eAAe,IAAI,SAAS,KAAK;AAC3E,WAAM,qBAAqB,KAAK,OAAO;AACvC,QAAA,GAAA,UAAA,OAAU,IAAI,YAAY,KAAK,OAAO;AACpC,YAAM,kBAAkB,KAAK,OAAO;AACpC,QAAI,OAAO,IAAI,OAAO;AACtB,YAAM,iBAAiB,KAAK,QAAQ;AACpC,SAAK,EAAE,OAAO,IAAI,WAAW,gBAAA,UAAU,eAAe,CAAC;;SAEpD;AACL,WAAM,qBAAqB,KAAK,OAAO;AACvC,UAAO,MAAM,EAAO,KAAK,EAAE,kDAAkD;AAC7E,OAAI,CAAC,IAAI,UAAU,CAAC,IAAI,MAAM;AAE5B,WAAO,MAAM,qDAAqD;AAClE,YAAM,2EAA2E,IAAI;AACrF,QAAI,SAAS;cACJ,CAAC,IAAI,aAAa;AAC3B,YAAM,0BAA0B,IAAI;AACpC,QAAI,OAAO,gBAAA,YAAY,eAAe;AACtC,SAAK,EAAE,OAAO,gBAAA,UAAU,uBAAuB,CAAC;SAGhD,SAAM,+CAA+C,IAAI;;;AAKjE,SAAM,uDAAuD;AAC7D,OAAM"}
@@ -1,16 +1,16 @@
1
1
  import { API_ERROR, HTTP_STATUS } from "@verdaccio/core";
2
2
  import buildDebug from "debug";
3
- import _ from "lodash";
3
+ import { isError, isNil, noop } from "lodash-es";
4
4
  //#region src/middlewares/error.ts
5
5
  var debug = buildDebug("verdaccio:middleware:error");
6
6
  var handleError = (logger) => function handleError(err, req, res, next) {
7
7
  debug("error handler init");
8
- if (_.isError(err)) {
8
+ if (isError(err)) {
9
9
  debug("is native error");
10
10
  if (err.code === "ECONNABORT" && res.statusCode === HTTP_STATUS.NOT_MODIFIED) return next();
11
- if (_.isFunction(res.locals.report_error) === false) {
11
+ if (typeof res.locals.report_error !== "function") {
12
12
  debug("is locals error report ref");
13
- errorReportingMiddleware(logger)(req, res, _.noop);
13
+ errorReportingMiddleware(logger)(req, res, noop);
14
14
  }
15
15
  debug("set locals error report ref");
16
16
  res.locals.report_error(err);
@@ -24,7 +24,7 @@ var errorReportingMiddleware = (logger) => function errorReportingMiddleware(req
24
24
  res.locals.report_error = res.locals.report_error || function(err) {
25
25
  if (err.status && err.status >= HTTP_STATUS.BAD_REQUEST && err.status < 600) {
26
26
  debug("is error > 409 %o", err?.status);
27
- if (_.isNil(res.headersSent) === false) {
27
+ if (isNil(res.headersSent) === false) {
28
28
  debug("send status %o", err?.status);
29
29
  res.status(err.status);
30
30
  debug("next layer %o", err?.message);
@@ -1 +1 @@
1
- {"version":3,"file":"error.mjs","names":[],"sources":["../../src/middlewares/error.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport type { HttpError } from 'http-errors';\nimport _ from 'lodash';\n\nimport type { VerdaccioError } from '@verdaccio/core';\nimport { API_ERROR, HTTP_STATUS } from '@verdaccio/core';\nimport type { Logger } from '@verdaccio/types';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types';\n\nconst debug = buildDebug('verdaccio:middleware:error');\n\nexport const handleError = (logger: Logger) =>\n function handleError(\n err: HttpError,\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ) {\n debug('error handler init');\n if (_.isError(err)) {\n debug('is native error');\n if (err.code === 'ECONNABORT' && res.statusCode === HTTP_STATUS.NOT_MODIFIED) {\n return next();\n }\n if (_.isFunction(res.locals.report_error) === false) {\n debug('is locals error report ref');\n // in case of very early error this middleware may not be loaded before error is generated\n // fixing that\n errorReportingMiddleware(logger)(req, res, _.noop);\n }\n debug('set locals error report ref');\n res.locals.report_error(err);\n } else {\n // Fall to Middleware.final\n debug('no error to report, jump next layer');\n return next(err);\n }\n };\n\n// Middleware\nexport const errorReportingMiddleware = (logger: Logger) =>\n function errorReportingMiddleware(\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ): void {\n debug('error report middleware start');\n res.locals.report_error =\n res.locals.report_error ||\n function (err: VerdaccioError): void {\n if (err.status && err.status >= HTTP_STATUS.BAD_REQUEST && err.status < 600) {\n debug('is error > 409 %o', err?.status);\n if (_.isNil(res.headersSent) === false) {\n debug('send status %o', err?.status);\n res.status(err.status);\n debug('next layer %o', err?.message);\n next({ error: err.message || API_ERROR.UNKNOWN_ERROR });\n }\n } else {\n debug('is error < 409 %o', err?.status);\n logger.error({ err: err }, 'unexpected error: @{!err.message}\\n@{err.stack}');\n if (!res.status || !res.send) {\n // TODO: decide which debug keep\n logger.error('this is an error in express.js, please report this');\n debug('this is an error in express.js, please report this, destroy response %o', err);\n res.destroy();\n } else if (!res.headersSent) {\n debug('send internal error %o', err);\n res.status(HTTP_STATUS.INTERNAL_ERROR);\n next({ error: API_ERROR.INTERNAL_SERVER_ERROR });\n } else {\n // socket should be already closed\n debug('this should not happen, otherwise report %o', err);\n }\n }\n };\n\n debug('error report middleware end (skip next layer) next()');\n next();\n };\n"],"mappings":";;;;AAUA,IAAM,QAAQ,WAAW,6BAA6B;AAEtD,IAAa,eAAe,WAC1B,SAAS,YACP,KACA,KACA,KACA,MACA;AACA,OAAM,qBAAqB;AAC3B,KAAI,EAAE,QAAQ,IAAI,EAAE;AAClB,QAAM,kBAAkB;AACxB,MAAI,IAAI,SAAS,gBAAgB,IAAI,eAAe,YAAY,aAC9D,QAAO,MAAM;AAEf,MAAI,EAAE,WAAW,IAAI,OAAO,aAAa,KAAK,OAAO;AACnD,SAAM,6BAA6B;AAGnC,4BAAyB,OAAO,CAAC,KAAK,KAAK,EAAE,KAAK;;AAEpD,QAAM,8BAA8B;AACpC,MAAI,OAAO,aAAa,IAAI;QACvB;AAEL,QAAM,sCAAsC;AAC5C,SAAO,KAAK,IAAI;;;AAKtB,IAAa,4BAA4B,WACvC,SAAS,yBACP,KACA,KACA,MACM;AACN,OAAM,gCAAgC;AACtC,KAAI,OAAO,eACT,IAAI,OAAO,gBACX,SAAU,KAA2B;AACnC,MAAI,IAAI,UAAU,IAAI,UAAU,YAAY,eAAe,IAAI,SAAS,KAAK;AAC3E,SAAM,qBAAqB,KAAK,OAAO;AACvC,OAAI,EAAE,MAAM,IAAI,YAAY,KAAK,OAAO;AACtC,UAAM,kBAAkB,KAAK,OAAO;AACpC,QAAI,OAAO,IAAI,OAAO;AACtB,UAAM,iBAAiB,KAAK,QAAQ;AACpC,SAAK,EAAE,OAAO,IAAI,WAAW,UAAU,eAAe,CAAC;;SAEpD;AACL,SAAM,qBAAqB,KAAK,OAAO;AACvC,UAAO,MAAM,EAAO,KAAK,EAAE,kDAAkD;AAC7E,OAAI,CAAC,IAAI,UAAU,CAAC,IAAI,MAAM;AAE5B,WAAO,MAAM,qDAAqD;AAClE,UAAM,2EAA2E,IAAI;AACrF,QAAI,SAAS;cACJ,CAAC,IAAI,aAAa;AAC3B,UAAM,0BAA0B,IAAI;AACpC,QAAI,OAAO,YAAY,eAAe;AACtC,SAAK,EAAE,OAAO,UAAU,uBAAuB,CAAC;SAGhD,OAAM,+CAA+C,IAAI;;;AAKjE,OAAM,uDAAuD;AAC7D,OAAM"}
1
+ {"version":3,"file":"error.mjs","names":[],"sources":["../../src/middlewares/error.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport type { HttpError } from 'http-errors';\nimport { isError, isNil, noop } from 'lodash-es';\n\nimport type { VerdaccioError } from '@verdaccio/core';\nimport { API_ERROR, HTTP_STATUS } from '@verdaccio/core';\nimport type { Logger } from '@verdaccio/types';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types';\n\nconst debug = buildDebug('verdaccio:middleware:error');\n\nexport const handleError = (logger: Logger) =>\n function handleError(\n err: HttpError,\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ) {\n debug('error handler init');\n if (isError(err)) {\n debug('is native error');\n if (err.code === 'ECONNABORT' && res.statusCode === HTTP_STATUS.NOT_MODIFIED) {\n return next();\n }\n if (typeof res.locals.report_error !== 'function') {\n debug('is locals error report ref');\n // in case of very early error this middleware may not be loaded before error is generated\n // fixing that\n errorReportingMiddleware(logger)(req, res, noop);\n }\n debug('set locals error report ref');\n res.locals.report_error(err);\n } else {\n // Fall to Middleware.final\n debug('no error to report, jump next layer');\n return next(err);\n }\n };\n\n// Middleware\nexport const errorReportingMiddleware = (logger: Logger) =>\n function errorReportingMiddleware(\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ): void {\n debug('error report middleware start');\n res.locals.report_error =\n res.locals.report_error ||\n function (err: VerdaccioError): void {\n if (err.status && err.status >= HTTP_STATUS.BAD_REQUEST && err.status < 600) {\n debug('is error > 409 %o', err?.status);\n if (isNil(res.headersSent) === false) {\n debug('send status %o', err?.status);\n res.status(err.status);\n debug('next layer %o', err?.message);\n next({ error: err.message || API_ERROR.UNKNOWN_ERROR });\n }\n } else {\n debug('is error < 409 %o', err?.status);\n logger.error({ err: err }, 'unexpected error: @{!err.message}\\n@{err.stack}');\n if (!res.status || !res.send) {\n // TODO: decide which debug keep\n logger.error('this is an error in express.js, please report this');\n debug('this is an error in express.js, please report this, destroy response %o', err);\n res.destroy();\n } else if (!res.headersSent) {\n debug('send internal error %o', err);\n res.status(HTTP_STATUS.INTERNAL_ERROR);\n next({ error: API_ERROR.INTERNAL_SERVER_ERROR });\n } else {\n // socket should be already closed\n debug('this should not happen, otherwise report %o', err);\n }\n }\n };\n\n debug('error report middleware end (skip next layer) next()');\n next();\n };\n"],"mappings":";;;;AAUA,IAAM,QAAQ,WAAW,6BAA6B;AAEtD,IAAa,eAAe,WAC1B,SAAS,YACP,KACA,KACA,KACA,MACA;AACA,OAAM,qBAAqB;AAC3B,KAAI,QAAQ,IAAI,EAAE;AAChB,QAAM,kBAAkB;AACxB,MAAI,IAAI,SAAS,gBAAgB,IAAI,eAAe,YAAY,aAC9D,QAAO,MAAM;AAEf,MAAI,OAAO,IAAI,OAAO,iBAAiB,YAAY;AACjD,SAAM,6BAA6B;AAGnC,4BAAyB,OAAO,CAAC,KAAK,KAAK,KAAK;;AAElD,QAAM,8BAA8B;AACpC,MAAI,OAAO,aAAa,IAAI;QACvB;AAEL,QAAM,sCAAsC;AAC5C,SAAO,KAAK,IAAI;;;AAKtB,IAAa,4BAA4B,WACvC,SAAS,yBACP,KACA,KACA,MACM;AACN,OAAM,gCAAgC;AACtC,KAAI,OAAO,eACT,IAAI,OAAO,gBACX,SAAU,KAA2B;AACnC,MAAI,IAAI,UAAU,IAAI,UAAU,YAAY,eAAe,IAAI,SAAS,KAAK;AAC3E,SAAM,qBAAqB,KAAK,OAAO;AACvC,OAAI,MAAM,IAAI,YAAY,KAAK,OAAO;AACpC,UAAM,kBAAkB,KAAK,OAAO;AACpC,QAAI,OAAO,IAAI,OAAO;AACtB,UAAM,iBAAiB,KAAK,QAAQ;AACpC,SAAK,EAAE,OAAO,IAAI,WAAW,UAAU,eAAe,CAAC;;SAEpD;AACL,SAAM,qBAAqB,KAAK,OAAO;AACvC,UAAO,MAAM,EAAO,KAAK,EAAE,kDAAkD;AAC7E,OAAI,CAAC,IAAI,UAAU,CAAC,IAAI,MAAM;AAE5B,WAAO,MAAM,qDAAqD;AAClE,UAAM,2EAA2E,IAAI;AACrF,QAAI,SAAS;cACJ,CAAC,IAAI,aAAa;AAC3B,UAAM,0BAA0B,IAAI;AACpC,QAAI,OAAO,YAAY,eAAe;AACtC,SAAK,EAAE,OAAO,UAAU,uBAAuB,CAAC;SAGhD,OAAM,+CAA+C,IAAI;;;AAKjE,OAAM,uDAAuD;AAC7D,OAAM"}
@@ -2,8 +2,7 @@ const require_runtime = require("../_virtual/_rolldown/runtime.js");
2
2
  let _verdaccio_core = require("@verdaccio/core");
3
3
  let debug = require("debug");
4
4
  debug = require_runtime.__toESM(debug);
5
- let lodash = require("lodash");
6
- lodash = require_runtime.__toESM(lodash);
5
+ let lodash_es = require("lodash-es");
7
6
  //#region src/middlewares/final.ts
8
7
  var debug$1 = (0, debug.default)("verdaccio:middleware:final");
9
8
  function final(body, req, res, next) {
@@ -12,12 +11,12 @@ function final(body, req, res, next) {
12
11
  res.header(_verdaccio_core.HEADERS.WWW_AUTH, `${_verdaccio_core.TOKEN_BASIC}, ${_verdaccio_core.TOKEN_BEARER}`);
13
12
  }
14
13
  try {
15
- if (lodash.default.isString(body) || lodash.default.isObject(body)) {
14
+ if (typeof body === "string" || (0, lodash_es.isObject)(body)) {
16
15
  if (!res.get(_verdaccio_core.HEADERS.CONTENT_TYPE)) {
17
16
  debug$1("set json type header support");
18
17
  res.header(_verdaccio_core.HEADERS.CONTENT_TYPE, _verdaccio_core.HEADERS.JSON);
19
18
  }
20
- if (typeof body === "object" && lodash.default.isNil(body) === false) {
19
+ if (typeof body === "object" && (0, lodash_es.isNil)(body) === false) {
21
20
  if (typeof body.error === "string") {
22
21
  debug$1("set verdaccio_error method");
23
22
  res.locals._verdaccio_error = body.error;
@@ -33,7 +32,7 @@ function final(body, req, res, next) {
33
32
  } catch (err) {
34
33
  if (err.message.match(/set headers after they are sent/)) {
35
34
  debug$1("set headers after they are sent");
36
- if (lodash.default.isNil(res.socket) === false) {
35
+ if ((0, lodash_es.isNil)(res.socket) === false) {
37
36
  debug$1("force destroy socket");
38
37
  res.socket?.destroy();
39
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"final.js","names":[],"sources":["../../src/middlewares/final.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\n\nimport { HEADERS, HTTP_STATUS, TOKEN_BASIC, TOKEN_BEARER, cryptoUtils } from '@verdaccio/core';\nimport type { Manifest } from '@verdaccio/types';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend, MiddlewareError } from '../types';\n\nexport type FinalBody = Manifest | MiddlewareError | string;\n\nconst debug = buildDebug('verdaccio:middleware:final');\n\nexport function final(\n body: FinalBody,\n req: $RequestExtend,\n res: $ResponseExtend,\n // if we remove `next` breaks test\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n next: $NextFunctionVer\n): void {\n if (res.statusCode === HTTP_STATUS.UNAUTHORIZED && !res.getHeader(HEADERS.WWW_AUTH)) {\n debug('set auth header support');\n res.header(HEADERS.WWW_AUTH, `${TOKEN_BASIC}, ${TOKEN_BEARER}`);\n }\n\n try {\n if (_.isString(body) || _.isObject(body)) {\n if (!res.get(HEADERS.CONTENT_TYPE)) {\n debug('set json type header support');\n res.header(HEADERS.CONTENT_TYPE, HEADERS.JSON);\n }\n\n if (typeof body === 'object' && _.isNil(body) === false) {\n if (typeof (body as MiddlewareError).error === 'string') {\n debug('set verdaccio_error method');\n res.locals._verdaccio_error = (body as MiddlewareError).error;\n }\n body = JSON.stringify(body, undefined, ' ') + '\\n';\n }\n\n // don't send etags with errors\n if (\n !res.statusCode ||\n (res.statusCode >= HTTP_STATUS.OK && res.statusCode < HTTP_STATUS.MULTIPLE_CHOICES)\n ) {\n const etag = cryptoUtils.stringToMD5(body as string);\n debug('set etag header %s', etag);\n res.header(HEADERS.ETAG, '\"' + etag + '\"');\n }\n } else {\n debug('this line should never be visible, if does report');\n // send(null), send(204), etc.\n }\n } catch (err: any) {\n // if verdaccio sends headers first, and then calls res.send()\n // as an error handler, we can't report error properly,\n // and should just close socket\n if (err.message.match(/set headers after they are sent/)) {\n debug('set headers after they are sent');\n if (_.isNil(res.socket) === false) {\n debug('force destroy socket');\n res.socket?.destroy();\n }\n return;\n }\n throw err;\n }\n\n res.send(body);\n}\n"],"mappings":";;;;;;;AAUA,IAAM,WAAA,GAAA,MAAA,SAAmB,6BAA6B;AAEtD,SAAgB,MACd,MACA,KACA,KAGA,MACM;AACN,KAAI,IAAI,eAAe,gBAAA,YAAY,gBAAgB,CAAC,IAAI,UAAU,gBAAA,QAAQ,SAAS,EAAE;AACnF,UAAM,0BAA0B;AAChC,MAAI,OAAO,gBAAA,QAAQ,UAAU,GAAG,gBAAA,YAAY,IAAI,gBAAA,eAAe;;AAGjE,KAAI;AACF,MAAI,OAAA,QAAE,SAAS,KAAK,IAAI,OAAA,QAAE,SAAS,KAAK,EAAE;AACxC,OAAI,CAAC,IAAI,IAAI,gBAAA,QAAQ,aAAa,EAAE;AAClC,YAAM,+BAA+B;AACrC,QAAI,OAAO,gBAAA,QAAQ,cAAc,gBAAA,QAAQ,KAAK;;AAGhD,OAAI,OAAO,SAAS,YAAY,OAAA,QAAE,MAAM,KAAK,KAAK,OAAO;AACvD,QAAI,OAAQ,KAAyB,UAAU,UAAU;AACvD,aAAM,6BAA6B;AACnC,SAAI,OAAO,mBAAoB,KAAyB;;AAE1D,WAAO,KAAK,UAAU,MAAM,KAAA,GAAW,KAAK,GAAG;;AAIjD,OACE,CAAC,IAAI,cACJ,IAAI,cAAc,gBAAA,YAAY,MAAM,IAAI,aAAa,gBAAA,YAAY,kBAClE;IACA,MAAM,OAAO,gBAAA,YAAY,YAAY,KAAe;AACpD,YAAM,sBAAsB,KAAK;AACjC,QAAI,OAAO,gBAAA,QAAQ,MAAM,OAAM,OAAO,KAAI;;QAG5C,SAAM,oDAAoD;UAGrD,KAAU;AAIjB,MAAI,IAAI,QAAQ,MAAM,kCAAkC,EAAE;AACxD,WAAM,kCAAkC;AACxC,OAAI,OAAA,QAAE,MAAM,IAAI,OAAO,KAAK,OAAO;AACjC,YAAM,uBAAuB;AAC7B,QAAI,QAAQ,SAAS;;AAEvB;;AAEF,QAAM;;AAGR,KAAI,KAAK,KAAK"}
1
+ {"version":3,"file":"final.js","names":[],"sources":["../../src/middlewares/final.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { isNil, isObject } from 'lodash-es';\n\nimport { HEADERS, HTTP_STATUS, TOKEN_BASIC, TOKEN_BEARER, cryptoUtils } from '@verdaccio/core';\nimport type { Manifest } from '@verdaccio/types';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend, MiddlewareError } from '../types';\n\nexport type FinalBody = Manifest | MiddlewareError | string;\n\nconst debug = buildDebug('verdaccio:middleware:final');\n\nexport function final(\n body: FinalBody,\n req: $RequestExtend,\n res: $ResponseExtend,\n // if we remove `next` breaks test\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n next: $NextFunctionVer\n): void {\n if (res.statusCode === HTTP_STATUS.UNAUTHORIZED && !res.getHeader(HEADERS.WWW_AUTH)) {\n debug('set auth header support');\n res.header(HEADERS.WWW_AUTH, `${TOKEN_BASIC}, ${TOKEN_BEARER}`);\n }\n\n try {\n if (typeof body === 'string' || isObject(body)) {\n if (!res.get(HEADERS.CONTENT_TYPE)) {\n debug('set json type header support');\n res.header(HEADERS.CONTENT_TYPE, HEADERS.JSON);\n }\n\n if (typeof body === 'object' && isNil(body) === false) {\n if (typeof (body as MiddlewareError).error === 'string') {\n debug('set verdaccio_error method');\n res.locals._verdaccio_error = (body as MiddlewareError).error;\n }\n body = JSON.stringify(body, undefined, ' ') + '\\n';\n }\n\n // don't send etags with errors\n if (\n !res.statusCode ||\n (res.statusCode >= HTTP_STATUS.OK && res.statusCode < HTTP_STATUS.MULTIPLE_CHOICES)\n ) {\n const etag = cryptoUtils.stringToMD5(body as string);\n debug('set etag header %s', etag);\n res.header(HEADERS.ETAG, '\"' + etag + '\"');\n }\n } else {\n debug('this line should never be visible, if does report');\n // send(null), send(204), etc.\n }\n } catch (err: any) {\n // if verdaccio sends headers first, and then calls res.send()\n // as an error handler, we can't report error properly,\n // and should just close socket\n if (err.message.match(/set headers after they are sent/)) {\n debug('set headers after they are sent');\n if (isNil(res.socket) === false) {\n debug('force destroy socket');\n res.socket?.destroy();\n }\n return;\n }\n throw err;\n }\n\n res.send(body);\n}\n"],"mappings":";;;;;;AAUA,IAAM,WAAA,GAAA,MAAA,SAAmB,6BAA6B;AAEtD,SAAgB,MACd,MACA,KACA,KAGA,MACM;AACN,KAAI,IAAI,eAAe,gBAAA,YAAY,gBAAgB,CAAC,IAAI,UAAU,gBAAA,QAAQ,SAAS,EAAE;AACnF,UAAM,0BAA0B;AAChC,MAAI,OAAO,gBAAA,QAAQ,UAAU,GAAG,gBAAA,YAAY,IAAI,gBAAA,eAAe;;AAGjE,KAAI;AACF,MAAI,OAAO,SAAS,aAAA,GAAA,UAAA,UAAqB,KAAK,EAAE;AAC9C,OAAI,CAAC,IAAI,IAAI,gBAAA,QAAQ,aAAa,EAAE;AAClC,YAAM,+BAA+B;AACrC,QAAI,OAAO,gBAAA,QAAQ,cAAc,gBAAA,QAAQ,KAAK;;AAGhD,OAAI,OAAO,SAAS,aAAA,GAAA,UAAA,OAAkB,KAAK,KAAK,OAAO;AACrD,QAAI,OAAQ,KAAyB,UAAU,UAAU;AACvD,aAAM,6BAA6B;AACnC,SAAI,OAAO,mBAAoB,KAAyB;;AAE1D,WAAO,KAAK,UAAU,MAAM,KAAA,GAAW,KAAK,GAAG;;AAIjD,OACE,CAAC,IAAI,cACJ,IAAI,cAAc,gBAAA,YAAY,MAAM,IAAI,aAAa,gBAAA,YAAY,kBAClE;IACA,MAAM,OAAO,gBAAA,YAAY,YAAY,KAAe;AACpD,YAAM,sBAAsB,KAAK;AACjC,QAAI,OAAO,gBAAA,QAAQ,MAAM,OAAM,OAAO,KAAI;;QAG5C,SAAM,oDAAoD;UAGrD,KAAU;AAIjB,MAAI,IAAI,QAAQ,MAAM,kCAAkC,EAAE;AACxD,WAAM,kCAAkC;AACxC,QAAA,GAAA,UAAA,OAAU,IAAI,OAAO,KAAK,OAAO;AAC/B,YAAM,uBAAuB;AAC7B,QAAI,QAAQ,SAAS;;AAEvB;;AAEF,QAAM;;AAGR,KAAI,KAAK,KAAK"}
@@ -1,6 +1,6 @@
1
1
  import { HEADERS, HTTP_STATUS, TOKEN_BASIC, TOKEN_BEARER, cryptoUtils } from "@verdaccio/core";
2
2
  import buildDebug from "debug";
3
- import _ from "lodash";
3
+ import { isNil, isObject } from "lodash-es";
4
4
  //#region src/middlewares/final.ts
5
5
  var debug = buildDebug("verdaccio:middleware:final");
6
6
  function final(body, req, res, next) {
@@ -9,12 +9,12 @@ function final(body, req, res, next) {
9
9
  res.header(HEADERS.WWW_AUTH, `${TOKEN_BASIC}, ${TOKEN_BEARER}`);
10
10
  }
11
11
  try {
12
- if (_.isString(body) || _.isObject(body)) {
12
+ if (typeof body === "string" || isObject(body)) {
13
13
  if (!res.get(HEADERS.CONTENT_TYPE)) {
14
14
  debug("set json type header support");
15
15
  res.header(HEADERS.CONTENT_TYPE, HEADERS.JSON);
16
16
  }
17
- if (typeof body === "object" && _.isNil(body) === false) {
17
+ if (typeof body === "object" && isNil(body) === false) {
18
18
  if (typeof body.error === "string") {
19
19
  debug("set verdaccio_error method");
20
20
  res.locals._verdaccio_error = body.error;
@@ -30,7 +30,7 @@ function final(body, req, res, next) {
30
30
  } catch (err) {
31
31
  if (err.message.match(/set headers after they are sent/)) {
32
32
  debug("set headers after they are sent");
33
- if (_.isNil(res.socket) === false) {
33
+ if (isNil(res.socket) === false) {
34
34
  debug("force destroy socket");
35
35
  res.socket?.destroy();
36
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"final.mjs","names":[],"sources":["../../src/middlewares/final.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\n\nimport { HEADERS, HTTP_STATUS, TOKEN_BASIC, TOKEN_BEARER, cryptoUtils } from '@verdaccio/core';\nimport type { Manifest } from '@verdaccio/types';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend, MiddlewareError } from '../types';\n\nexport type FinalBody = Manifest | MiddlewareError | string;\n\nconst debug = buildDebug('verdaccio:middleware:final');\n\nexport function final(\n body: FinalBody,\n req: $RequestExtend,\n res: $ResponseExtend,\n // if we remove `next` breaks test\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n next: $NextFunctionVer\n): void {\n if (res.statusCode === HTTP_STATUS.UNAUTHORIZED && !res.getHeader(HEADERS.WWW_AUTH)) {\n debug('set auth header support');\n res.header(HEADERS.WWW_AUTH, `${TOKEN_BASIC}, ${TOKEN_BEARER}`);\n }\n\n try {\n if (_.isString(body) || _.isObject(body)) {\n if (!res.get(HEADERS.CONTENT_TYPE)) {\n debug('set json type header support');\n res.header(HEADERS.CONTENT_TYPE, HEADERS.JSON);\n }\n\n if (typeof body === 'object' && _.isNil(body) === false) {\n if (typeof (body as MiddlewareError).error === 'string') {\n debug('set verdaccio_error method');\n res.locals._verdaccio_error = (body as MiddlewareError).error;\n }\n body = JSON.stringify(body, undefined, ' ') + '\\n';\n }\n\n // don't send etags with errors\n if (\n !res.statusCode ||\n (res.statusCode >= HTTP_STATUS.OK && res.statusCode < HTTP_STATUS.MULTIPLE_CHOICES)\n ) {\n const etag = cryptoUtils.stringToMD5(body as string);\n debug('set etag header %s', etag);\n res.header(HEADERS.ETAG, '\"' + etag + '\"');\n }\n } else {\n debug('this line should never be visible, if does report');\n // send(null), send(204), etc.\n }\n } catch (err: any) {\n // if verdaccio sends headers first, and then calls res.send()\n // as an error handler, we can't report error properly,\n // and should just close socket\n if (err.message.match(/set headers after they are sent/)) {\n debug('set headers after they are sent');\n if (_.isNil(res.socket) === false) {\n debug('force destroy socket');\n res.socket?.destroy();\n }\n return;\n }\n throw err;\n }\n\n res.send(body);\n}\n"],"mappings":";;;;AAUA,IAAM,QAAQ,WAAW,6BAA6B;AAEtD,SAAgB,MACd,MACA,KACA,KAGA,MACM;AACN,KAAI,IAAI,eAAe,YAAY,gBAAgB,CAAC,IAAI,UAAU,QAAQ,SAAS,EAAE;AACnF,QAAM,0BAA0B;AAChC,MAAI,OAAO,QAAQ,UAAU,GAAG,YAAY,IAAI,eAAe;;AAGjE,KAAI;AACF,MAAI,EAAE,SAAS,KAAK,IAAI,EAAE,SAAS,KAAK,EAAE;AACxC,OAAI,CAAC,IAAI,IAAI,QAAQ,aAAa,EAAE;AAClC,UAAM,+BAA+B;AACrC,QAAI,OAAO,QAAQ,cAAc,QAAQ,KAAK;;AAGhD,OAAI,OAAO,SAAS,YAAY,EAAE,MAAM,KAAK,KAAK,OAAO;AACvD,QAAI,OAAQ,KAAyB,UAAU,UAAU;AACvD,WAAM,6BAA6B;AACnC,SAAI,OAAO,mBAAoB,KAAyB;;AAE1D,WAAO,KAAK,UAAU,MAAM,KAAA,GAAW,KAAK,GAAG;;AAIjD,OACE,CAAC,IAAI,cACJ,IAAI,cAAc,YAAY,MAAM,IAAI,aAAa,YAAY,kBAClE;IACA,MAAM,OAAO,YAAY,YAAY,KAAe;AACpD,UAAM,sBAAsB,KAAK;AACjC,QAAI,OAAO,QAAQ,MAAM,OAAM,OAAO,KAAI;;QAG5C,OAAM,oDAAoD;UAGrD,KAAU;AAIjB,MAAI,IAAI,QAAQ,MAAM,kCAAkC,EAAE;AACxD,SAAM,kCAAkC;AACxC,OAAI,EAAE,MAAM,IAAI,OAAO,KAAK,OAAO;AACjC,UAAM,uBAAuB;AAC7B,QAAI,QAAQ,SAAS;;AAEvB;;AAEF,QAAM;;AAGR,KAAI,KAAK,KAAK"}
1
+ {"version":3,"file":"final.mjs","names":[],"sources":["../../src/middlewares/final.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { isNil, isObject } from 'lodash-es';\n\nimport { HEADERS, HTTP_STATUS, TOKEN_BASIC, TOKEN_BEARER, cryptoUtils } from '@verdaccio/core';\nimport type { Manifest } from '@verdaccio/types';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend, MiddlewareError } from '../types';\n\nexport type FinalBody = Manifest | MiddlewareError | string;\n\nconst debug = buildDebug('verdaccio:middleware:final');\n\nexport function final(\n body: FinalBody,\n req: $RequestExtend,\n res: $ResponseExtend,\n // if we remove `next` breaks test\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n next: $NextFunctionVer\n): void {\n if (res.statusCode === HTTP_STATUS.UNAUTHORIZED && !res.getHeader(HEADERS.WWW_AUTH)) {\n debug('set auth header support');\n res.header(HEADERS.WWW_AUTH, `${TOKEN_BASIC}, ${TOKEN_BEARER}`);\n }\n\n try {\n if (typeof body === 'string' || isObject(body)) {\n if (!res.get(HEADERS.CONTENT_TYPE)) {\n debug('set json type header support');\n res.header(HEADERS.CONTENT_TYPE, HEADERS.JSON);\n }\n\n if (typeof body === 'object' && isNil(body) === false) {\n if (typeof (body as MiddlewareError).error === 'string') {\n debug('set verdaccio_error method');\n res.locals._verdaccio_error = (body as MiddlewareError).error;\n }\n body = JSON.stringify(body, undefined, ' ') + '\\n';\n }\n\n // don't send etags with errors\n if (\n !res.statusCode ||\n (res.statusCode >= HTTP_STATUS.OK && res.statusCode < HTTP_STATUS.MULTIPLE_CHOICES)\n ) {\n const etag = cryptoUtils.stringToMD5(body as string);\n debug('set etag header %s', etag);\n res.header(HEADERS.ETAG, '\"' + etag + '\"');\n }\n } else {\n debug('this line should never be visible, if does report');\n // send(null), send(204), etc.\n }\n } catch (err: any) {\n // if verdaccio sends headers first, and then calls res.send()\n // as an error handler, we can't report error properly,\n // and should just close socket\n if (err.message.match(/set headers after they are sent/)) {\n debug('set headers after they are sent');\n if (isNil(res.socket) === false) {\n debug('force destroy socket');\n res.socket?.destroy();\n }\n return;\n }\n throw err;\n }\n\n res.send(body);\n}\n"],"mappings":";;;;AAUA,IAAM,QAAQ,WAAW,6BAA6B;AAEtD,SAAgB,MACd,MACA,KACA,KAGA,MACM;AACN,KAAI,IAAI,eAAe,YAAY,gBAAgB,CAAC,IAAI,UAAU,QAAQ,SAAS,EAAE;AACnF,QAAM,0BAA0B;AAChC,MAAI,OAAO,QAAQ,UAAU,GAAG,YAAY,IAAI,eAAe;;AAGjE,KAAI;AACF,MAAI,OAAO,SAAS,YAAY,SAAS,KAAK,EAAE;AAC9C,OAAI,CAAC,IAAI,IAAI,QAAQ,aAAa,EAAE;AAClC,UAAM,+BAA+B;AACrC,QAAI,OAAO,QAAQ,cAAc,QAAQ,KAAK;;AAGhD,OAAI,OAAO,SAAS,YAAY,MAAM,KAAK,KAAK,OAAO;AACrD,QAAI,OAAQ,KAAyB,UAAU,UAAU;AACvD,WAAM,6BAA6B;AACnC,SAAI,OAAO,mBAAoB,KAAyB;;AAE1D,WAAO,KAAK,UAAU,MAAM,KAAA,GAAW,KAAK,GAAG;;AAIjD,OACE,CAAC,IAAI,cACJ,IAAI,cAAc,YAAY,MAAM,IAAI,aAAa,YAAY,kBAClE;IACA,MAAM,OAAO,YAAY,YAAY,KAAe;AACpD,UAAM,sBAAsB,KAAK;AACjC,QAAI,OAAO,QAAQ,MAAM,OAAM,OAAO,KAAI;;QAG5C,OAAM,oDAAoD;UAGrD,KAAU;AAIjB,MAAI,IAAI,QAAQ,MAAM,kCAAkC,EAAE;AACxD,SAAM,kCAAkC;AACxC,OAAI,MAAM,IAAI,OAAO,KAAK,OAAO;AAC/B,UAAM,uBAAuB;AAC7B,QAAI,QAAQ,SAAS;;AAEvB;;AAEF,QAAM;;AAGR,KAAI,KAAK,KAAK"}
@@ -2,8 +2,7 @@ const require_runtime = require("../_virtual/_rolldown/runtime.js");
2
2
  let _verdaccio_core = require("@verdaccio/core");
3
3
  let debug = require("debug");
4
4
  debug = require_runtime.__toESM(debug);
5
- let lodash = require("lodash");
6
- lodash = require_runtime.__toESM(lodash);
5
+ let lodash_es = require("lodash-es");
7
6
  //#region src/middlewares/log.ts
8
7
  var debug$1 = (0, debug.default)("verdaccio:middleware:log");
9
8
  function isStaticRequest(url) {
@@ -17,9 +16,9 @@ var log = (logger, options = {}) => {
17
16
  return function log(req, res, next) {
18
17
  req.log = logger.child({ sub: "in" });
19
18
  const _auth = req.headers.authorization;
20
- if (lodash.default.isNil(_auth) === false) req.headers.authorization = "<Classified>";
19
+ if ((0, lodash_es.isNil)(_auth) === false) req.headers.authorization = "<Classified>";
21
20
  const _cookie = req.get("cookie");
22
- if (lodash.default.isNil(_cookie) === false) req.headers.cookie = "<Classified>";
21
+ if ((0, lodash_es.isNil)(_cookie) === false) req.headers.cookie = "<Classified>";
23
22
  req.url = req.originalUrl;
24
23
  const _skipLog = hideStaticLogs && isStaticRequest(req.url);
25
24
  if (_skipLog) debug$1("@{ip} requested '@{req.method} @{req.url}'", {
@@ -31,8 +30,8 @@ var log = (logger, options = {}) => {
31
30
  ip: req.ip
32
31
  }, "@{ip} requested '@{req.method} @{req.url}'");
33
32
  req.originalUrl = req.url;
34
- if (lodash.default.isNil(_auth) === false) req.headers.authorization = _auth;
35
- if (lodash.default.isNil(_cookie) === false) req.headers.cookie = _cookie;
33
+ if ((0, lodash_es.isNil)(_auth) === false) req.headers.authorization = _auth;
34
+ if ((0, lodash_es.isNil)(_cookie) === false) req.headers.cookie = _cookie;
36
35
  let bytesin = 0;
37
36
  req.on("data", function(chunk) {
38
37
  bytesin += chunk.length;
@@ -1 +1 @@
1
- {"version":3,"file":"log.js","names":[],"sources":["../../src/middlewares/log.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\n\nimport { HEADERS } from '@verdaccio/core';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types';\n\nconst debug = buildDebug('verdaccio:middleware:log');\n\nfunction isStaticRequest(url: string): boolean {\n return url.startsWith('/-/static/');\n}\n\n// FIXME: deprecated, moved to @verdaccio/dev-commons\nexport const LOG_STATUS_MESSAGE =\n \"@{status}, user: @{user}(@{remoteIP}), req: '@{request.method} @{request.url}'\";\nexport const LOG_VERDACCIO_ERROR = `${LOG_STATUS_MESSAGE}, error: @{!error}`;\nexport const LOG_VERDACCIO_BYTES = `${LOG_STATUS_MESSAGE}, bytes: @{bytes.in}/@{bytes.out}`;\n\nexport type LogOptions = {\n // When true, static file requests (/-/static/*) are hidden from pino logs\n // and only visible via DEBUG=verdaccio:middleware:log. Defaults to true.\n hideStaticLogs?: boolean;\n};\n\nexport const log = (logger, options: LogOptions = {}) => {\n const { hideStaticLogs = true } = options;\n\n return function log(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n // logger\n req.log = logger.child({ sub: 'in' });\n\n const _auth = req.headers.authorization;\n if (_.isNil(_auth) === false) {\n req.headers.authorization = '<Classified>';\n }\n\n const _cookie = req.get('cookie');\n if (_.isNil(_cookie) === false) {\n req.headers.cookie = '<Classified>';\n }\n\n req.url = req.originalUrl;\n const _skipLog = hideStaticLogs && isStaticRequest(req.url);\n if (_skipLog) {\n debug(\"@{ip} requested '@{req.method} @{req.url}'\", { ip: req.ip, req });\n } else {\n req.log.info({ req: req, ip: req.ip }, \"@{ip} requested '@{req.method} @{req.url}'\");\n }\n req.originalUrl = req.url;\n\n if (_.isNil(_auth) === false) {\n req.headers.authorization = _auth;\n }\n\n if (_.isNil(_cookie) === false) {\n req.headers.cookie = _cookie;\n }\n\n let bytesin = 0;\n req.on('data', function (chunk): void {\n bytesin += chunk.length;\n });\n\n let bytesout = 0;\n const _write = res.write;\n // @ts-ignore\n res.write = function (...args): boolean {\n bytesout += args[0]?.length || 0;\n // @ts-ignore\n return _write.apply(res, args);\n };\n\n const log = function (): void {\n const forwardedFor = req.get(HEADERS.FORWARDED_FOR);\n const remoteAddress = req.socket.remoteAddress;\n const remoteIP = forwardedFor ? `${forwardedFor} via ${remoteAddress}` : remoteAddress;\n let message;\n if (res.locals._verdaccio_error) {\n message = LOG_VERDACCIO_ERROR;\n } else {\n message = LOG_VERDACCIO_BYTES;\n }\n\n req.url = req.originalUrl;\n if (_skipLog) {\n debug(message, {\n request: { method: req.method, url: req.url },\n user: req.remote_user?.name || null,\n remoteIP,\n status: res.statusCode,\n error: res.locals._verdaccio_error,\n bytes: { in: bytesin, out: bytesout },\n });\n } else {\n req.log.http(\n {\n request: {\n method: req.method,\n url: req.url,\n },\n user: req.remote_user?.name || null,\n remoteIP,\n status: res.statusCode,\n error: res.locals._verdaccio_error,\n bytes: {\n in: bytesin,\n out: bytesout,\n },\n },\n message\n );\n }\n req.originalUrl = req.url;\n };\n\n req.on('close', function (): void {\n log();\n });\n\n const _end = res.end;\n // @ts-ignore\n res.end = function (...args): void {\n if (args[0]) {\n bytesout += args[0].length;\n }\n // @ts-ignore\n _end.apply(res, args);\n log();\n };\n next();\n };\n};\n"],"mappings":";;;;;;;AAOA,IAAM,WAAA,GAAA,MAAA,SAAmB,2BAA2B;AAEpD,SAAS,gBAAgB,KAAsB;AAC7C,QAAO,IAAI,WAAW,aAAa;;AAIrC,IAAa,qBACX;AACF,IAAa,sBAAsB,GAAG,mBAAmB;AACzD,IAAa,sBAAsB,GAAG,mBAAmB;AAQzD,IAAa,OAAO,QAAQ,UAAsB,EAAE,KAAK;CACvD,MAAM,EAAE,iBAAiB,SAAS;AAElC,QAAO,SAAS,IAAI,KAAqB,KAAsB,MAA8B;AAE3F,MAAI,MAAM,OAAO,MAAM,EAAE,KAAK,MAAM,CAAC;EAErC,MAAM,QAAQ,IAAI,QAAQ;AAC1B,MAAI,OAAA,QAAE,MAAM,MAAM,KAAK,MACrB,KAAI,QAAQ,gBAAgB;EAG9B,MAAM,UAAU,IAAI,IAAI,SAAS;AACjC,MAAI,OAAA,QAAE,MAAM,QAAQ,KAAK,MACvB,KAAI,QAAQ,SAAS;AAGvB,MAAI,MAAM,IAAI;EACd,MAAM,WAAW,kBAAkB,gBAAgB,IAAI,IAAI;AAC3D,MAAI,SACF,SAAM,8CAA8C;GAAE,IAAI,IAAI;GAAI;GAAK,CAAC;MAExE,KAAI,IAAI,KAAK;GAAO;GAAK,IAAI,IAAI;GAAI,EAAE,6CAA6C;AAEtF,MAAI,cAAc,IAAI;AAEtB,MAAI,OAAA,QAAE,MAAM,MAAM,KAAK,MACrB,KAAI,QAAQ,gBAAgB;AAG9B,MAAI,OAAA,QAAE,MAAM,QAAQ,KAAK,MACvB,KAAI,QAAQ,SAAS;EAGvB,IAAI,UAAU;AACd,MAAI,GAAG,QAAQ,SAAU,OAAa;AACpC,cAAW,MAAM;IACjB;EAEF,IAAI,WAAW;EACf,MAAM,SAAS,IAAI;AAEnB,MAAI,QAAQ,SAAU,GAAG,MAAe;AACtC,eAAY,KAAK,IAAI,UAAU;AAE/B,UAAO,OAAO,MAAM,KAAK,KAAK;;EAGhC,MAAM,MAAM,WAAkB;GAC5B,MAAM,eAAe,IAAI,IAAI,gBAAA,QAAQ,cAAc;GACnD,MAAM,gBAAgB,IAAI,OAAO;GACjC,MAAM,WAAW,eAAe,GAAG,aAAa,OAAO,kBAAkB;GACzE,IAAI;AACJ,OAAI,IAAI,OAAO,iBACb,WAAU;OAEV,WAAU;AAGZ,OAAI,MAAM,IAAI;AACd,OAAI,SACF,SAAM,SAAS;IACb,SAAS;KAAE,QAAQ,IAAI;KAAQ,KAAK,IAAI;KAAK;IAC7C,MAAM,IAAI,aAAa,QAAQ;IAC/B;IACA,QAAQ,IAAI;IACZ,OAAO,IAAI,OAAO;IAClB,OAAO;KAAE,IAAI;KAAS,KAAK;KAAU;IACtC,CAAC;OAEF,KAAI,IAAI,KACN;IACE,SAAS;KACP,QAAQ,IAAI;KACZ,KAAK,IAAI;KACV;IACD,MAAM,IAAI,aAAa,QAAQ;IAC/B;IACA,QAAQ,IAAI;IACZ,OAAO,IAAI,OAAO;IAClB,OAAO;KACL,IAAI;KACJ,KAAK;KACN;IACF,EACD,QACD;AAEH,OAAI,cAAc,IAAI;;AAGxB,MAAI,GAAG,SAAS,WAAkB;AAChC,QAAK;IACL;EAEF,MAAM,OAAO,IAAI;AAEjB,MAAI,MAAM,SAAU,GAAG,MAAY;AACjC,OAAI,KAAK,GACP,aAAY,KAAK,GAAG;AAGtB,QAAK,MAAM,KAAK,KAAK;AACrB,QAAK;;AAEP,QAAM"}
1
+ {"version":3,"file":"log.js","names":[],"sources":["../../src/middlewares/log.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { isNil } from 'lodash-es';\n\nimport { HEADERS } from '@verdaccio/core';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types';\n\nconst debug = buildDebug('verdaccio:middleware:log');\n\nfunction isStaticRequest(url: string): boolean {\n return url.startsWith('/-/static/');\n}\n\n// FIXME: deprecated, moved to @verdaccio/dev-commons\nexport const LOG_STATUS_MESSAGE =\n \"@{status}, user: @{user}(@{remoteIP}), req: '@{request.method} @{request.url}'\";\nexport const LOG_VERDACCIO_ERROR = `${LOG_STATUS_MESSAGE}, error: @{!error}`;\nexport const LOG_VERDACCIO_BYTES = `${LOG_STATUS_MESSAGE}, bytes: @{bytes.in}/@{bytes.out}`;\n\nexport type LogOptions = {\n // When true, static file requests (/-/static/*) are hidden from pino logs\n // and only visible via DEBUG=verdaccio:middleware:log. Defaults to true.\n hideStaticLogs?: boolean;\n};\n\nexport const log = (logger, options: LogOptions = {}) => {\n const { hideStaticLogs = true } = options;\n\n return function log(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n // logger\n req.log = logger.child({ sub: 'in' });\n\n const _auth = req.headers.authorization;\n if (isNil(_auth) === false) {\n req.headers.authorization = '<Classified>';\n }\n\n const _cookie = req.get('cookie');\n if (isNil(_cookie) === false) {\n req.headers.cookie = '<Classified>';\n }\n\n req.url = req.originalUrl;\n const _skipLog = hideStaticLogs && isStaticRequest(req.url);\n if (_skipLog) {\n debug(\"@{ip} requested '@{req.method} @{req.url}'\", { ip: req.ip, req });\n } else {\n req.log.info({ req: req, ip: req.ip }, \"@{ip} requested '@{req.method} @{req.url}'\");\n }\n req.originalUrl = req.url;\n\n if (isNil(_auth) === false) {\n req.headers.authorization = _auth;\n }\n\n if (isNil(_cookie) === false) {\n req.headers.cookie = _cookie;\n }\n\n let bytesin = 0;\n req.on('data', function (chunk): void {\n bytesin += chunk.length;\n });\n\n let bytesout = 0;\n const _write = res.write;\n // @ts-ignore\n res.write = function (...args): boolean {\n bytesout += args[0]?.length || 0;\n // @ts-ignore\n return _write.apply(res, args);\n };\n\n const log = function (): void {\n const forwardedFor = req.get(HEADERS.FORWARDED_FOR);\n const remoteAddress = req.socket.remoteAddress;\n const remoteIP = forwardedFor ? `${forwardedFor} via ${remoteAddress}` : remoteAddress;\n let message;\n if (res.locals._verdaccio_error) {\n message = LOG_VERDACCIO_ERROR;\n } else {\n message = LOG_VERDACCIO_BYTES;\n }\n\n req.url = req.originalUrl;\n if (_skipLog) {\n debug(message, {\n request: { method: req.method, url: req.url },\n user: req.remote_user?.name || null,\n remoteIP,\n status: res.statusCode,\n error: res.locals._verdaccio_error,\n bytes: { in: bytesin, out: bytesout },\n });\n } else {\n req.log.http(\n {\n request: {\n method: req.method,\n url: req.url,\n },\n user: req.remote_user?.name || null,\n remoteIP,\n status: res.statusCode,\n error: res.locals._verdaccio_error,\n bytes: {\n in: bytesin,\n out: bytesout,\n },\n },\n message\n );\n }\n req.originalUrl = req.url;\n };\n\n req.on('close', function (): void {\n log();\n });\n\n const _end = res.end;\n // @ts-ignore\n res.end = function (...args): void {\n if (args[0]) {\n bytesout += args[0].length;\n }\n // @ts-ignore\n _end.apply(res, args);\n log();\n };\n next();\n };\n};\n"],"mappings":";;;;;;AAOA,IAAM,WAAA,GAAA,MAAA,SAAmB,2BAA2B;AAEpD,SAAS,gBAAgB,KAAsB;AAC7C,QAAO,IAAI,WAAW,aAAa;;AAIrC,IAAa,qBACX;AACF,IAAa,sBAAsB,GAAG,mBAAmB;AACzD,IAAa,sBAAsB,GAAG,mBAAmB;AAQzD,IAAa,OAAO,QAAQ,UAAsB,EAAE,KAAK;CACvD,MAAM,EAAE,iBAAiB,SAAS;AAElC,QAAO,SAAS,IAAI,KAAqB,KAAsB,MAA8B;AAE3F,MAAI,MAAM,OAAO,MAAM,EAAE,KAAK,MAAM,CAAC;EAErC,MAAM,QAAQ,IAAI,QAAQ;AAC1B,OAAA,GAAA,UAAA,OAAU,MAAM,KAAK,MACnB,KAAI,QAAQ,gBAAgB;EAG9B,MAAM,UAAU,IAAI,IAAI,SAAS;AACjC,OAAA,GAAA,UAAA,OAAU,QAAQ,KAAK,MACrB,KAAI,QAAQ,SAAS;AAGvB,MAAI,MAAM,IAAI;EACd,MAAM,WAAW,kBAAkB,gBAAgB,IAAI,IAAI;AAC3D,MAAI,SACF,SAAM,8CAA8C;GAAE,IAAI,IAAI;GAAI;GAAK,CAAC;MAExE,KAAI,IAAI,KAAK;GAAO;GAAK,IAAI,IAAI;GAAI,EAAE,6CAA6C;AAEtF,MAAI,cAAc,IAAI;AAEtB,OAAA,GAAA,UAAA,OAAU,MAAM,KAAK,MACnB,KAAI,QAAQ,gBAAgB;AAG9B,OAAA,GAAA,UAAA,OAAU,QAAQ,KAAK,MACrB,KAAI,QAAQ,SAAS;EAGvB,IAAI,UAAU;AACd,MAAI,GAAG,QAAQ,SAAU,OAAa;AACpC,cAAW,MAAM;IACjB;EAEF,IAAI,WAAW;EACf,MAAM,SAAS,IAAI;AAEnB,MAAI,QAAQ,SAAU,GAAG,MAAe;AACtC,eAAY,KAAK,IAAI,UAAU;AAE/B,UAAO,OAAO,MAAM,KAAK,KAAK;;EAGhC,MAAM,MAAM,WAAkB;GAC5B,MAAM,eAAe,IAAI,IAAI,gBAAA,QAAQ,cAAc;GACnD,MAAM,gBAAgB,IAAI,OAAO;GACjC,MAAM,WAAW,eAAe,GAAG,aAAa,OAAO,kBAAkB;GACzE,IAAI;AACJ,OAAI,IAAI,OAAO,iBACb,WAAU;OAEV,WAAU;AAGZ,OAAI,MAAM,IAAI;AACd,OAAI,SACF,SAAM,SAAS;IACb,SAAS;KAAE,QAAQ,IAAI;KAAQ,KAAK,IAAI;KAAK;IAC7C,MAAM,IAAI,aAAa,QAAQ;IAC/B;IACA,QAAQ,IAAI;IACZ,OAAO,IAAI,OAAO;IAClB,OAAO;KAAE,IAAI;KAAS,KAAK;KAAU;IACtC,CAAC;OAEF,KAAI,IAAI,KACN;IACE,SAAS;KACP,QAAQ,IAAI;KACZ,KAAK,IAAI;KACV;IACD,MAAM,IAAI,aAAa,QAAQ;IAC/B;IACA,QAAQ,IAAI;IACZ,OAAO,IAAI,OAAO;IAClB,OAAO;KACL,IAAI;KACJ,KAAK;KACN;IACF,EACD,QACD;AAEH,OAAI,cAAc,IAAI;;AAGxB,MAAI,GAAG,SAAS,WAAkB;AAChC,QAAK;IACL;EAEF,MAAM,OAAO,IAAI;AAEjB,MAAI,MAAM,SAAU,GAAG,MAAY;AACjC,OAAI,KAAK,GACP,aAAY,KAAK,GAAG;AAGtB,QAAK,MAAM,KAAK,KAAK;AACrB,QAAK;;AAEP,QAAM"}
@@ -1,6 +1,6 @@
1
1
  import { HEADERS } from "@verdaccio/core";
2
2
  import buildDebug from "debug";
3
- import _ from "lodash";
3
+ import { isNil } from "lodash-es";
4
4
  //#region src/middlewares/log.ts
5
5
  var debug = buildDebug("verdaccio:middleware:log");
6
6
  function isStaticRequest(url) {
@@ -14,9 +14,9 @@ var log = (logger, options = {}) => {
14
14
  return function log(req, res, next) {
15
15
  req.log = logger.child({ sub: "in" });
16
16
  const _auth = req.headers.authorization;
17
- if (_.isNil(_auth) === false) req.headers.authorization = "<Classified>";
17
+ if (isNil(_auth) === false) req.headers.authorization = "<Classified>";
18
18
  const _cookie = req.get("cookie");
19
- if (_.isNil(_cookie) === false) req.headers.cookie = "<Classified>";
19
+ if (isNil(_cookie) === false) req.headers.cookie = "<Classified>";
20
20
  req.url = req.originalUrl;
21
21
  const _skipLog = hideStaticLogs && isStaticRequest(req.url);
22
22
  if (_skipLog) debug("@{ip} requested '@{req.method} @{req.url}'", {
@@ -28,8 +28,8 @@ var log = (logger, options = {}) => {
28
28
  ip: req.ip
29
29
  }, "@{ip} requested '@{req.method} @{req.url}'");
30
30
  req.originalUrl = req.url;
31
- if (_.isNil(_auth) === false) req.headers.authorization = _auth;
32
- if (_.isNil(_cookie) === false) req.headers.cookie = _cookie;
31
+ if (isNil(_auth) === false) req.headers.authorization = _auth;
32
+ if (isNil(_cookie) === false) req.headers.cookie = _cookie;
33
33
  let bytesin = 0;
34
34
  req.on("data", function(chunk) {
35
35
  bytesin += chunk.length;
@@ -1 +1 @@
1
- {"version":3,"file":"log.mjs","names":[],"sources":["../../src/middlewares/log.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\n\nimport { HEADERS } from '@verdaccio/core';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types';\n\nconst debug = buildDebug('verdaccio:middleware:log');\n\nfunction isStaticRequest(url: string): boolean {\n return url.startsWith('/-/static/');\n}\n\n// FIXME: deprecated, moved to @verdaccio/dev-commons\nexport const LOG_STATUS_MESSAGE =\n \"@{status}, user: @{user}(@{remoteIP}), req: '@{request.method} @{request.url}'\";\nexport const LOG_VERDACCIO_ERROR = `${LOG_STATUS_MESSAGE}, error: @{!error}`;\nexport const LOG_VERDACCIO_BYTES = `${LOG_STATUS_MESSAGE}, bytes: @{bytes.in}/@{bytes.out}`;\n\nexport type LogOptions = {\n // When true, static file requests (/-/static/*) are hidden from pino logs\n // and only visible via DEBUG=verdaccio:middleware:log. Defaults to true.\n hideStaticLogs?: boolean;\n};\n\nexport const log = (logger, options: LogOptions = {}) => {\n const { hideStaticLogs = true } = options;\n\n return function log(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n // logger\n req.log = logger.child({ sub: 'in' });\n\n const _auth = req.headers.authorization;\n if (_.isNil(_auth) === false) {\n req.headers.authorization = '<Classified>';\n }\n\n const _cookie = req.get('cookie');\n if (_.isNil(_cookie) === false) {\n req.headers.cookie = '<Classified>';\n }\n\n req.url = req.originalUrl;\n const _skipLog = hideStaticLogs && isStaticRequest(req.url);\n if (_skipLog) {\n debug(\"@{ip} requested '@{req.method} @{req.url}'\", { ip: req.ip, req });\n } else {\n req.log.info({ req: req, ip: req.ip }, \"@{ip} requested '@{req.method} @{req.url}'\");\n }\n req.originalUrl = req.url;\n\n if (_.isNil(_auth) === false) {\n req.headers.authorization = _auth;\n }\n\n if (_.isNil(_cookie) === false) {\n req.headers.cookie = _cookie;\n }\n\n let bytesin = 0;\n req.on('data', function (chunk): void {\n bytesin += chunk.length;\n });\n\n let bytesout = 0;\n const _write = res.write;\n // @ts-ignore\n res.write = function (...args): boolean {\n bytesout += args[0]?.length || 0;\n // @ts-ignore\n return _write.apply(res, args);\n };\n\n const log = function (): void {\n const forwardedFor = req.get(HEADERS.FORWARDED_FOR);\n const remoteAddress = req.socket.remoteAddress;\n const remoteIP = forwardedFor ? `${forwardedFor} via ${remoteAddress}` : remoteAddress;\n let message;\n if (res.locals._verdaccio_error) {\n message = LOG_VERDACCIO_ERROR;\n } else {\n message = LOG_VERDACCIO_BYTES;\n }\n\n req.url = req.originalUrl;\n if (_skipLog) {\n debug(message, {\n request: { method: req.method, url: req.url },\n user: req.remote_user?.name || null,\n remoteIP,\n status: res.statusCode,\n error: res.locals._verdaccio_error,\n bytes: { in: bytesin, out: bytesout },\n });\n } else {\n req.log.http(\n {\n request: {\n method: req.method,\n url: req.url,\n },\n user: req.remote_user?.name || null,\n remoteIP,\n status: res.statusCode,\n error: res.locals._verdaccio_error,\n bytes: {\n in: bytesin,\n out: bytesout,\n },\n },\n message\n );\n }\n req.originalUrl = req.url;\n };\n\n req.on('close', function (): void {\n log();\n });\n\n const _end = res.end;\n // @ts-ignore\n res.end = function (...args): void {\n if (args[0]) {\n bytesout += args[0].length;\n }\n // @ts-ignore\n _end.apply(res, args);\n log();\n };\n next();\n };\n};\n"],"mappings":";;;;AAOA,IAAM,QAAQ,WAAW,2BAA2B;AAEpD,SAAS,gBAAgB,KAAsB;AAC7C,QAAO,IAAI,WAAW,aAAa;;AAIrC,IAAa,qBACX;AACF,IAAa,sBAAsB,GAAG,mBAAmB;AACzD,IAAa,sBAAsB,GAAG,mBAAmB;AAQzD,IAAa,OAAO,QAAQ,UAAsB,EAAE,KAAK;CACvD,MAAM,EAAE,iBAAiB,SAAS;AAElC,QAAO,SAAS,IAAI,KAAqB,KAAsB,MAA8B;AAE3F,MAAI,MAAM,OAAO,MAAM,EAAE,KAAK,MAAM,CAAC;EAErC,MAAM,QAAQ,IAAI,QAAQ;AAC1B,MAAI,EAAE,MAAM,MAAM,KAAK,MACrB,KAAI,QAAQ,gBAAgB;EAG9B,MAAM,UAAU,IAAI,IAAI,SAAS;AACjC,MAAI,EAAE,MAAM,QAAQ,KAAK,MACvB,KAAI,QAAQ,SAAS;AAGvB,MAAI,MAAM,IAAI;EACd,MAAM,WAAW,kBAAkB,gBAAgB,IAAI,IAAI;AAC3D,MAAI,SACF,OAAM,8CAA8C;GAAE,IAAI,IAAI;GAAI;GAAK,CAAC;MAExE,KAAI,IAAI,KAAK;GAAO;GAAK,IAAI,IAAI;GAAI,EAAE,6CAA6C;AAEtF,MAAI,cAAc,IAAI;AAEtB,MAAI,EAAE,MAAM,MAAM,KAAK,MACrB,KAAI,QAAQ,gBAAgB;AAG9B,MAAI,EAAE,MAAM,QAAQ,KAAK,MACvB,KAAI,QAAQ,SAAS;EAGvB,IAAI,UAAU;AACd,MAAI,GAAG,QAAQ,SAAU,OAAa;AACpC,cAAW,MAAM;IACjB;EAEF,IAAI,WAAW;EACf,MAAM,SAAS,IAAI;AAEnB,MAAI,QAAQ,SAAU,GAAG,MAAe;AACtC,eAAY,KAAK,IAAI,UAAU;AAE/B,UAAO,OAAO,MAAM,KAAK,KAAK;;EAGhC,MAAM,MAAM,WAAkB;GAC5B,MAAM,eAAe,IAAI,IAAI,QAAQ,cAAc;GACnD,MAAM,gBAAgB,IAAI,OAAO;GACjC,MAAM,WAAW,eAAe,GAAG,aAAa,OAAO,kBAAkB;GACzE,IAAI;AACJ,OAAI,IAAI,OAAO,iBACb,WAAU;OAEV,WAAU;AAGZ,OAAI,MAAM,IAAI;AACd,OAAI,SACF,OAAM,SAAS;IACb,SAAS;KAAE,QAAQ,IAAI;KAAQ,KAAK,IAAI;KAAK;IAC7C,MAAM,IAAI,aAAa,QAAQ;IAC/B;IACA,QAAQ,IAAI;IACZ,OAAO,IAAI,OAAO;IAClB,OAAO;KAAE,IAAI;KAAS,KAAK;KAAU;IACtC,CAAC;OAEF,KAAI,IAAI,KACN;IACE,SAAS;KACP,QAAQ,IAAI;KACZ,KAAK,IAAI;KACV;IACD,MAAM,IAAI,aAAa,QAAQ;IAC/B;IACA,QAAQ,IAAI;IACZ,OAAO,IAAI,OAAO;IAClB,OAAO;KACL,IAAI;KACJ,KAAK;KACN;IACF,EACD,QACD;AAEH,OAAI,cAAc,IAAI;;AAGxB,MAAI,GAAG,SAAS,WAAkB;AAChC,QAAK;IACL;EAEF,MAAM,OAAO,IAAI;AAEjB,MAAI,MAAM,SAAU,GAAG,MAAY;AACjC,OAAI,KAAK,GACP,aAAY,KAAK,GAAG;AAGtB,QAAK,MAAM,KAAK,KAAK;AACrB,QAAK;;AAEP,QAAM"}
1
+ {"version":3,"file":"log.mjs","names":[],"sources":["../../src/middlewares/log.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { isNil } from 'lodash-es';\n\nimport { HEADERS } from '@verdaccio/core';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types';\n\nconst debug = buildDebug('verdaccio:middleware:log');\n\nfunction isStaticRequest(url: string): boolean {\n return url.startsWith('/-/static/');\n}\n\n// FIXME: deprecated, moved to @verdaccio/dev-commons\nexport const LOG_STATUS_MESSAGE =\n \"@{status}, user: @{user}(@{remoteIP}), req: '@{request.method} @{request.url}'\";\nexport const LOG_VERDACCIO_ERROR = `${LOG_STATUS_MESSAGE}, error: @{!error}`;\nexport const LOG_VERDACCIO_BYTES = `${LOG_STATUS_MESSAGE}, bytes: @{bytes.in}/@{bytes.out}`;\n\nexport type LogOptions = {\n // When true, static file requests (/-/static/*) are hidden from pino logs\n // and only visible via DEBUG=verdaccio:middleware:log. Defaults to true.\n hideStaticLogs?: boolean;\n};\n\nexport const log = (logger, options: LogOptions = {}) => {\n const { hideStaticLogs = true } = options;\n\n return function log(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n // logger\n req.log = logger.child({ sub: 'in' });\n\n const _auth = req.headers.authorization;\n if (isNil(_auth) === false) {\n req.headers.authorization = '<Classified>';\n }\n\n const _cookie = req.get('cookie');\n if (isNil(_cookie) === false) {\n req.headers.cookie = '<Classified>';\n }\n\n req.url = req.originalUrl;\n const _skipLog = hideStaticLogs && isStaticRequest(req.url);\n if (_skipLog) {\n debug(\"@{ip} requested '@{req.method} @{req.url}'\", { ip: req.ip, req });\n } else {\n req.log.info({ req: req, ip: req.ip }, \"@{ip} requested '@{req.method} @{req.url}'\");\n }\n req.originalUrl = req.url;\n\n if (isNil(_auth) === false) {\n req.headers.authorization = _auth;\n }\n\n if (isNil(_cookie) === false) {\n req.headers.cookie = _cookie;\n }\n\n let bytesin = 0;\n req.on('data', function (chunk): void {\n bytesin += chunk.length;\n });\n\n let bytesout = 0;\n const _write = res.write;\n // @ts-ignore\n res.write = function (...args): boolean {\n bytesout += args[0]?.length || 0;\n // @ts-ignore\n return _write.apply(res, args);\n };\n\n const log = function (): void {\n const forwardedFor = req.get(HEADERS.FORWARDED_FOR);\n const remoteAddress = req.socket.remoteAddress;\n const remoteIP = forwardedFor ? `${forwardedFor} via ${remoteAddress}` : remoteAddress;\n let message;\n if (res.locals._verdaccio_error) {\n message = LOG_VERDACCIO_ERROR;\n } else {\n message = LOG_VERDACCIO_BYTES;\n }\n\n req.url = req.originalUrl;\n if (_skipLog) {\n debug(message, {\n request: { method: req.method, url: req.url },\n user: req.remote_user?.name || null,\n remoteIP,\n status: res.statusCode,\n error: res.locals._verdaccio_error,\n bytes: { in: bytesin, out: bytesout },\n });\n } else {\n req.log.http(\n {\n request: {\n method: req.method,\n url: req.url,\n },\n user: req.remote_user?.name || null,\n remoteIP,\n status: res.statusCode,\n error: res.locals._verdaccio_error,\n bytes: {\n in: bytesin,\n out: bytesout,\n },\n },\n message\n );\n }\n req.originalUrl = req.url;\n };\n\n req.on('close', function (): void {\n log();\n });\n\n const _end = res.end;\n // @ts-ignore\n res.end = function (...args): void {\n if (args[0]) {\n bytesout += args[0].length;\n }\n // @ts-ignore\n _end.apply(res, args);\n log();\n };\n next();\n };\n};\n"],"mappings":";;;;AAOA,IAAM,QAAQ,WAAW,2BAA2B;AAEpD,SAAS,gBAAgB,KAAsB;AAC7C,QAAO,IAAI,WAAW,aAAa;;AAIrC,IAAa,qBACX;AACF,IAAa,sBAAsB,GAAG,mBAAmB;AACzD,IAAa,sBAAsB,GAAG,mBAAmB;AAQzD,IAAa,OAAO,QAAQ,UAAsB,EAAE,KAAK;CACvD,MAAM,EAAE,iBAAiB,SAAS;AAElC,QAAO,SAAS,IAAI,KAAqB,KAAsB,MAA8B;AAE3F,MAAI,MAAM,OAAO,MAAM,EAAE,KAAK,MAAM,CAAC;EAErC,MAAM,QAAQ,IAAI,QAAQ;AAC1B,MAAI,MAAM,MAAM,KAAK,MACnB,KAAI,QAAQ,gBAAgB;EAG9B,MAAM,UAAU,IAAI,IAAI,SAAS;AACjC,MAAI,MAAM,QAAQ,KAAK,MACrB,KAAI,QAAQ,SAAS;AAGvB,MAAI,MAAM,IAAI;EACd,MAAM,WAAW,kBAAkB,gBAAgB,IAAI,IAAI;AAC3D,MAAI,SACF,OAAM,8CAA8C;GAAE,IAAI,IAAI;GAAI;GAAK,CAAC;MAExE,KAAI,IAAI,KAAK;GAAO;GAAK,IAAI,IAAI;GAAI,EAAE,6CAA6C;AAEtF,MAAI,cAAc,IAAI;AAEtB,MAAI,MAAM,MAAM,KAAK,MACnB,KAAI,QAAQ,gBAAgB;AAG9B,MAAI,MAAM,QAAQ,KAAK,MACrB,KAAI,QAAQ,SAAS;EAGvB,IAAI,UAAU;AACd,MAAI,GAAG,QAAQ,SAAU,OAAa;AACpC,cAAW,MAAM;IACjB;EAEF,IAAI,WAAW;EACf,MAAM,SAAS,IAAI;AAEnB,MAAI,QAAQ,SAAU,GAAG,MAAe;AACtC,eAAY,KAAK,IAAI,UAAU;AAE/B,UAAO,OAAO,MAAM,KAAK,KAAK;;EAGhC,MAAM,MAAM,WAAkB;GAC5B,MAAM,eAAe,IAAI,IAAI,QAAQ,cAAc;GACnD,MAAM,gBAAgB,IAAI,OAAO;GACjC,MAAM,WAAW,eAAe,GAAG,aAAa,OAAO,kBAAkB;GACzE,IAAI;AACJ,OAAI,IAAI,OAAO,iBACb,WAAU;OAEV,WAAU;AAGZ,OAAI,MAAM,IAAI;AACd,OAAI,SACF,OAAM,SAAS;IACb,SAAS;KAAE,QAAQ,IAAI;KAAQ,KAAK,IAAI;KAAK;IAC7C,MAAM,IAAI,aAAa,QAAQ;IAC/B;IACA,QAAQ,IAAI;IACZ,OAAO,IAAI,OAAO;IAClB,OAAO;KAAE,IAAI;KAAS,KAAK;KAAU;IACtC,CAAC;OAEF,KAAI,IAAI,KACN;IACE,SAAS;KACP,QAAQ,IAAI;KACZ,KAAK,IAAI;KACV;IACD,MAAM,IAAI,aAAa,QAAQ;IAC/B;IACA,QAAQ,IAAI;IACZ,OAAO,IAAI,OAAO;IAClB,OAAO;KACL,IAAI;KACJ,KAAK;KACN;IACF,EACD,QACD;AAEH,OAAI,cAAc,IAAI;;AAGxB,MAAI,GAAG,SAAS,WAAkB;AAChC,QAAK;IACL;EAEF,MAAM,OAAO,IAAI;AAEjB,MAAI,MAAM,SAAU,GAAG,MAAY;AACjC,OAAI,KAAK,GACP,aAAY,KAAK,GAAG;AAGtB,QAAK,MAAM,KAAK,KAAK;AACrB,QAAK;;AAEP,QAAM"}
@@ -1,8 +1,7 @@
1
1
  const require_runtime = require("../../../_virtual/_rolldown/runtime.js");
2
2
  let debug = require("debug");
3
3
  debug = require_runtime.__toESM(debug);
4
- let lodash = require("lodash");
5
- lodash = require_runtime.__toESM(lodash);
4
+ let lodash_es = require("lodash-es");
6
5
  //#region src/middlewares/web/utils/web-utils.ts
7
6
  var debug$1 = (0, debug.default)("verdaccio:web:middlwares");
8
7
  function validatePrimaryColor(primaryColor) {
@@ -13,7 +12,7 @@ function validatePrimaryColor(primaryColor) {
13
12
  return primaryColor;
14
13
  }
15
14
  function hasLogin(config) {
16
- return lodash.default.isNil(config?.web?.login) || config?.web?.login === true;
15
+ return (0, lodash_es.isNil)(config?.web?.login) || config?.web?.login === true;
17
16
  }
18
17
  //#endregion
19
18
  exports.hasLogin = hasLogin;
@@ -1 +1 @@
1
- {"version":3,"file":"web-utils.js","names":[],"sources":["../../../../src/middlewares/web/utils/web-utils.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\n\nconst debug = buildDebug('verdaccio:web:middlwares');\n\nexport function validatePrimaryColor(primaryColor) {\n const isHex = /^#([0-9A-F]{3}){1,2}$/i.test(primaryColor);\n if (!isHex) {\n debug('invalid primary color %o', primaryColor);\n return;\n }\n\n return primaryColor;\n}\n\nexport function hasLogin(config: any) {\n return _.isNil(config?.web?.login) || config?.web?.login === true;\n}\n"],"mappings":";;;;;;AAGA,IAAM,WAAA,GAAA,MAAA,SAAmB,2BAA2B;AAEpD,SAAgB,qBAAqB,cAAc;AAEjD,KAAI,CADU,yBAAyB,KAAK,aAAa,EAC7C;AACV,UAAM,4BAA4B,aAAa;AAC/C;;AAGF,QAAO;;AAGT,SAAgB,SAAS,QAAa;AACpC,QAAO,OAAA,QAAE,MAAM,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,UAAU"}
1
+ {"version":3,"file":"web-utils.js","names":[],"sources":["../../../../src/middlewares/web/utils/web-utils.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { isNil } from 'lodash-es';\n\nconst debug = buildDebug('verdaccio:web:middlwares');\n\nexport function validatePrimaryColor(primaryColor) {\n const isHex = /^#([0-9A-F]{3}){1,2}$/i.test(primaryColor);\n if (!isHex) {\n debug('invalid primary color %o', primaryColor);\n return;\n }\n\n return primaryColor;\n}\n\nexport function hasLogin(config: any) {\n return isNil(config?.web?.login) || config?.web?.login === true;\n}\n"],"mappings":";;;;;AAGA,IAAM,WAAA,GAAA,MAAA,SAAmB,2BAA2B;AAEpD,SAAgB,qBAAqB,cAAc;AAEjD,KAAI,CADU,yBAAyB,KAAK,aAAa,EAC7C;AACV,UAAM,4BAA4B,aAAa;AAC/C;;AAGF,QAAO;;AAGT,SAAgB,SAAS,QAAa;AACpC,SAAA,GAAA,UAAA,OAAa,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,UAAU"}
@@ -1,5 +1,5 @@
1
1
  import buildDebug from "debug";
2
- import _ from "lodash";
2
+ import { isNil } from "lodash-es";
3
3
  //#region src/middlewares/web/utils/web-utils.ts
4
4
  var debug = buildDebug("verdaccio:web:middlwares");
5
5
  function validatePrimaryColor(primaryColor) {
@@ -10,7 +10,7 @@ function validatePrimaryColor(primaryColor) {
10
10
  return primaryColor;
11
11
  }
12
12
  function hasLogin(config) {
13
- return _.isNil(config?.web?.login) || config?.web?.login === true;
13
+ return isNil(config?.web?.login) || config?.web?.login === true;
14
14
  }
15
15
  //#endregion
16
16
  export { hasLogin, validatePrimaryColor };
@@ -1 +1 @@
1
- {"version":3,"file":"web-utils.mjs","names":[],"sources":["../../../../src/middlewares/web/utils/web-utils.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\n\nconst debug = buildDebug('verdaccio:web:middlwares');\n\nexport function validatePrimaryColor(primaryColor) {\n const isHex = /^#([0-9A-F]{3}){1,2}$/i.test(primaryColor);\n if (!isHex) {\n debug('invalid primary color %o', primaryColor);\n return;\n }\n\n return primaryColor;\n}\n\nexport function hasLogin(config: any) {\n return _.isNil(config?.web?.login) || config?.web?.login === true;\n}\n"],"mappings":";;;AAGA,IAAM,QAAQ,WAAW,2BAA2B;AAEpD,SAAgB,qBAAqB,cAAc;AAEjD,KAAI,CADU,yBAAyB,KAAK,aAAa,EAC7C;AACV,QAAM,4BAA4B,aAAa;AAC/C;;AAGF,QAAO;;AAGT,SAAgB,SAAS,QAAa;AACpC,QAAO,EAAE,MAAM,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,UAAU"}
1
+ {"version":3,"file":"web-utils.mjs","names":[],"sources":["../../../../src/middlewares/web/utils/web-utils.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { isNil } from 'lodash-es';\n\nconst debug = buildDebug('verdaccio:web:middlwares');\n\nexport function validatePrimaryColor(primaryColor) {\n const isHex = /^#([0-9A-F]{3}){1,2}$/i.test(primaryColor);\n if (!isHex) {\n debug('invalid primary color %o', primaryColor);\n return;\n }\n\n return primaryColor;\n}\n\nexport function hasLogin(config: any) {\n return isNil(config?.web?.login) || config?.web?.login === true;\n}\n"],"mappings":";;;AAGA,IAAM,QAAQ,WAAW,2BAA2B;AAEpD,SAAgB,qBAAqB,cAAc;AAEjD,KAAI,CADU,yBAAyB,KAAK,aAAa,EAC7C;AACV,QAAM,4BAA4B,aAAa;AAC/C;;AAGF,QAAO;;AAGT,SAAgB,SAAS,QAAa;AACpC,QAAO,MAAM,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,UAAU"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdaccio/middleware",
3
- "version": "9.0.0-next-9.7",
3
+ "version": "9.0.0-next-9.9",
4
4
  "description": "Verdaccio Express Middleware",
5
5
  "main": "./build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -33,13 +33,13 @@
33
33
  "node": ">=24"
34
34
  },
35
35
  "dependencies": {
36
- "@verdaccio/config": "9.0.0-next-9.7",
37
- "@verdaccio/core": "9.0.0-next-9.7",
38
- "@verdaccio/url": "14.0.0-next-9.7",
36
+ "@verdaccio/config": "9.0.0-next-9.9",
37
+ "@verdaccio/core": "9.0.0-next-9.9",
38
+ "@verdaccio/url": "14.0.0-next-9.9",
39
39
  "debug": "4.4.3",
40
40
  "express": "5.2.1",
41
41
  "express-rate-limit": "8.2.1",
42
- "lodash": "4.17.23",
42
+ "lodash-es": "4.17.23",
43
43
  "lru-cache": "11.2.6"
44
44
  },
45
45
  "funding": {
@@ -47,8 +47,9 @@
47
47
  "url": "https://opencollective.com/verdaccio"
48
48
  },
49
49
  "devDependencies": {
50
- "@verdaccio/logger": "9.0.0-next-9.7",
50
+ "@verdaccio/logger": "9.0.0-next-9.9",
51
51
  "@verdaccio/types": "14.0.0-next-9.4",
52
+ "@types/lodash-es": "4.17.12",
52
53
  "http-errors": "2.0.1",
53
54
  "supertest": "7.1.4",
54
55
  "vitest": "4.1.0"