@verdaccio/server 9.0.0-next-9.17 → 9.0.0-next-9.19

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/debug/index.ts"],"sourcesContent":["import type { Application } from 'express';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../../types/custom';\n\nexport default (app: Application, configPath?: string): void => {\n // Hook for tests only\n app.get(\n '/-/_debug',\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n if (global.gc) {\n global.gc();\n }\n\n next({\n pid: process.pid,\n // @ts-ignore\n main: process.main,\n conf: configPath,\n mem: process.memoryUsage(),\n gc: global.gc,\n });\n }\n );\n};\n"],"mappings":";AAIA,IAAA,iBAAgB,KAAkB,eAA8B;AAE9D,KAAI,IACF,aACA,SAAU,KAAqB,KAAsB,MAA8B;AACjF,MAAI,OAAO,GACT,QAAO,IAAI;AAGb,OAAK;GACH,KAAK,QAAQ;GAEb,MAAM,QAAQ;GACd,MAAM;GACN,KAAK,QAAQ,aAAa;GAC1B,IAAI,OAAO;GACZ,CAAC;GAEL"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/debug/index.ts"],"sourcesContent":["import type { Application } from 'express';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../../types/custom';\n\nexport default (app: Application, configPath?: string): void => {\n // Hook for tests only\n app.get(\n '/-/_debug',\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n if (global.gc) {\n global.gc();\n }\n\n next({\n pid: process.pid,\n // @ts-ignore\n main: process.main,\n conf: configPath,\n mem: process.memoryUsage(),\n gc: global.gc,\n });\n }\n );\n};\n"],"mappings":";AAIA,IAAA,iBAAgB,KAAkB,eAA8B;CAE9D,IAAI,IACF,aACA,SAAU,KAAqB,KAAsB,MAA8B;EACjF,IAAI,OAAO,IACT,OAAO,GAAG;EAGZ,KAAK;GACH,KAAK,QAAQ;GAEb,MAAM,QAAQ;GACd,MAAM;GACN,KAAK,QAAQ,YAAY;GACzB,IAAI,OAAO;EACb,CAAC;CACH,CACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../src/debug/index.ts"],"sourcesContent":["import type { Application } from 'express';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../../types/custom';\n\nexport default (app: Application, configPath?: string): void => {\n // Hook for tests only\n app.get(\n '/-/_debug',\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n if (global.gc) {\n global.gc();\n }\n\n next({\n pid: process.pid,\n // @ts-ignore\n main: process.main,\n conf: configPath,\n mem: process.memoryUsage(),\n gc: global.gc,\n });\n }\n );\n};\n"],"mappings":";AAIA,IAAA,iBAAgB,KAAkB,eAA8B;AAE9D,KAAI,IACF,aACA,SAAU,KAAqB,KAAsB,MAA8B;AACjF,MAAI,OAAO,GACT,QAAO,IAAI;AAGb,OAAK;GACH,KAAK,QAAQ;GAEb,MAAM,QAAQ;GACd,MAAM;GACN,KAAK,QAAQ,aAAa;GAC1B,IAAI,OAAO;GACZ,CAAC;GAEL"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/debug/index.ts"],"sourcesContent":["import type { Application } from 'express';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../../types/custom';\n\nexport default (app: Application, configPath?: string): void => {\n // Hook for tests only\n app.get(\n '/-/_debug',\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n if (global.gc) {\n global.gc();\n }\n\n next({\n pid: process.pid,\n // @ts-ignore\n main: process.main,\n conf: configPath,\n mem: process.memoryUsage(),\n gc: global.gc,\n });\n }\n );\n};\n"],"mappings":";AAIA,IAAA,iBAAgB,KAAkB,eAA8B;CAE9D,IAAI,IACF,aACA,SAAU,KAAqB,KAAsB,MAA8B;EACjF,IAAI,OAAO,IACT,OAAO,GAAG;EAGZ,KAAK;GACH,KAAK,QAAQ;GAEb,MAAM,QAAQ;GACd,MAAM;GACN,KAAK,QAAQ,YAAY;GACzB,IAAI,OAAO;EACb,CAAC;CACH,CACF;AACF"}
package/build/index.d.ts CHANGED
@@ -1 +1 @@
1
- export { default, startServer } from './server';
1
+ export { default, startServer, defineAPI } from './server';
package/build/index.js CHANGED
@@ -4,4 +4,5 @@ Object.defineProperties(exports, {
4
4
  });
5
5
  const require_server = require("./server.js");
6
6
  exports.default = require_server.default;
7
+ exports.defineAPI = require_server.defineAPI;
7
8
  exports.startServer = require_server.default;
package/build/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import startServer from "./server.mjs";
2
- export { startServer as default, startServer };
1
+ import startServer, { defineAPI } from "./server.mjs";
2
+ export { startServer as default, defineAPI, startServer };
package/build/server.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { Express } from 'express';
2
- import { ConfigYaml } from '@verdaccio/types';
2
+ import { Storage } from '@verdaccio/store';
3
+ import { ConfigYaml, Config as IConfig } from '@verdaccio/types';
4
+ export declare const defineAPI: (config: IConfig, storage: Storage) => Promise<Express>;
3
5
  declare const startServer: (configHash: ConfigYaml) => Promise<Express>;
4
6
  export { startServer };
5
7
  export default startServer;
package/build/server.js CHANGED
@@ -64,6 +64,7 @@ var defineAPI = async function(config, storage) {
64
64
  }, "plugin @{name} successfully loaded (@{pluginCategory})");
65
65
  plugins.push(auditPlugin);
66
66
  }
67
+ app.use(auth.apiJWTmiddleware());
67
68
  for (const plugin of plugins) plugin.register_middlewares(app, auth, storage);
68
69
  app.use((0, _verdaccio_api.default)(config, auth, storage, _verdaccio_logger.logger));
