@verdaccio/middleware 6.0.0-6-next.51 → 6.0.0-6-next.52

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,16 @@
1
1
  # @verdaccio/middleware
2
2
 
3
+ ## 6.0.0-6-next.52
4
+
5
+ ### Patch Changes
6
+
7
+ - f859d2b1a: fix: official package "-" cannot be synced
8
+ - Updated dependencies [f859d2b1a]
9
+ - @verdaccio/core@6.0.0-6-next.73
10
+ - @verdaccio/config@6.0.0-6-next.73
11
+ - @verdaccio/url@11.0.0-6-next.39
12
+ - @verdaccio/utils@6.0.0-6-next.41
13
+
3
14
  ## 6.0.0-6-next.51
4
15
 
5
16
  ### Patch Changes
@@ -6,25 +6,18 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.validateName = validateName;
7
7
  exports.validatePackage = validatePackage;
8
8
  var _core = require("@verdaccio/core");
9
- var _utils = require("@verdaccio/utils");
10
9
  function validateName(_req, _res, next, value, name) {
11
- if (value === '-') {
12
- // special case in couchdb usually
13
- next('route');
14
- } else if ((0, _utils.validateName)(value)) {
10
+ if (_core.validationUtils.validateName(value)) {
15
11
  next();
16
12
  } else {
17
- next(_core.errorUtils.getForbidden('invalid ' + name));
13
+ next(_core.errorUtils.getBadRequest('invalid ' + name));
18
14
  }
19
15
  }
20
16
  function validatePackage(_req, _res, next, value, name) {
21
- if (value === '-') {
22
- // special case in couchdb usually
23
- next('route');
24
- } else if ((0, _utils.validatePackage)(value)) {
17
+ if (_core.validationUtils.validatePackage(value)) {
25
18
  next();
26
19
  } else {
27
- next(_core.errorUtils.getForbidden('invalid ' + name));
20
+ next(_core.errorUtils.getBadRequest('invalid ' + name));
28
21
  }
29
22
  }
30
23
  //# sourceMappingURL=validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","names":["_core","require","_utils","validateName","_req","_res","next","value","name","utilValidateName","errorUtils","getForbidden","validatePackage","utilValidatePackage"],"sources":["../../src/middlewares/validation.ts"],"sourcesContent":["import { errorUtils } from '@verdaccio/core';\nimport {\n validateName as utilValidateName,\n validatePackage as utilValidatePackage,\n} from '@verdaccio/utils';\n\nexport function validateName(_req, _res, next, value: string, name: string) {\n if (value === '-') {\n // special case in couchdb usually\n next('route');\n } else if (utilValidateName(value)) {\n next();\n } else {\n next(errorUtils.getForbidden('invalid ' + name));\n }\n}\n\nexport function validatePackage(_req, _res, next, value: string, name: string) {\n if (value === '-') {\n // special case in couchdb usually\n next('route');\n } else if (utilValidatePackage(value)) {\n next();\n } else {\n next(errorUtils.getForbidden('invalid ' + name));\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAKO,SAASE,YAAYA,CAACC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,KAAa,EAAEC,IAAY,EAAE;EAC1E,IAAID,KAAK,KAAK,GAAG,EAAE;IACjB;IACAD,IAAI,CAAC,OAAO,CAAC;EACf,CAAC,MAAM,IAAI,IAAAG,mBAAgB,EAACF,KAAK,CAAC,EAAE;IAClCD,IAAI,CAAC,CAAC;EACR,CAAC,MAAM;IACLA,IAAI,CAACI,gBAAU,CAACC,YAAY,CAAC,UAAU,GAAGH,IAAI,CAAC,CAAC;EAClD;AACF;AAEO,SAASI,eAAeA,CAACR,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,KAAa,EAAEC,IAAY,EAAE;EAC7E,IAAID,KAAK,KAAK,GAAG,EAAE;IACjB;IACAD,IAAI,CAAC,OAAO,CAAC;EACf,CAAC,MAAM,IAAI,IAAAO,sBAAmB,EAACN,KAAK,CAAC,EAAE;IACrCD,IAAI,CAAC,CAAC;EACR,CAAC,MAAM;IACLA,IAAI,CAACI,gBAAU,CAACC,YAAY,CAAC,UAAU,GAAGH,IAAI,CAAC,CAAC;EAClD;AACF"}
1
+ {"version":3,"file":"validation.js","names":["_core","require","validateName","_req","_res","next","value","name","validationUtils","errorUtils","getBadRequest","validatePackage"],"sources":["../../src/middlewares/validation.ts"],"sourcesContent":["import { errorUtils, validationUtils } from '@verdaccio/core';\n\nexport function validateName(_req, _res, next, value: string, name: string) {\n if (validationUtils.validateName(value)) {\n next();\n } else {\n next(errorUtils.getBadRequest('invalid ' + name));\n }\n}\n\nexport function validatePackage(_req, _res, next, value: string, name: string) {\n if (validationUtils.validatePackage(value)) {\n next();\n } else {\n next(errorUtils.getBadRequest('invalid ' + name));\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEO,SAASC,YAAYA,CAACC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,KAAa,EAAEC,IAAY,EAAE;EAC1E,IAAIC,qBAAe,CAACN,YAAY,CAACI,KAAK,CAAC,EAAE;IACvCD,IAAI,CAAC,CAAC;EACR,CAAC,MAAM;IACLA,IAAI,CAACI,gBAAU,CAACC,aAAa,CAAC,UAAU,GAAGH,IAAI,CAAC,CAAC;EACnD;AACF;AAEO,SAASI,eAAeA,CAACR,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,KAAa,EAAEC,IAAY,EAAE;EAC7E,IAAIC,qBAAe,CAACG,eAAe,CAACL,KAAK,CAAC,EAAE;IAC1CD,IAAI,CAAC,CAAC;EACR,CAAC,MAAM;IACLA,IAAI,CAACI,gBAAU,CAACC,aAAa,CAAC,UAAU,GAAGH,IAAI,CAAC,CAAC;EACnD;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdaccio/middleware",
3
- "version": "6.0.0-6-next.51",
3
+ "version": "6.0.0-6-next.52",
4
4
  "description": "express middleware utils",
5
5
  "main": "./build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -29,10 +29,10 @@
29
29
  "node": ">=12"
30
30
  },
31
31
  "dependencies": {
32
- "@verdaccio/core": "6.0.0-6-next.72",
33
- "@verdaccio/utils": "6.0.0-6-next.40",
34
- "@verdaccio/config": "6.0.0-6-next.72",
35
- "@verdaccio/url": "11.0.0-6-next.38",
32
+ "@verdaccio/core": "6.0.0-6-next.73",
33
+ "@verdaccio/utils": "6.0.0-6-next.41",
34
+ "@verdaccio/config": "6.0.0-6-next.73",
35
+ "@verdaccio/url": "11.0.0-6-next.39",
36
36
  "debug": "4.3.4",
37
37
  "lru-cache": "7.18.3",
38
38
  "express": "4.18.2",
@@ -45,7 +45,7 @@
45
45
  "url": "https://opencollective.com/verdaccio"
46
46
  },
47
47
  "devDependencies": {
48
- "@verdaccio/logger": "6.0.0-6-next.40",
48
+ "@verdaccio/logger": "6.0.0-6-next.41",
49
49
  "body-parser": "1.20.2",
50
50
  "supertest": "6.3.3"
51
51
  },
@@ -1,27 +1,17 @@
1
- import { errorUtils } from '@verdaccio/core';
2
- import {
3
- validateName as utilValidateName,
4
- validatePackage as utilValidatePackage,
5
- } from '@verdaccio/utils';
1
+ import { errorUtils, validationUtils } from '@verdaccio/core';
6
2
 
7
3
  export function validateName(_req, _res, next, value: string, name: string) {
8
- if (value === '-') {
9
- // special case in couchdb usually
10
- next('route');
11
- } else if (utilValidateName(value)) {
4
+ if (validationUtils.validateName(value)) {
12
5
  next();
13
6
  } else {
14
- next(errorUtils.getForbidden('invalid ' + name));
7
+ next(errorUtils.getBadRequest('invalid ' + name));
15
8
  }
16
9
  }
17
10
 
18
11
  export function validatePackage(_req, _res, next, value: string, name: string) {
19
- if (value === '-') {
20
- // special case in couchdb usually
21
- next('route');
22
- } else if (utilValidatePackage(value)) {
12
+ if (validationUtils.validatePackage(value)) {
23
13
  next();
24
14
  } else {
25
- next(errorUtils.getForbidden('invalid ' + name));
15
+ next(errorUtils.getBadRequest('invalid ' + name));
26
16
  }
27
17
  }
@@ -2,55 +2,9 @@ import request from 'supertest';
2
2
 
3
3
  import { HTTP_STATUS } from '@verdaccio/core';
4
4
 
5
- import { match, validateName, validatePackage } from '../src';
5
+ import { match } from '../src';
6
6
  import { getApp } from './helper';
7
7
 
8
- describe('validate params', () => {
9
- test('should validate package name', async () => {
10
- const app = getApp([]);
11
- // @ts-ignore
12
- app.param('package', validatePackage);
13
- app.get('/pkg/:package', (req, res) => {
14
- res.status(HTTP_STATUS.OK).json({});
15
- });
16
-
17
- return request(app).get('/pkg/react').expect(HTTP_STATUS.OK);
18
- });
19
-
20
- test('should fails validate package name', async () => {
21
- const app = getApp([]);
22
- // @ts-ignore
23
- app.param('package', validatePackage);
24
- app.get('/pkg/:package', (req, res) => {
25
- res.status(HTTP_STATUS.OK).json({});
26
- });
27
-
28
- return request(app).get('/pkg/node_modules').expect(HTTP_STATUS.FORBIDDEN);
29
- });
30
-
31
- test('should fails file name package name', async () => {
32
- const app = getApp([]);
33
- // @ts-ignore
34
- app.param('filename', validateName);
35
- app.get('/file/:filename', (req, res) => {
36
- res.status(HTTP_STATUS.OK).json({});
37
- });
38
-
39
- return request(app).get('/file/__proto__').expect(HTTP_STATUS.FORBIDDEN);
40
- });
41
-
42
- test('should validate file name package name', async () => {
43
- const app = getApp([]);
44
- // @ts-ignore
45
- app.param('filename', validateName);
46
- app.get('/file/:filename', (req, res) => {
47
- res.status(HTTP_STATUS.OK).json({});
48
- });
49
-
50
- return request(app).get('/file/react.tar.gz').expect(HTTP_STATUS.OK);
51
- });
52
- });
53
-
54
8
  describe('match', () => {
55
9
  test('should not match middleware', async () => {
56
10
  const app = getApp([]);
@@ -0,0 +1,92 @@
1
+ import request from 'supertest';
2
+
3
+ import { HTTP_STATUS } from '@verdaccio/core';
4
+
5
+ import { validateName, validatePackage } from '../src';
6
+ import { getApp } from './helper';
7
+
8
+ describe('validate package name middleware', () => {
9
+ test.each(['jquery', '-'])('%s should be valid package name', (pkg) => {
10
+ const app = getApp([]);
11
+ app.param('pkg', validatePackage);
12
+ app.get('/:pkg', (_req, res) => {
13
+ res.status(HTTP_STATUS.OK).json({});
14
+ });
15
+
16
+ return request(app).get(`/${pkg}`).expect(HTTP_STATUS.OK);
17
+ });
18
+
19
+ test.each(['node_modules', '%'])('%s should be invalid package name', (pkg) => {
20
+ const app = getApp([]);
21
+ app.param('pkg', validatePackage);
22
+ app.get('/:pkg', (_req, res) => {
23
+ res.status(HTTP_STATUS.OK).json({});
24
+ });
25
+
26
+ return request(app).get(`/${pkg}`).expect(HTTP_STATUS.BAD_REQUEST);
27
+ });
28
+
29
+ test('should validate package name double level', async () => {
30
+ const app = getApp([]);
31
+ // @ts-ignore
32
+ app.param('package', validatePackage);
33
+ app.get('/pkg/:package', (req, res) => {
34
+ res.status(HTTP_STATUS.OK).json({});
35
+ });
36
+
37
+ return request(app).get('/pkg/react').expect(HTTP_STATUS.OK);
38
+ });
39
+
40
+ test('should fails validate package name double level', async () => {
41
+ const app = getApp([]);
42
+ // @ts-ignore
43
+ app.param('package', validatePackage);
44
+ app.get('/pkg/:package', (req, res) => {
45
+ res.status(HTTP_STATUS.OK).json({});
46
+ });
47
+
48
+ return request(app).get('/pkg/node_modules').expect(HTTP_STATUS.BAD_REQUEST);
49
+ });
50
+ });
51
+
52
+ describe('validate file name name middleware', () => {
53
+ test.each(['old-package@0.1.2.tgz', '--0.0.1.tgz'])('%s should be valid file name', (pkg) => {
54
+ const app = getApp([]);
55
+ app.param('pkg', validateName);
56
+ app.get('/:pkg', (_req, res) => {
57
+ res.status(HTTP_STATUS.OK).json({});
58
+ });
59
+
60
+ return request(app).get(`/${pkg}`).expect(HTTP_STATUS.OK);
61
+ });
62
+
63
+ test.each(['some%2Fthing', '.bin'])('%s should be invalid package name', (pkg) => {
64
+ const app = getApp([]);
65
+ app.param('pkg', validateName);
66
+ app.get('/:pkg', (_req, res) => {
67
+ res.status(HTTP_STATUS.OK).json({});
68
+ });
69
+
70
+ return request(app).get(`/${pkg}`).expect(HTTP_STATUS.BAD_REQUEST);
71
+ });
72
+
73
+ test('should fails file name package name', async () => {
74
+ const app = getApp([]);
75
+ app.param('filename', validateName);
76
+ app.get('/file/:filename', (req, res) => {
77
+ res.status(HTTP_STATUS.OK).json({});
78
+ });
79
+
80
+ return request(app).get('/file/__proto__').expect(HTTP_STATUS.BAD_REQUEST);
81
+ });
82
+
83
+ test('should validate file name package name', async () => {
84
+ const app = getApp([]);
85
+ app.param('filename', validateName);
86
+ app.get('/file/:filename', (req, res) => {
87
+ res.status(HTTP_STATUS.OK).json({});
88
+ });
89
+
90
+ return request(app).get('/file/react.tar.gz').expect(HTTP_STATUS.OK);
91
+ });
92
+ });