@verdaccio/server 7.0.0-next.3 → 7.0.0-next.5

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,42 @@
1
1
  # @verdaccio/server
2
2
 
3
+ ## 7.0.0-next.5
4
+
5
+ ### Minor Changes
6
+
7
+ - f047cc8: refactor: auth with legacy sign support
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [f047cc8]
12
+ - @verdaccio/middleware@7.0.0-next.5
13
+ - @verdaccio/core@7.0.0-next.5
14
+ - @verdaccio/config@7.0.0-next.5
15
+ - @verdaccio/auth@7.0.0-next.5
16
+ - @verdaccio/api@7.0.0-next.5
17
+ - @verdaccio/store@7.0.0-next.5
18
+ - @verdaccio/web@7.0.0-next.5
19
+ - @verdaccio/loaders@7.0.0-next.5
20
+ - @verdaccio/logger@7.0.0-next.5
21
+ - verdaccio-audit@12.0.0-next.5
22
+ - @verdaccio/utils@7.0.0-next.5
23
+
24
+ ## 7.0.0-next.4
25
+
26
+ ### Patch Changes
27
+
28
+ - @verdaccio/auth@7.0.0-next.4
29
+ - @verdaccio/api@7.0.0-next.4
30
+ - verdaccio-audit@12.0.0-next.4
31
+ - @verdaccio/web@7.0.0-next.4
32
+ - @verdaccio/core@7.0.0-next.4
33
+ - @verdaccio/config@7.0.0-next.4
34
+ - @verdaccio/loaders@7.0.0-next.4
35
+ - @verdaccio/middleware@7.0.0-next.4
36
+ - @verdaccio/store@7.0.0-next.4
37
+ - @verdaccio/utils@7.0.0-next.4
38
+ - @verdaccio/logger@7.0.0-next.4
39
+
3
40
  ## 7.0.0-next.3
4
41
 
5
42
  ### Major Changes
package/build/server.js CHANGED
@@ -97,26 +97,36 @@ const defineAPI = async function (config, storage) {
97
97
  app.get('/*', function (req, res, next) {
98
98
  next(_core.errorUtils.getNotFound('resource not found'));
99
99
  });
100
- app.use(function (err, req, res, next) {
101
- if (_lodash.default.isError(err)) {
102
- if (err.code === 'ECONNABORT' && res.statusCode === _core.HTTP_STATUS.NOT_MODIFIED) {
103
- return next();
104
- }
105
- if (_lodash.default.isFunction(res.locals.report_error) === false) {
106
- // in case of very early error this middleware may not be loaded before error is generated
107
- // fixing that
108
- errorReportingMiddlewareWrap(req, res, _lodash.default.noop);
109
- }
110
- res.locals.report_error(err);
111
- } else {
112
- // Fall to Middleware.final
113
- return next(err);
114
- }
115
- });
100
+
101
+ // @ts-ignore
102
+ app.use((0, _middleware.handleError)(_logger.logger));
103
+
104
+ // app.use(function (
105
+ // err: HttpError,
106
+ // req: $RequestExtend,
107
+ // res: $ResponseExtend,
108
+ // next: $NextFunctionVer
109
+ // ) {
110
+ // if (_.isError(err)) {
111
+ // if (err.code === 'ECONNABORT' && res.statusCode === HTTP_STATUS.NOT_MODIFIED) {
112
+ // return next();
113
+ // }
114
+ // if (_.isFunction(res.locals.report_error) === false) {
115
+ // // in case of very early error this middleware may not be loaded before error is generated
116
+ // // fixing that
117
+ // errorReportingMiddlewareWrap(req, res, _.noop);
118
+ // }
119
+ // res.locals.report_error(err);
120
+ // } else {
121
+ // // Fall to Middleware.final
122
+ // return next(err);
123
+ // }
124
+ // });
125
+
116
126
  app.use(_middleware.final);
117
127
  return app;
118
128
  };