69
70
  if ((0, lodash_es.get)(config, "web.enabled", (0, lodash_es.get)(config, "web.enable", true))) {
@@ -99,5 +100,6 @@ var startServer = async function startServer(configHash) {
99
100
  };
100
101
  //#endregion
101
102
  exports.default = startServer;
103
+ exports.defineAPI = defineAPI;
102
104
 
103
105
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","names":[],"sources":["../src/server.ts"],"sourcesContent":["import compression from 'compression';\nimport cors from 'cors';\nimport buildDebug from 'debug';\nimport type { Express } from 'express';\nimport express from 'express';\nimport { get } from 'lodash-es';\nimport AuditMiddleware from 'verdaccio-audit';\n\nimport apiEndpoint from '@verdaccio/api';\nimport { Auth } from '@verdaccio/auth';\nimport { Config as AppConfig } from '@verdaccio/config';\nimport type { pluginUtils } from '@verdaccio/core';\nimport {\n API_ERROR,\n PLUGIN_CATEGORY,\n PLUGIN_PREFIX,\n errorUtils,\n pkgUtils,\n pluginUtils as pluginSanity,\n} from '@verdaccio/core';\nimport { asyncLoadPlugin } from '@verdaccio/loaders';\nimport { logger } from '@verdaccio/logger';\nimport {\n dotfiles,\n errorReportingMiddleware,\n final,\n handleError,\n log,\n rateLimit,\n registerBodyParser,\n userAgent,\n} from '@verdaccio/middleware';\nimport { Storage } from '@verdaccio/store';\nimport type { ConfigYaml, Config as IConfig } from '@verdaccio/types';\nimport webMiddleware from '@verdaccio/web';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/custom';\nimport hookDebug from './debug';\n\nconst debug = buildDebug('verdaccio:server');\nconst currentDir = typeof __dirname !== 'undefined' ? __dirname : import.meta.dirname;\nconst { version } = pkgUtils.getPackageJson(currentDir, '..');\n\nconst defineAPI = async function (config: IConfig, storage: Storage): Promise<Express> {\n const auth = new Auth(config, logger);\n await auth.init();\n const app = express();\n // run in production mode by default, just in case\n // it shouldn't make any difference anyway\n app.set('env', process.env.NODE_ENV || 'production');\n if (config.server?.trustProxy) {\n app.set('trust proxy', config.server.trustProxy);\n }\n app.use(cors());\n app.use(rateLimit(config.server?.rateLimit));\n\n app.use(dotfiles(config.server?.dotfiles ?? 'ignore'));\n\n const errorReportingMiddlewareWrap = errorReportingMiddleware(logger);\n\n // Router setup\n app.use(log(logger, { hideStaticLogs: config.server?.hideStaticLogs ?? true }));\n app.use(errorReportingMiddlewareWrap);\n app.use(userAgent(config));\n app.use(compression());\n\n // Body parser for JSON requests must be registered before plugins\n // so plugins can access req.body instead of manually reading the stream\n // This prevents \"stream is not readable\" errors when plugins try to read req.body\n registerBodyParser(app, config);\n\n app.get(\n '/favicon.ico',\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n req.url = '/-/static/favicon.ico';\n next();\n }\n );\n\n // Hook for tests only\n if (config._debug) {\n hookDebug(app, config.configPath);\n }\n\n const plugins: pluginUtils.ExpressMiddleware<IConfig, {}, Auth>[] = await asyncLoadPlugin(\n config.middlewares,\n {\n config,\n logger,\n },\n pluginSanity.middlewareSanityCheck,\n false,\n config.server?.pluginPrefix ?? PLUGIN_PREFIX,\n PLUGIN_CATEGORY.MIDDLEWARE\n );\n\n if (plugins.length === 0) {\n const auditPlugin = new AuditMiddleware(\n { enabled: true, strict_ssl: true },\n { config, logger }\n );\n logger.info(\n { name: 'verdaccio-audit', pluginCategory: PLUGIN_CATEGORY.MIDDLEWARE },\n 'plugin @{name} successfully loaded (@{pluginCategory})'\n );\n plugins.push(auditPlugin);\n }\n\n // Ensure sequential execution in order, and that each registration completes before the next one starts\n for (const plugin of plugins) {\n plugin.register_middlewares(app, auth, storage);\n }\n\n // For package manager requests\n app.use(apiEndpoint(config, auth, storage, logger));\n\n // For WebUI & WebUI API\n if (get(config, 'web.enabled', get(config, 'web.enable', true))) {\n app.use((_req, res, next) => {\n res.locals.app_version = version ?? '';\n next();\n });\n const middleware = await webMiddleware(config, auth, storage, logger);\n app.use(middleware);\n } else {\n app.get('/', function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) {\n next(errorUtils.getNotFound(API_ERROR.WEB_DISABLED));\n });\n }\n\n // Catch 404\n app.get('/{*any}', function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) {\n next(errorUtils.getNotFound('resource not found'));\n });\n\n app.use(handleError(logger));\n\n // app.use(function (\n // err: HttpError,\n // req: $RequestExtend,\n // res: $ResponseExtend,\n // next: $NextFunctionVer\n // ) {\n // if (_.isError(err)) {\n // if (err.code === 'ECONNABORT' && res.statusCode === HTTP_STATUS.NOT_MODIFIED) {\n // return next();\n // }\n // if (_.isFunction(res.locals.report_error) === false) {\n // // in case of very early error this middleware may not be loaded before error is generated\n // // fixing that\n // errorReportingMiddlewareWrap(req, res, _.noop);\n // }\n // res.locals.report_error(err);\n // } else {\n // // Fall to Middleware.final\n // return next(err);\n // }\n // });\n\n app.use(final);\n\n return app;\n};\n\nconst startServer = async function startServer(configHash: ConfigYaml): Promise<Express> {\n debug('start server');\n const config: IConfig = new AppConfig({ ...configHash } as any);\n const storage = new Storage(config, logger);\n try {\n // waits until init calls have been completed\n debug('storage init start');\n await storage.init(config);\n debug('storage init end');\n } catch (err: any) {\n logger.error({ error: err.msg }, 'storage has failed: @{error}');\n throw new Error(err);\n }\n return await defineAPI(config, storage);\n};\n\nexport { startServer };\nexport default startServer;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,IAAM,WAAA,GAAA,MAAA,SAAmB,mBAAmB;AAC5C,IAAM,aAAa,OAAO,cAAc,cAAc,YAAA,EAAA,CAAwB;AAC9E,IAAM,EAAE,YAAY,gBAAA,SAAS,eAAe,YAAY,KAAK;AAE7D,IAAM,YAAY,eAAgB,QAAiB,SAAoC;CACrF,MAAM,OAAO,IAAI,gBAAA,KAAK,QAAQ,kBAAA,OAAO;AACrC,OAAM,KAAK,MAAM;CACjB,MAAM,OAAA,GAAA,QAAA,UAAe;AAGrB,KAAI,IAAI,OAAA,QAAA,IAAA,YAA+B,aAAa;AACpD,KAAI,OAAO,QAAQ,WACjB,KAAI,IAAI,eAAe,OAAO,OAAO,WAAW;AAElD,KAAI,KAAA,GAAA,KAAA,UAAU,CAAC;AACf,KAAI,KAAA,GAAA,sBAAA,WAAc,OAAO,QAAQ,UAAU,CAAC;AAE5C,KAAI,KAAA,GAAA,sBAAA,UAAa,OAAO,QAAQ,YAAY,SAAS,CAAC;CAEtD,MAAM,gCAAA,GAAA,sBAAA,0BAAwD,kBAAA,OAAO;AAGrE,KAAI,KAAA,GAAA,sBAAA,KAAQ,kBAAA,QAAQ,EAAE,gBAAgB,OAAO,QAAQ,kBAAkB,MAAM,CAAC,CAAC;AAC/E,KAAI,IAAI,6BAA6B;AACrC,KAAI,KAAA,GAAA,sBAAA,WAAc,OAAO,CAAC;AAC1B,KAAI,KAAA,GAAA,YAAA,UAAiB,CAAC;AAKtB,EAAA,GAAA,sBAAA,oBAAmB,KAAK,OAAO;AAE/B,KAAI,IACF,gBACA,SAAU,KAAqB,KAAsB,MAA8B;AACjF,MAAI,MAAM;AACV,QAAM;GAET;AAGD,KAAI,OAAO,OACT,eAAA,QAAU,KAAK,OAAO,WAAW;CAGnC,MAAM,UAA8D,OAAA,GAAA,mBAAA,iBAClE,OAAO,aACP;EACE;EACA,QAAA,kBAAA;EACD,EACD,gBAAA,YAAa,uBACb,OACA,OAAO,QAAQ,gBAAgB,gBAAA,eAC/B,gBAAA,gBAAgB,WACjB;AAED,KAAI,QAAQ,WAAW,GAAG;EACxB,MAAM,cAAc,IAAI,gBAAA,QACtB;GAAE,SAAS;GAAM,YAAY;GAAM,EACnC;GAAE;GAAQ,QAAA,kBAAA;GAAQ,CACnB;AACD,oBAAA,OAAO,KACL;GAAE,MAAM;GAAmB,gBAAgB,gBAAA,gBAAgB;GAAY,EACvE,yDACD;AACD,UAAQ,KAAK,YAAY;;AAI3B,MAAK,MAAM,UAAU,QACnB,QAAO,qBAAqB,KAAK,MAAM,QAAQ;AAIjD,KAAI,KAAA,GAAA,eAAA,SAAgB,QAAQ,MAAM,SAAS,kBAAA,OAAO,CAAC;AAGnD,MAAA,GAAA,UAAA,KAAQ,QAAQ,gBAAA,GAAA,UAAA,KAAmB,QAAQ,cAAc,KAAK,CAAC,EAAE;AAC/D,MAAI,KAAK,MAAM,KAAK,SAAS;AAC3B,OAAI,OAAO,cAAc,WAAW;AACpC,SAAM;IACN;EACF,MAAM,aAAa,OAAA,GAAA,eAAA,SAAoB,QAAQ,MAAM,SAAS,kBAAA,OAAO;AACrE,MAAI,IAAI,WAAW;OAEnB,KAAI,IAAI,KAAK,SAAU,KAAqB,KAAsB,MAAwB;AACxF,OAAK,gBAAA,WAAW,YAAY,gBAAA,UAAU,aAAa,CAAC;GACpD;AAIJ,KAAI,IAAI,WAAW,SAAU,KAAqB,KAAsB,MAAwB;AAC9F,OAAK,gBAAA,WAAW,YAAY,qBAAqB,CAAC;GAClD;AAEF,KAAI,KAAA,GAAA,sBAAA,aAAgB,kBAAA,OAAO,CAAC;AAwB5B,KAAI,IAAI,sBAAA,MAAM;AAEd,QAAO;;AAGT,IAAM,cAAc,eAAe,YAAY,YAA0C;AACvF,SAAM,eAAe;CACrB,MAAM,SAAkB,IAAI,kBAAA,OAAU,EAAE,GAAG,YAAY,CAAQ;CAC/D,MAAM,UAAU,IAAI,iBAAA,QAAQ,QAAQ,kBAAA,OAAO;AAC3C,KAAI;AAEF,UAAM,qBAAqB;AAC3B,QAAM,QAAQ,KAAK,OAAO;AAC1B,UAAM,mBAAmB;UAClB,KAAU;AACjB,oBAAA,OAAO,MAAM,EAAE,OAAO,IAAI,KAAK,EAAE,+BAA+B;AAChE,QAAM,IAAI,MAAM,IAAI;;AAEtB,QAAO,MAAM,UAAU,QAAQ,QAAQ"}
1
+ {"version":3,"file":"server.js","names":[],"sources":["../src/server.ts"],"sourcesContent":["import compression from 'compression';\nimport cors from 'cors';\nimport buildDebug from 'debug';\nimport type { Express } from 'express';\nimport express from 'express';\nimport { get } from 'lodash-es';\nimport AuditMiddleware from 'verdaccio-audit';\n\nimport apiEndpoint from '@verdaccio/api';\nimport { Auth } from '@verdaccio/auth';\nimport { Config as AppConfig } from '@verdaccio/config';\nimport type { pluginUtils } from '@verdaccio/core';\nimport {\n API_ERROR,\n PLUGIN_CATEGORY,\n PLUGIN_PREFIX,\n errorUtils,\n pkgUtils,\n pluginUtils as pluginSanity,\n} from '@verdaccio/core';\nimport { asyncLoadPlugin } from '@verdaccio/loaders';\nimport { logger } from '@verdaccio/logger';\nimport {\n dotfiles,\n errorReportingMiddleware,\n final,\n handleError,\n log,\n rateLimit,\n registerBodyParser,\n userAgent,\n} from '@verdaccio/middleware';\nimport { Storage } from '@verdaccio/store';\nimport type { ConfigYaml, Config as IConfig } from '@verdaccio/types';\nimport webMiddleware from '@verdaccio/web';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/custom';\nimport hookDebug from './debug';\n\nconst debug = buildDebug('verdaccio:server');\nconst currentDir = typeof __dirname !== 'undefined' ? __dirname : import.meta.dirname;\nconst { version } = pkgUtils.getPackageJson(currentDir, '..');\n\nexport const defineAPI = async function (config: IConfig, storage: Storage): Promise<Express> {\n const auth = new Auth(config, logger);\n await auth.init();\n const app = express();\n // run in production mode by default, just in case\n // it shouldn't make any difference anyway\n app.set('env', process.env.NODE_ENV || 'production');\n if (config.server?.trustProxy) {\n app.set('trust proxy', config.server.trustProxy);\n }\n app.use(cors());\n app.use(rateLimit(config.server?.rateLimit));\n\n app.use(dotfiles(config.server?.dotfiles ?? 'ignore'));\n\n const errorReportingMiddlewareWrap = errorReportingMiddleware(logger);\n\n // Router setup\n app.use(log(logger, { hideStaticLogs: config.server?.hideStaticLogs ?? true }));\n app.use(errorReportingMiddlewareWrap);\n app.use(userAgent(config));\n app.use(compression());\n\n // Body parser for JSON requests must be registered before plugins\n // so plugins can access req.body instead of manually reading the stream\n // This prevents \"stream is not readable\" errors when plugins try to read req.body\n registerBodyParser(app, config);\n\n app.get(\n '/favicon.ico',\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n req.url = '/-/static/favicon.ico';\n next();\n }\n );\n\n // Hook for tests only\n if (config._debug) {\n hookDebug(app, config.configPath);\n }\n\n const plugins: pluginUtils.ExpressMiddleware<IConfig, {}, Auth>[] = await asyncLoadPlugin(\n config.middlewares,\n {\n config,\n logger,\n },\n pluginSanity.middlewareSanityCheck,\n false,\n config.server?.pluginPrefix ?? PLUGIN_PREFIX,\n PLUGIN_CATEGORY.MIDDLEWARE\n );\n\n if (plugins.length === 0) {\n const auditPlugin = new AuditMiddleware(\n { enabled: true, strict_ssl: true },\n { config, logger }\n );\n logger.info(\n { name: 'verdaccio-audit', pluginCategory: PLUGIN_CATEGORY.MIDDLEWARE },\n 'plugin @{name} successfully loaded (@{pluginCategory})'\n );\n plugins.push(auditPlugin);\n }\n\n // Register JWT middleware so middleware plugins can access req.remote_user\n app.use(auth.apiJWTmiddleware());\n\n // Ensure sequential execution in order, and that each registration completes before the next one starts\n for (const plugin of plugins) {\n plugin.register_middlewares(app, auth, storage);\n }\n\n // For package manager requests\n app.use(apiEndpoint(config, auth, storage, logger));\n\n // For WebUI & WebUI API\n if (get(config, 'web.enabled', get(config, 'web.enable', true))) {\n app.use((_req, res, next) => {\n res.locals.app_version = version ?? '';\n next();\n });\n const middleware = await webMiddleware(config, auth, storage, logger);\n app.use(middleware);\n } else {\n app.get('/', function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) {\n next(errorUtils.getNotFound(API_ERROR.WEB_DISABLED));\n });\n }\n\n // Catch 404\n app.get('/{*any}', function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) {\n next(errorUtils.getNotFound('resource not found'));\n });\n\n app.use(handleError(logger));\n\n // app.use(function (\n // err: HttpError,\n // req: $RequestExtend,\n // res: $ResponseExtend,\n // next: $NextFunctionVer\n // ) {\n // if (_.isError(err)) {\n // if (err.code === 'ECONNABORT' && res.statusCode === HTTP_STATUS.NOT_MODIFIED) {\n // return next();\n // }\n // if (_.isFunction(res.locals.report_error) === false) {\n // // in case of very early error this middleware may not be loaded before error is generated\n // // fixing that\n // errorReportingMiddlewareWrap(req, res, _.noop);\n // }\n // res.locals.report_error(err);\n // } else {\n // // Fall to Middleware.final\n // return next(err);\n // }\n // });\n\n app.use(final);\n\n return app;\n};\n\nconst startServer = async function startServer(configHash: ConfigYaml): Promise<Express> {\n debug('start server');\n const config: IConfig = new AppConfig({ ...configHash } as any);\n const storage = new Storage(config, logger);\n try {\n // waits until init calls have been completed\n debug('storage init start');\n await storage.init(config);\n debug('storage init end');\n } catch (err: any) {\n logger.error({ error: err.msg }, 'storage has failed: @{error}');\n throw new Error(err);\n }\n return await defineAPI(config, storage);\n};\n\nexport { startServer };\nexport default startServer;\n"],"mappings":"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"}
package/build/server.mjs CHANGED
@@ -56,6 +56,7 @@ var defineAPI = async function(config, storage) {
56
56
  }, "plugin @{name} successfully loaded (@{pluginCategory})");
57
57
  plugins.push(auditPlugin);
58
58
  }
59
+ app.use(auth.apiJWTmiddleware());
59
60
  for (const plugin of plugins) plugin.register_middlewares(app, auth, storage);
60
61
  app.use(apiEndpoint(config, auth, storage, logger));
61
62
  if (get(config, "web.enabled", get(config, "web.enable", true))) {
@@ -90,6 +91,6 @@ var startServer = async function startServer(configHash) {
90
91
  return await defineAPI(config, storage);
91
92
  };
92
93
  //#endregion
93
- export { startServer as default };
94
+ export { startServer as default, defineAPI };
94
95
 
95
96
  //# sourceMappingURL=server.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.mjs","names":[],"sources":["../src/server.ts"],"sourcesContent":["import compression from 'compression';\nimport cors from 'cors';\nimport buildDebug from 'debug';\nimport type { Express } from 'express';\nimport express from 'express';\nimport { get } from 'lodash-es';\nimport AuditMiddleware from 'verdaccio-audit';\n\nimport apiEndpoint from '@verdaccio/api';\nimport { Auth } from '@verdaccio/auth';\nimport { Config as AppConfig } from '@verdaccio/config';\nimport type { pluginUtils } from '@verdaccio/core';\nimport {\n API_ERROR,\n PLUGIN_CATEGORY,\n PLUGIN_PREFIX,\n errorUtils,\n pkgUtils,\n pluginUtils as pluginSanity,\n} from '@verdaccio/core';\nimport { asyncLoadPlugin } from '@verdaccio/loaders';\nimport { logger } from '@verdaccio/logger';\nimport {\n dotfiles,\n errorReportingMiddleware,\n final,\n handleError,\n log,\n rateLimit,\n registerBodyParser,\n userAgent,\n} from '@verdaccio/middleware';\nimport { Storage } from '@verdaccio/store';\nimport type { ConfigYaml, Config as IConfig } from '@verdaccio/types';\nimport webMiddleware from '@verdaccio/web';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/custom';\nimport hookDebug from './debug';\n\nconst debug = buildDebug('verdaccio:server');\nconst currentDir = typeof __dirname !== 'undefined' ? __dirname : import.meta.dirname;\nconst { version } = pkgUtils.getPackageJson(currentDir, '..');\n\nconst defineAPI = async function (config: IConfig, storage: Storage): Promise<Express> {\n const auth = new Auth(config, logger);\n await auth.init();\n const app = express();\n // run in production mode by default, just in case\n // it shouldn't make any difference anyway\n app.set('env', process.env.NODE_ENV || 'production');\n if (config.server?.trustProxy) {\n app.set('trust proxy', config.server.trustProxy);\n }\n app.use(cors());\n app.use(rateLimit(config.server?.rateLimit));\n\n app.use(dotfiles(config.server?.dotfiles ?? 'ignore'));\n\n const errorReportingMiddlewareWrap = errorReportingMiddleware(logger);\n\n // Router setup\n app.use(log(logger, { hideStaticLogs: config.server?.hideStaticLogs ?? true }));\n app.use(errorReportingMiddlewareWrap);\n app.use(userAgent(config));\n app.use(compression());\n\n // Body parser for JSON requests must be registered before plugins\n // so plugins can access req.body instead of manually reading the stream\n // This prevents \"stream is not readable\" errors when plugins try to read req.body\n registerBodyParser(app, config);\n\n app.get(\n '/favicon.ico',\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n req.url = '/-/static/favicon.ico';\n next();\n }\n );\n\n // Hook for tests only\n if (config._debug) {\n hookDebug(app, config.configPath);\n }\n\n const plugins: pluginUtils.ExpressMiddleware<IConfig, {}, Auth>[] = await asyncLoadPlugin(\n config.middlewares,\n {\n config,\n logger,\n },\n pluginSanity.middlewareSanityCheck,\n false,\n config.server?.pluginPrefix ?? PLUGIN_PREFIX,\n PLUGIN_CATEGORY.MIDDLEWARE\n );\n\n if (plugins.length === 0) {\n const auditPlugin = new AuditMiddleware(\n { enabled: true, strict_ssl: true },\n { config, logger }\n );\n logger.info(\n { name: 'verdaccio-audit', pluginCategory: PLUGIN_CATEGORY.MIDDLEWARE },\n 'plugin @{name} successfully loaded (@{pluginCategory})'\n );\n plugins.push(auditPlugin);\n }\n\n // Ensure sequential execution in order, and that each registration completes before the next one starts\n for (const plugin of plugins) {\n plugin.register_middlewares(app, auth, storage);\n }\n\n // For package manager requests\n app.use(apiEndpoint(config, auth, storage, logger));\n\n // For WebUI & WebUI API\n if (get(config, 'web.enabled', get(config, 'web.enable', true))) {\n app.use((_req, res, next) => {\n res.locals.app_version = version ?? '';\n next();\n });\n const middleware = await webMiddleware(config, auth, storage, logger);\n app.use(middleware);\n } else {\n app.get('/', function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) {\n next(errorUtils.getNotFound(API_ERROR.WEB_DISABLED));\n });\n }\n\n // Catch 404\n app.get('/{*any}', function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) {\n next(errorUtils.getNotFound('resource not found'));\n });\n\n app.use(handleError(logger));\n\n // app.use(function (\n // err: HttpError,\n // req: $RequestExtend,\n // res: $ResponseExtend,\n // next: $NextFunctionVer\n // ) {\n // if (_.isError(err)) {\n // if (err.code === 'ECONNABORT' && res.statusCode === HTTP_STATUS.NOT_MODIFIED) {\n // return next();\n // }\n // if (_.isFunction(res.locals.report_error) === false) {\n // // in case of very early error this middleware may not be loaded before error is generated\n // // fixing that\n // errorReportingMiddlewareWrap(req, res, _.noop);\n // }\n // res.locals.report_error(err);\n // } else {\n // // Fall to Middleware.final\n // return next(err);\n // }\n // });\n\n app.use(final);\n\n return app;\n};\n\nconst startServer = async function startServer(configHash: ConfigYaml): Promise<Express> {\n debug('start server');\n const config: IConfig = new AppConfig({ ...configHash } as any);\n const storage = new Storage(config, logger);\n try {\n // waits until init calls have been completed\n debug('storage init start');\n await storage.init(config);\n debug('storage init end');\n } catch (err: any) {\n logger.error({ error: err.msg }, 'storage has failed: @{error}');\n throw new Error(err);\n }\n return await defineAPI(config, storage);\n};\n\nexport { startServer };\nexport default startServer;\n"],"mappings":";;;;;;;;;;;;;;;;;AAuCA,IAAM,QAAQ,WAAW,mBAAmB;AAC5C,IAAM,aAAa,OAAO,cAAc,cAAc,YAAY,OAAO,KAAK;AAC9E,IAAM,EAAE,YAAY,SAAS,eAAe,YAAY,KAAK;AAE7D,IAAM,YAAY,eAAgB,QAAiB,SAAoC;CACrF,MAAM,OAAO,IAAI,KAAK,QAAQ,OAAO;AACrC,OAAM,KAAK,MAAM;CACjB,MAAM,MAAM,SAAS;AAGrB,KAAI,IAAI,OAAA,QAAA,IAAA,YAA+B,aAAa;AACpD,KAAI,OAAO,QAAQ,WACjB,KAAI,IAAI,eAAe,OAAO,OAAO,WAAW;AAElD,KAAI,IAAI,MAAM,CAAC;AACf,KAAI,IAAI,UAAU,OAAO,QAAQ,UAAU,CAAC;AAE5C,KAAI,IAAI,SAAS,OAAO,QAAQ,YAAY,SAAS,CAAC;CAEtD,MAAM,+BAA+B,yBAAyB,OAAO;AAGrE,KAAI,IAAI,IAAI,QAAQ,EAAE,gBAAgB,OAAO,QAAQ,kBAAkB,MAAM,CAAC,CAAC;AAC/E,KAAI,IAAI,6BAA6B;AACrC,KAAI,IAAI,UAAU,OAAO,CAAC;AAC1B,KAAI,IAAI,aAAa,CAAC;AAKtB,oBAAmB,KAAK,OAAO;AAE/B,KAAI,IACF,gBACA,SAAU,KAAqB,KAAsB,MAA8B;AACjF,MAAI,MAAM;AACV,QAAM;GAET;AAGD,KAAI,OAAO,OACT,eAAU,KAAK,OAAO,WAAW;CAGnC,MAAM,UAA8D,MAAM,gBACxE,OAAO,aACP;EACE;EACA;EACD,EACD,YAAa,uBACb,OACA,OAAO,QAAQ,gBAAgB,eAC/B,gBAAgB,WACjB;AAED,KAAI,QAAQ,WAAW,GAAG;EACxB,MAAM,cAAc,IAAI,gBACtB;GAAE,SAAS;GAAM,YAAY;GAAM,EACnC;GAAE;GAAQ;GAAQ,CACnB;AACD,SAAO,KACL;GAAE,MAAM;GAAmB,gBAAgB,gBAAgB;GAAY,EACvE,yDACD;AACD,UAAQ,KAAK,YAAY;;AAI3B,MAAK,MAAM,UAAU,QACnB,QAAO,qBAAqB,KAAK,MAAM,QAAQ;AAIjD,KAAI,IAAI,YAAY,QAAQ,MAAM,SAAS,OAAO,CAAC;AAGnD,KAAI,IAAI,QAAQ,eAAe,IAAI,QAAQ,cAAc,KAAK,CAAC,EAAE;AAC/D,MAAI,KAAK,MAAM,KAAK,SAAS;AAC3B,OAAI,OAAO,cAAc,WAAW;AACpC,SAAM;IACN;EACF,MAAM,aAAa,MAAM,cAAc,QAAQ,MAAM,SAAS,OAAO;AACrE,MAAI,IAAI,WAAW;OAEnB,KAAI,IAAI,KAAK,SAAU,KAAqB,KAAsB,MAAwB;AACxF,OAAK,WAAW,YAAY,UAAU,aAAa,CAAC;GACpD;AAIJ,KAAI,IAAI,WAAW,SAAU,KAAqB,KAAsB,MAAwB;AAC9F,OAAK,WAAW,YAAY,qBAAqB,CAAC;GAClD;AAEF,KAAI,IAAI,YAAY,OAAO,CAAC;AAwB5B,KAAI,IAAI,MAAM;AAEd,QAAO;;AAGT,IAAM,cAAc,eAAe,YAAY,YAA0C;AACvF,OAAM,eAAe;CACrB,MAAM,SAAkB,IAAI,OAAU,EAAE,GAAG,YAAY,CAAQ;CAC/D,MAAM,UAAU,IAAI,QAAQ,QAAQ,OAAO;AAC3C,KAAI;AAEF,QAAM,qBAAqB;AAC3B,QAAM,QAAQ,KAAK,OAAO;AAC1B,QAAM,mBAAmB;UAClB,KAAU;AACjB,SAAO,MAAM,EAAE,OAAO,IAAI,KAAK,EAAE,+BAA+B;AAChE,QAAM,IAAI,MAAM,IAAI;;AAEtB,QAAO,MAAM,UAAU,QAAQ,QAAQ"}
1
+ {"version":3,"file":"server.mjs","names":[],"sources":["../src/server.ts"],"sourcesContent":["import compression from 'compression';\nimport cors from 'cors';\nimport buildDebug from 'debug';\nimport type { Express } from 'express';\nimport express from 'express';\nimport { get } from 'lodash-es';\nimport AuditMiddleware from 'verdaccio-audit';\n\nimport apiEndpoint from '@verdaccio/api';\nimport { Auth } from '@verdaccio/auth';\nimport { Config as AppConfig } from '@verdaccio/config';\nimport type { pluginUtils } from '@verdaccio/core';\nimport {\n API_ERROR,\n PLUGIN_CATEGORY,\n PLUGIN_PREFIX,\n errorUtils,\n pkgUtils,\n pluginUtils as pluginSanity,\n} from '@verdaccio/core';\nimport { asyncLoadPlugin } from '@verdaccio/loaders';\nimport { logger } from '@verdaccio/logger';\nimport {\n dotfiles,\n errorReportingMiddleware,\n final,\n handleError,\n log,\n rateLimit,\n registerBodyParser,\n userAgent,\n} from '@verdaccio/middleware';\nimport { Storage } from '@verdaccio/store';\nimport type { ConfigYaml, Config as IConfig } from '@verdaccio/types';\nimport webMiddleware from '@verdaccio/web';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/custom';\nimport hookDebug from './debug';\n\nconst debug = buildDebug('verdaccio:server');\nconst currentDir = typeof __dirname !== 'undefined' ? __dirname : import.meta.dirname;\nconst { version } = pkgUtils.getPackageJson(currentDir, '..');\n\nexport const defineAPI = async function (config: IConfig, storage: Storage): Promise<Express> {\n const auth = new Auth(config, logger);\n await auth.init();\n const app = express();\n // run in production mode by default, just in case\n // it shouldn't make any difference anyway\n app.set('env', process.env.NODE_ENV || 'production');\n if (config.server?.trustProxy) {\n app.set('trust proxy', config.server.trustProxy);\n }\n app.use(cors());\n app.use(rateLimit(config.server?.rateLimit));\n\n app.use(dotfiles(config.server?.dotfiles ?? 'ignore'));\n\n const errorReportingMiddlewareWrap = errorReportingMiddleware(logger);\n\n // Router setup\n app.use(log(logger, { hideStaticLogs: config.server?.hideStaticLogs ?? true }));\n app.use(errorReportingMiddlewareWrap);\n app.use(userAgent(config));\n app.use(compression());\n\n // Body parser for JSON requests must be registered before plugins\n // so plugins can access req.body instead of manually reading the stream\n // This prevents \"stream is not readable\" errors when plugins try to read req.body\n registerBodyParser(app, config);\n\n app.get(\n '/favicon.ico',\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n req.url = '/-/static/favicon.ico';\n next();\n }\n );\n\n // Hook for tests only\n if (config._debug) {\n hookDebug(app, config.configPath);\n }\n\n const plugins: pluginUtils.ExpressMiddleware<IConfig, {}, Auth>[] = await asyncLoadPlugin(\n config.middlewares,\n {\n config,\n logger,\n },\n pluginSanity.middlewareSanityCheck,\n false,\n config.server?.pluginPrefix ?? PLUGIN_PREFIX,\n PLUGIN_CATEGORY.MIDDLEWARE\n );\n\n if (plugins.length === 0) {\n const auditPlugin = new AuditMiddleware(\n { enabled: true, strict_ssl: true },\n { config, logger }\n );\n logger.info(\n { name: 'verdaccio-audit', pluginCategory: PLUGIN_CATEGORY.MIDDLEWARE },\n 'plugin @{name} successfully loaded (@{pluginCategory})'\n );\n plugins.push(auditPlugin);\n }\n\n // Register JWT middleware so middleware plugins can access req.remote_user\n app.use(auth.apiJWTmiddleware());\n\n // Ensure sequential execution in order, and that each registration completes before the next one starts\n for (const plugin of plugins) {\n plugin.register_middlewares(app, auth, storage);\n }\n\n // For package manager requests\n app.use(apiEndpoint(config, auth, storage, logger));\n\n // For WebUI & WebUI API\n if (get(config, 'web.enabled', get(config, 'web.enable', true))) {\n app.use((_req, res, next) => {\n res.locals.app_version = version ?? '';\n next();\n });\n const middleware = await webMiddleware(config, auth, storage, logger);\n app.use(middleware);\n } else {\n app.get('/', function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) {\n next(errorUtils.getNotFound(API_ERROR.WEB_DISABLED));\n });\n }\n\n // Catch 404\n app.get('/{*any}', function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) {\n next(errorUtils.getNotFound('resource not found'));\n });\n\n app.use(handleError(logger));\n\n // app.use(function (\n // err: HttpError,\n // req: $RequestExtend,\n // res: $ResponseExtend,\n // next: $NextFunctionVer\n // ) {\n // if (_.isError(err)) {\n // if (err.code === 'ECONNABORT' && res.statusCode === HTTP_STATUS.NOT_MODIFIED) {\n // return next();\n // }\n // if (_.isFunction(res.locals.report_error) === false) {\n // // in case of very early error this middleware may not be loaded before error is generated\n // // fixing that\n // errorReportingMiddlewareWrap(req, res, _.noop);\n // }\n // res.locals.report_error(err);\n // } else {\n // // Fall to Middleware.final\n // return next(err);\n // }\n // });\n\n app.use(final);\n\n return app;\n};\n\nconst startServer = async function startServer(configHash: ConfigYaml): Promise<Express> {\n debug('start server');\n const config: IConfig = new AppConfig({ ...configHash } as any);\n const storage = new Storage(config, logger);\n try {\n // waits until init calls have been completed\n debug('storage init start');\n await storage.init(config);\n debug('storage init end');\n } catch (err: any) {\n logger.error({ error: err.msg }, 'storage has failed: @{error}');\n throw new Error(err);\n }\n return await defineAPI(config, storage);\n};\n\nexport { startServer };\nexport default startServer;\n"],"mappings":";;;;;;;;;;;;;;;;;AAuCA,IAAM,QAAQ,WAAW,kBAAkB;AAC3C,IAAM,aAAa,OAAO,cAAc,cAAc,YAAY,OAAO,KAAK;AAC9E,IAAM,EAAE,YAAY,SAAS,eAAe,YAAY,IAAI;AAE5D,IAAa,YAAY,eAAgB,QAAiB,SAAoC;CAC5F,MAAM,OAAO,IAAI,KAAK,QAAQ,MAAM;CACpC,MAAM,KAAK,KAAK;CAChB,MAAM,MAAM,QAAQ;CAGpB,IAAI,IAAI,OAAA,QAAA,IAAA,YAA+B,YAAY;CACnD,IAAI,OAAO,QAAQ,YACjB,IAAI,IAAI,eAAe,OAAO,OAAO,UAAU;CAEjD,IAAI,IAAI,KAAK,CAAC;CACd,IAAI,IAAI,UAAU,OAAO,QAAQ,SAAS,CAAC;CAE3C,IAAI,IAAI,SAAS,OAAO,QAAQ,YAAY,QAAQ,CAAC;CAErD,MAAM,+BAA+B,yBAAyB,MAAM;CAGpE,IAAI,IAAI,IAAI,QAAQ,EAAE,gBAAgB,OAAO,QAAQ,kBAAkB,KAAK,CAAC,CAAC;CAC9E,IAAI,IAAI,4BAA4B;CACpC,IAAI,IAAI,UAAU,MAAM,CAAC;CACzB,IAAI,IAAI,YAAY,CAAC;CAKrB,mBAAmB,KAAK,MAAM;CAE9B,IAAI,IACF,gBACA,SAAU,KAAqB,KAAsB,MAA8B;EACjF,IAAI,MAAM;EACV,KAAK;CACP,CACF;CAGA,IAAI,OAAO,QACT,cAAU,KAAK,OAAO,UAAU;CAGlC,MAAM,UAA8D,MAAM,gBACxE,OAAO,aACP;EACE;EACA;CACF,GACA,YAAa,uBACb,OACA,OAAO,QAAQ,gBAAgB,eAC/B,gBAAgB,UAClB;CAEA,IAAI,QAAQ,WAAW,GAAG;EACxB,MAAM,cAAc,IAAI,gBACtB;GAAE,SAAS;GAAM,YAAY;EAAK,GAClC;GAAE;GAAQ;EAAO,CACnB;EACA,OAAO,KACL;GAAE,MAAM;GAAmB,gBAAgB,gBAAgB;EAAW,GACtE,wDACF;EACA,QAAQ,KAAK,WAAW;CAC1B;CAGA,IAAI,IAAI,KAAK,iBAAiB,CAAC;CAG/B,KAAK,MAAM,UAAU,SACnB,OAAO,qBAAqB,KAAK,MAAM,OAAO;CAIhD,IAAI,IAAI,YAAY,QAAQ,MAAM,SAAS,MAAM,CAAC;CAGlD,IAAI,IAAI,QAAQ,eAAe,IAAI,QAAQ,cAAc,IAAI,CAAC,GAAG;EAC/D,IAAI,KAAK,MAAM,KAAK,SAAS;GAC3B,IAAI,OAAO,cAAc,WAAW;GACpC,KAAK;EACP,CAAC;EACD,MAAM,aAAa,MAAM,cAAc,QAAQ,MAAM,SAAS,MAAM;EACpE,IAAI,IAAI,UAAU;CACpB,OACE,IAAI,IAAI,KAAK,SAAU,KAAqB,KAAsB,MAAwB;EACxF,KAAK,WAAW,YAAY,UAAU,YAAY,CAAC;CACrD,CAAC;CAIH,IAAI,IAAI,WAAW,SAAU,KAAqB,KAAsB,MAAwB;EAC9F,KAAK,WAAW,YAAY,oBAAoB,CAAC;CACnD,CAAC;CAED,IAAI,IAAI,YAAY,MAAM,CAAC;CAwB3B,IAAI,IAAI,KAAK;CAEb,OAAO;AACT;AAEA,IAAM,cAAc,eAAe,YAAY,YAA0C;CACvF,MAAM,cAAc;CACpB,MAAM,SAAkB,IAAI,OAAU,EAAE,GAAG,WAAW,CAAQ;CAC9D,MAAM,UAAU,IAAI,QAAQ,QAAQ,MAAM;CAC1C,IAAI;EAEF,MAAM,oBAAoB;EAC1B,MAAM,QAAQ,KAAK,MAAM;EACzB,MAAM,kBAAkB;CAC1B,SAAS,KAAU;EACjB,OAAO,MAAM,EAAE,OAAO,IAAI,IAAI,GAAG,8BAA8B;EAC/D,MAAM,IAAI,MAAM,GAAG;CACrB;CACA,OAAO,MAAM,UAAU,QAAQ,OAAO;AACxC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdaccio/server",
3
- "version": "9.0.0-next-9.17",
3
+ "version": "9.0.0-next-9.19",
4
4
  "description": "Verdaccio Express Server",
5
5
  "main": "./build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -33,27 +33,29 @@
33
33
  "node": ">=24"
34
34
  },
35
35
  "dependencies": {
36
- "@verdaccio/api": "9.0.0-next-9.17",
37
- "@verdaccio/auth": "9.0.0-next-9.17",
38
- "@verdaccio/core": "9.0.0-next-9.17",
39
- "@verdaccio/config": "9.0.0-next-9.17",
40
- "@verdaccio/loaders": "9.0.0-next-9.17",
41
- "@verdaccio/logger": "9.0.0-next-9.17",
42
- "@verdaccio/middleware": "9.0.0-next-9.17",
43
- "@verdaccio/store": "9.0.0-next-9.17",
44
- "@verdaccio/web": "9.0.0-next-9.17",
45
- "verdaccio-audit": "14.0.0-next-9.17",
36
+ "@verdaccio/api": "9.0.0-next-9.19",
37
+ "@verdaccio/auth": "9.0.0-next-9.19",
38
+ "@verdaccio/config": "9.0.0-next-9.19",
39
+ "@verdaccio/core": "9.0.0-next-9.19",
40
+ "@verdaccio/loaders": "9.0.0-next-9.19",
41
+ "@verdaccio/logger": "9.0.0-next-9.19",
42
+ "@verdaccio/middleware": "9.0.0-next-9.19",
43
+ "@verdaccio/store": "9.0.0-next-9.19",
44
+ "@verdaccio/web": "9.0.0-next-9.19",
46
45
  "compression": "1.8.1",
47
- "cors": "2.8.5",
46
+ "cors": "2.8.6",
48
47
  "debug": "4.4.3",
49
48
  "express": "5.2.1",
50
- "lodash-es": "4.18.1"
49
+ "lodash-es": "4.18.1",
50
+ "verdaccio-audit": "14.0.0-next-9.19"
51
51
  },
52
52
  "devDependencies": {
53
- "@verdaccio/types": "14.0.0-next-9.8",
54
53
  "@types/lodash-es": "4.17.12",
54
+ "@verdaccio/types": "14.0.0-next-9.10",
55
55
  "supertest": "7.1.4",
56
- "vitest": "4.1.0"
56
+ "rimraf": "6.1.3",
57
+ "vite": "8.0.14",
58
+ "vitest": "4.1.7"
57
59
  },
58
60
  "funding": {
59
61
  "type": "opencollective",