119
- var startServer = async function startServer(configHash) {
129
+ var startServer = exports.default = async function startServer(configHash) {
120
130
  debug('start server');
121
131
  const config = new _config.Config({
122
132
  ...configHash
@@ -138,5 +148,4 @@ var startServer = async function startServer(configHash) {
138
148
  }
139
149
  return await defineAPI(config, storage);
140
150
  };
141
- exports.default = startServer;
142
151
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","names":["_compression","_interopRequireDefault","require","_cors","_debug","_express","_lodash","_verdaccioAudit","_api","_auth","_config","_core","_loaders","_logger","_middleware","_store","_web","_debug2","obj","__esModule","default","debug","buildDebug","version","defineAPI","config","storage","_config$server","auth","Auth","init","app","express","set","process","env","NODE_ENV","server","trustProxy","use","cors","rateLimit","serverSettings","errorReportingMiddlewareWrap","errorReportingMiddleware","logger","log","userAgent","compression","get","req","res","next","url","hookDebug","configPath","plugins","asyncLoadPlugin","middlewares","plugin","register_middlewares","length","info","push","AuditMiddleware","enabled","strict_ssl","forEach","apiEndpoint","_","_req","locals","app_version","middleware","webMiddleware","errorUtils","getNotFound","API_ERROR","WEB_DISABLED","err","isError","code","statusCode","HTTP_STATUS","NOT_MODIFIED","isFunction","report_error","noop","final","startServer","configHash","AppConfig","Storage","error","msg","Error","exports"],"sources":["../src/server.ts"],"sourcesContent":["import compression from 'compression';\nimport cors from 'cors';\nimport buildDebug from 'debug';\nimport express from 'express';\nimport { HttpError } from 'http-errors';\nimport _ from 'lodash';\nimport AuditMiddleware from 'verdaccio-audit';\n\nimport apiEndpoint from '@verdaccio/api';\nimport { Auth } from '@verdaccio/auth';\nimport { Config as AppConfig } from '@verdaccio/config';\nimport { API_ERROR, HTTP_STATUS, errorUtils, pluginUtils } from '@verdaccio/core';\nimport { asyncLoadPlugin } from '@verdaccio/loaders';\nimport { logger } from '@verdaccio/logger';\nimport { errorReportingMiddleware, final, log, rateLimit, userAgent } from '@verdaccio/middleware';\nimport { Storage } from '@verdaccio/store';\nimport { ConfigYaml } from '@verdaccio/types';\nimport { Config as IConfig } from '@verdaccio/types';\nimport webMiddleware from '@verdaccio/web';\n\nimport { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/custom';\nimport hookDebug from './debug';\n\nconst debug = buildDebug('verdaccio:server');\nconst { version } = require('../package.json');\n\nconst defineAPI = async function (config: IConfig, storage: Storage): Promise<any> {\n const auth: Auth = new Auth(config);\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.serverSettings.rateLimit));\n\n const errorReportingMiddlewareWrap = errorReportingMiddleware(logger);\n\n // Router setup\n app.use(log(logger));\n app.use(errorReportingMiddlewareWrap);\n app.use(userAgent(config));\n app.use(compression());\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 function (plugin) {\n return typeof plugin.register_middlewares !== 'undefined';\n }\n );\n\n if (plugins.length === 0) {\n logger.info('none middleware plugins has been defined, adding audit middleware by default');\n // @ts-ignore\n plugins.push(new AuditMiddleware({ enabled: true, strict_ssl: true }, { config, logger }));\n }\n\n plugins.forEach((plugin: pluginUtils.ExpressMiddleware<IConfig, {}, Auth>) => {\n plugin.register_middlewares(app, auth, storage);\n });\n\n // For npm request\n // @ts-ignore\n app.use(apiEndpoint(config, auth, storage));\n\n // For WebUI & WebUI API\n if (_.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);\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('/*', function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) {\n next(errorUtils.getNotFound('resource not found'));\n });\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\nexport default (async function startServer(configHash: ConfigYaml): Promise<any> {\n debug('start server');\n const config: IConfig = new AppConfig({ ...configHash } as any);\n // register middleware plugins\n debug('loaded filter plugin');\n // @ts-ignore\n const storage: Storage = new Storage(config);\n try {\n // waits until init calls have been initialized\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"],"mappings":"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"}
1
+ {"version":3,"file":"server.js","names":["_compression","_interopRequireDefault","require","_cors","_debug","_express","_lodash","_verdaccioAudit","_api","_auth","_config","_core","_loaders","_logger","_middleware","_store","_web","_debug2","obj","__esModule","default","debug","buildDebug","version","defineAPI","config","storage","_config$server","auth","Auth","init","app","express","set","process","env","NODE_ENV","server","trustProxy","use","cors","rateLimit","serverSettings","errorReportingMiddlewareWrap","errorReportingMiddleware","logger","log","userAgent","compression","get","req","res","next","url","hookDebug","configPath","plugins","asyncLoadPlugin","middlewares","plugin","register_middlewares","length","info","push","AuditMiddleware","enabled","strict_ssl","forEach","apiEndpoint","_","_req","locals","app_version","middleware","webMiddleware","errorUtils","getNotFound","API_ERROR","WEB_DISABLED","handleError","final","startServer","exports","configHash","AppConfig","Storage","err","error","msg","Error"],"sources":["../src/server.ts"],"sourcesContent":["import compression from 'compression';\nimport cors from 'cors';\nimport buildDebug from 'debug';\nimport express from 'express';\nimport _ from 'lodash';\nimport AuditMiddleware from 'verdaccio-audit';\n\nimport apiEndpoint from '@verdaccio/api';\nimport { Auth } from '@verdaccio/auth';\nimport { Config as AppConfig } from '@verdaccio/config';\nimport { API_ERROR, errorUtils, pluginUtils } from '@verdaccio/core';\nimport { asyncLoadPlugin } from '@verdaccio/loaders';\nimport { logger } from '@verdaccio/logger';\nimport {\n errorReportingMiddleware,\n final,\n handleError,\n log,\n rateLimit,\n userAgent,\n} from '@verdaccio/middleware';\nimport { Storage } from '@verdaccio/store';\nimport { ConfigYaml } from '@verdaccio/types';\nimport { Config as IConfig } from '@verdaccio/types';\nimport webMiddleware from '@verdaccio/web';\n\nimport { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/custom';\nimport hookDebug from './debug';\n\nconst debug = buildDebug('verdaccio:server');\nconst { version } = require('../package.json');\n\nconst defineAPI = async function (config: IConfig, storage: Storage): Promise<any> {\n const auth: Auth = new Auth(config);\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.serverSettings.rateLimit));\n\n const errorReportingMiddlewareWrap = errorReportingMiddleware(logger);\n\n // Router setup\n app.use(log(logger));\n app.use(errorReportingMiddlewareWrap);\n app.use(userAgent(config));\n app.use(compression());\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 function (plugin) {\n return typeof plugin.register_middlewares !== 'undefined';\n }\n );\n\n if (plugins.length === 0) {\n logger.info('none middleware plugins has been defined, adding audit middleware by default');\n // @ts-ignore\n plugins.push(new AuditMiddleware({ enabled: true, strict_ssl: true }, { config, logger }));\n }\n\n plugins.forEach((plugin: pluginUtils.ExpressMiddleware<IConfig, {}, Auth>) => {\n plugin.register_middlewares(app, auth, storage);\n });\n\n // For npm request\n // @ts-ignore\n app.use(apiEndpoint(config, auth, storage));\n\n // For WebUI & WebUI API\n if (_.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);\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('/*', function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) {\n next(errorUtils.getNotFound('resource not found'));\n });\n\n // @ts-ignore\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\nexport default (async function startServer(configHash: ConfigYaml): Promise<any> {\n debug('start server');\n const config: IConfig = new AppConfig({ ...configHash } as any);\n // register middleware plugins\n debug('loaded filter plugin');\n // @ts-ignore\n const storage: Storage = new Storage(config);\n try {\n // waits until init calls have been initialized\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"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdaccio/server",
3
- "version": "7.0.0-next.3",
3
+ "version": "7.0.0-next.5",
4
4
  "description": "server logic",
5
5
  "main": "./build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -29,17 +29,17 @@
29
29
  "node": ">=18"
30
30
  },
31
31
  "dependencies": {
32
- "@verdaccio/api": "7.0.0-next.3",
33
- "@verdaccio/auth": "7.0.0-next.3",
34
- "@verdaccio/core": "7.0.0-next.3",
35
- "@verdaccio/config": "7.0.0-next.3",
36
- "@verdaccio/loaders": "7.0.0-next.3",
37
- "@verdaccio/logger": "7.0.0-next.3",
38
- "@verdaccio/middleware": "7.0.0-next.3",
39
- "@verdaccio/store": "7.0.0-next.3",
40
- "@verdaccio/utils": "7.0.0-next.3",
41
- "@verdaccio/web": "7.0.0-next.3",
42
- "verdaccio-audit": "12.0.0-next.3",
32
+ "@verdaccio/api": "7.0.0-next.5",
33
+ "@verdaccio/auth": "7.0.0-next.5",
34
+ "@verdaccio/core": "7.0.0-next.5",
35
+ "@verdaccio/config": "7.0.0-next.5",
36
+ "@verdaccio/loaders": "7.0.0-next.5",
37
+ "@verdaccio/logger": "7.0.0-next.5",
38
+ "@verdaccio/middleware": "7.0.0-next.5",
39
+ "@verdaccio/store": "7.0.0-next.5",
40
+ "@verdaccio/utils": "7.0.0-next.5",
41
+ "@verdaccio/web": "7.0.0-next.5",
42
+ "verdaccio-audit": "12.0.0-next.5",
43
43
  "compression": "1.7.4",
44
44
  "cors": "2.8.5",
45
45
  "debug": "4.3.4",
@@ -47,8 +47,8 @@
47
47
  "lodash": "4.17.21"
48
48
  },
49
49
  "devDependencies": {
50
- "@verdaccio/proxy": "7.0.0-next.3",
51
- "@verdaccio/test-helper": "3.0.0-next.0",
50
+ "@verdaccio/proxy": "7.0.0-next.5",
51
+ "@verdaccio/test-helper": "3.0.0-next.1",
52
52
  "http-errors": "2.0.0"
53
53
  },
54
54
  "funding": {
package/src/server.ts CHANGED
@@ -2,17 +2,23 @@ import compression from 'compression';
2
2
  import cors from 'cors';
3
3
  import buildDebug from 'debug';
4
4
  import express from 'express';
5
- import { HttpError } from 'http-errors';
6
5
  import _ from 'lodash';
7
6
  import AuditMiddleware from 'verdaccio-audit';
8
7
 
9
8
  import apiEndpoint from '@verdaccio/api';
10
9
  import { Auth } from '@verdaccio/auth';
11
10
  import { Config as AppConfig } from '@verdaccio/config';
12
- import { API_ERROR, HTTP_STATUS, errorUtils, pluginUtils } from '@verdaccio/core';
11
+ import { API_ERROR, errorUtils, pluginUtils } from '@verdaccio/core';
13
12
  import { asyncLoadPlugin } from '@verdaccio/loaders';
14
13
  import { logger } from '@verdaccio/logger';
15
- import { errorReportingMiddleware, final, log, rateLimit, userAgent } from '@verdaccio/middleware';
14
+ import {
15
+ errorReportingMiddleware,
16
+ final,
17
+ handleError,
18
+ log,
19
+ rateLimit,
20
+ userAgent,
21
+ } from '@verdaccio/middleware';
16
22
  import { Storage } from '@verdaccio/store';
17
23
  import { ConfigYaml } from '@verdaccio/types';
18
24
  import { Config as IConfig } from '@verdaccio/types';
@@ -102,27 +108,30 @@ const defineAPI = async function (config: IConfig, storage: Storage): Promise<an
102
108
  next(errorUtils.getNotFound('resource not found'));
103
109
  });
104
110
 
105
- app.use(function (
106
- err: HttpError,
107
- req: $RequestExtend,
108
- res: $ResponseExtend,
109
- next: $NextFunctionVer
110
- ) {
111
- if (_.isError(err)) {
112
- if (err.code === 'ECONNABORT' && res.statusCode === HTTP_STATUS.NOT_MODIFIED) {
113
- return next();
114
- }
115
- if (_.isFunction(res.locals.report_error) === false) {
116
- // in case of very early error this middleware may not be loaded before error is generated
117
- // fixing that
118
- errorReportingMiddlewareWrap(req, res, _.noop);
119
- }
120
- res.locals.report_error(err);
121
- } else {
122
- // Fall to Middleware.final
123
- return next(err);
124
- }
125
- });
111
+ // @ts-ignore
112
+ app.use(handleError(logger));
113
+
114
+ // app.use(function (
115
+ // err: HttpError,
116
+ // req: $RequestExtend,
117
+ // res: $ResponseExtend,
118
+ // next: $NextFunctionVer
119
+ // ) {
120
+ // if (_.isError(err)) {
121
+ // if (err.code === 'ECONNABORT' && res.statusCode === HTTP_STATUS.NOT_MODIFIED) {
122
+ // return next();
123
+ // }
124
+ // if (_.isFunction(res.locals.report_error) === false) {
125
+ // // in case of very early error this middleware may not be loaded before error is generated
126
+ // // fixing that
127
+ // errorReportingMiddlewareWrap(req, res, _.noop);
128
+ // }
129
+ // res.locals.report_error(err);
130
+ // } else {
131
+ // // Fall to Middleware.final
132
+ // return next(err);
133
+ // }
134
+ // });
126
135
 
127
136
  app.use(final);
128
137
 
package/test/_helper.ts CHANGED
@@ -8,7 +8,7 @@ import { generateRandomHexString } from '@verdaccio/utils';
8
8
 
9
9
  import apiMiddleware from '../src';
10
10
 
11
- setup();
11
+ setup({});
12
12
 
13
13
  export const getConf = async (conf) => {
14
14
  const configPath = path.join(__dirname, 'config', conf);