@verdaccio/api 6.0.0-6-next.16 → 6.0.0-6-next.20

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.
Files changed (50) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/build/dist-tags.d.ts +1 -1
  3. package/build/dist-tags.js +3 -3
  4. package/build/dist-tags.js.map +1 -1
  5. package/build/index.js +12 -12
  6. package/build/index.js.map +1 -1
  7. package/build/package.d.ts +1 -2
  8. package/build/package.js +28 -61
  9. package/build/package.js.map +1 -1
  10. package/build/ping.js.map +1 -1
  11. package/build/publish.d.ts +2 -2
  12. package/build/publish.js +10 -16
  13. package/build/publish.js.map +1 -1
  14. package/build/star.d.ts +1 -1
  15. package/build/star.js +6 -12
  16. package/build/star.js.map +1 -1
  17. package/build/stars.js.map +1 -1
  18. package/build/user.d.ts +1 -1
  19. package/build/user.js +5 -5
  20. package/build/user.js.map +1 -1
  21. package/build/utils.js.map +1 -1
  22. package/build/v1/profile.js.map +1 -1
  23. package/build/v1/search.js +3 -3
  24. package/build/v1/search.js.map +1 -1
  25. package/build/v1/token.d.ts +1 -1
  26. package/build/v1/token.js +6 -12
  27. package/build/v1/token.js.map +1 -1
  28. package/build/whoami.js.map +1 -1
  29. package/package.json +17 -19
  30. package/src/dist-tags.ts +7 -6
  31. package/src/index.ts +12 -11
  32. package/src/package.ts +38 -57
  33. package/src/ping.ts +2 -1
  34. package/src/publish.ts +10 -10
  35. package/src/star.ts +4 -3
  36. package/src/stars.ts +4 -4
  37. package/src/user.ts +8 -8
  38. package/src/utils.ts +2 -1
  39. package/src/v1/profile.ts +4 -3
  40. package/src/v1/search.ts +3 -2
  41. package/src/v1/token.ts +8 -7
  42. package/src/whoami.ts +3 -2
  43. package/test/integration/_helper.ts +7 -6
  44. package/test/integration/package.spec.ts +3 -2
  45. package/test/integration/ping.spec.ts +2 -1
  46. package/test/integration/publish.spec.ts +5 -3
  47. package/test/integration/user.spec.ts +4 -4
  48. package/test/unit/publish.spec.ts +4 -3
  49. package/test/unit/validate.api.params.middleware.spec.ts +1 -1
  50. package/types/custom.d.ts +2 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,96 @@
1
1
  # @verdaccio/api
2
2
 
3
+ ## 6.0.0-6-next.20
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [730b5d8c]
8
+ - @verdaccio/logger@6.0.0-6-next.9
9
+ - @verdaccio/auth@6.0.0-6-next.17
10
+ - @verdaccio/hooks@6.0.0-6-next.11
11
+ - @verdaccio/middleware@6.0.0-6-next.17
12
+ - @verdaccio/store@6.0.0-6-next.18
13
+
14
+ ## 6.0.0-6-next.19
15
+
16
+ ### Major Changes
17
+
18
+ - a828271d: refactor: download manifest endpoint and integrate fastify
19
+
20
+ Much simpler API for fetching a package
21
+
22
+ ```
23
+ const manifest = await storage.getPackageNext({
24
+ name,
25
+ uplinksLook: true,
26
+ req,
27
+ version: queryVersion,
28
+ requestOptions,
29
+ });
30
+ ```
31
+
32
+ > not perfect, the `req` still is being passed to the proxy (this has to be refactored at proxy package) and then removed from here, in proxy we pass the request instance to the `request` library.
33
+
34
+ ### Details
35
+
36
+ - `async/await` sugar for getPackage()
37
+ - Improve and reuse code between current implementation and new fastify endpoint (add scaffolding for request manifest)
38
+ - Improve performance
39
+ - Add new tests
40
+
41
+ ### Breaking changes
42
+
43
+ All storage plugins will stop to work since the storage uses `getPackageNext` method which is Promise based, I won't replace this now because will force me to update all plugins, I'll follow up in another PR. Currently will throw http 500
44
+
45
+ ### Minor Changes
46
+
47
+ - 24b9be02: refactor: improve docker image build with strict dependencies and prod build
48
+ - b13a3fef: refactor: improve versions and dist-tag filters
49
+
50
+ ### Patch Changes
51
+
52
+ - Updated dependencies [a828271d]
53
+ - Updated dependencies [24b9be02]
54
+ - Updated dependencies [e75c0a3b]
55
+ - Updated dependencies [b13a3fef]
56
+ - @verdaccio/store@6.0.0-6-next.17
57
+ - @verdaccio/utils@6.0.0-6-next.10
58
+ - @verdaccio/core@6.0.0-6-next.4
59
+ - @verdaccio/middleware@6.0.0-6-next.16
60
+ - @verdaccio/logger@6.0.0-6-next.8
61
+ - @verdaccio/auth@6.0.0-6-next.16
62
+ - @verdaccio/config@6.0.0-6-next.12
63
+ - @verdaccio/hooks@6.0.0-6-next.10
64
+
65
+ ## 6.0.0-6-next.18
66
+
67
+ ### Patch Changes
68
+
69
+ - Updated dependencies [f86c31ed]
70
+ - Updated dependencies [20c9e43e]
71
+ - @verdaccio/store@6.0.0-6-next.16
72
+ - @verdaccio/utils@6.0.0-6-next.9
73
+ - @verdaccio/auth@6.0.0-6-next.15
74
+ - @verdaccio/config@6.0.0-6-next.11
75
+ - @verdaccio/tarball@11.0.0-6-next.10
76
+ - @verdaccio/middleware@6.0.0-6-next.15
77
+ - @verdaccio/hooks@6.0.0-6-next.9
78
+
79
+ ## 6.0.0-6-next.17
80
+
81
+ ### Patch Changes
82
+
83
+ - Updated dependencies [6c1eb021]
84
+ - @verdaccio/core@6.0.0-6-next.3
85
+ - @verdaccio/logger@6.0.0-6-next.7
86
+ - @verdaccio/auth@6.0.0-6-next.14
87
+ - @verdaccio/config@6.0.0-6-next.10
88
+ - @verdaccio/tarball@11.0.0-6-next.9
89
+ - @verdaccio/hooks@6.0.0-6-next.9
90
+ - @verdaccio/middleware@6.0.0-6-next.14
91
+ - @verdaccio/store@6.0.0-6-next.15
92
+ - @verdaccio/utils@6.0.0-6-next.8
93
+
3
94
  ## 6.0.0-6-next.16
4
95
 
5
96
  ### Major Changes
@@ -1,4 +1,4 @@
1
1
  import { Router } from 'express';
2
- import { Storage } from '@verdaccio/store';
3
2
  import { IAuth } from '@verdaccio/auth';
3
+ import { Storage } from '@verdaccio/store';
4
4
  export default function (route: Router, auth: IAuth, storage: Storage): void;
@@ -5,14 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = _default;
7
7
 
8
- var _mime = _interopRequireDefault(require("mime"));
9
-
10
8
  var _lodash = _interopRequireDefault(require("lodash"));
11
9
 
12
- var _middleware = require("@verdaccio/middleware");
10
+ var _mime = _interopRequireDefault(require("mime"));
13
11
 
14
12
  var _core = require("@verdaccio/core");
15
13
 
14
+ var _middleware = require("@verdaccio/middleware");
15
+
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
 
18
18
  function _default(route, auth, storage) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/dist-tags.ts"],"names":["route","auth","storage","can","tag_package_version","req","res","next","_","isString","body","tags","params","tag","mergeTags","package","err","status","constants","HTTP_STATUS","CREATED","ok","API_MESSAGE","TAG_ADDED","put","mime","getType","post","delete","TAG_REMOVED","get","getPackage","name","uplinksLook","callback","info","DIST_TAGS","TAG_UPDATED"],"mappings":"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","sourcesContent":["import mime from 'mime';\nimport _ from 'lodash';\nimport { Router } from 'express';\n\nimport { media, allow } from '@verdaccio/middleware';\nimport { constants, VerdaccioError } from '@verdaccio/core';\nimport { Package } from '@verdaccio/types';\nimport { Storage } from '@verdaccio/store';\nimport { IAuth } from '@verdaccio/auth';\nimport { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/custom';\n\nexport default function (route: Router, auth: IAuth, storage: Storage): void {\n const can = allow(auth);\n const tag_package_version = function (\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ): $NextFunctionVer {\n if (_.isString(req.body) === false) {\n return next('route');\n }\n\n const tags = {};\n tags[req.params.tag] = req.body;\n storage.mergeTags(req.params.package, tags, function (err: Error): $NextFunctionVer {\n if (err) {\n return next(err);\n }\n res.status(constants.HTTP_STATUS.CREATED);\n return next({ ok: constants.API_MESSAGE.TAG_ADDED });\n });\n };\n\n // tagging a package.\n route.put('/:package/:tag', can('publish'), media(mime.getType('json')), tag_package_version);\n\n route.post(\n '/-/package/:package/dist-tags/:tag',\n can('publish'),\n media(mime.getType('json')),\n tag_package_version\n );\n\n route.put(\n '/-/package/:package/dist-tags/:tag',\n can('publish'),\n media(mime.getType('json')),\n tag_package_version\n );\n\n route.delete(\n '/-/package/:package/dist-tags/:tag',\n can('publish'),\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const tags = {};\n tags[req.params.tag] = null;\n storage.mergeTags(req.params.package, tags, function (err: VerdaccioError): $NextFunctionVer {\n if (err) {\n return next(err);\n }\n res.status(constants.HTTP_STATUS.CREATED);\n return next({\n ok: constants.API_MESSAGE.TAG_REMOVED,\n });\n });\n }\n );\n\n route.get(\n '/-/package/:package/dist-tags',\n can('access'),\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n storage.getPackage({\n name: req.params.package,\n uplinksLook: true,\n req,\n callback: function (err: VerdaccioError, info: Package): $NextFunctionVer {\n if (err) {\n return next(err);\n }\n\n next(info[constants.DIST_TAGS]);\n },\n });\n }\n );\n\n route.post(\n '/-/package/:package/dist-tags',\n can('publish'),\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n storage.mergeTags(\n req.params.package,\n req.body,\n function (err: VerdaccioError): $NextFunctionVer {\n if (err) {\n return next(err);\n }\n res.status(constants.HTTP_STATUS.CREATED);\n return next({\n ok: constants.API_MESSAGE.TAG_UPDATED,\n });\n }\n );\n }\n );\n}\n"],"file":"dist-tags.js"}
1
+ {"version":3,"sources":["../src/dist-tags.ts"],"names":["route","auth","storage","can","tag_package_version","req","res","next","_","isString","body","tags","params","tag","mergeTags","package","err","status","constants","HTTP_STATUS","CREATED","ok","API_MESSAGE","TAG_ADDED","put","mime","getType","post","delete","TAG_REMOVED","get","getPackage","name","uplinksLook","callback","info","DIST_TAGS","TAG_UPDATED"],"mappings":"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","sourcesContent":["import { Router } from 'express';\nimport _ from 'lodash';\nimport mime from 'mime';\n\nimport { IAuth } from '@verdaccio/auth';\nimport { VerdaccioError, constants } from '@verdaccio/core';\nimport { allow, media } from '@verdaccio/middleware';\nimport { Storage } from '@verdaccio/store';\nimport { Package } from '@verdaccio/types';\n\nimport { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/custom';\n\nexport default function (route: Router, auth: IAuth, storage: Storage): void {\n const can = allow(auth);\n const tag_package_version = function (\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ): $NextFunctionVer {\n if (_.isString(req.body) === false) {\n return next('route');\n }\n\n const tags = {};\n tags[req.params.tag] = req.body;\n storage.mergeTags(req.params.package, tags, function (err: Error): $NextFunctionVer {\n if (err) {\n return next(err);\n }\n res.status(constants.HTTP_STATUS.CREATED);\n return next({ ok: constants.API_MESSAGE.TAG_ADDED });\n });\n };\n\n // tagging a package.\n route.put('/:package/:tag', can('publish'), media(mime.getType('json')), tag_package_version);\n\n route.post(\n '/-/package/:package/dist-tags/:tag',\n can('publish'),\n media(mime.getType('json')),\n tag_package_version\n );\n\n route.put(\n '/-/package/:package/dist-tags/:tag',\n can('publish'),\n media(mime.getType('json')),\n tag_package_version\n );\n\n route.delete(\n '/-/package/:package/dist-tags/:tag',\n can('publish'),\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const tags = {};\n tags[req.params.tag] = null;\n storage.mergeTags(req.params.package, tags, function (err: VerdaccioError): $NextFunctionVer {\n if (err) {\n return next(err);\n }\n res.status(constants.HTTP_STATUS.CREATED);\n return next({\n ok: constants.API_MESSAGE.TAG_REMOVED,\n });\n });\n }\n );\n\n route.get(\n '/-/package/:package/dist-tags',\n can('access'),\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n storage.getPackage({\n name: req.params.package,\n uplinksLook: true,\n req,\n callback: function (err: VerdaccioError, info: Package): $NextFunctionVer {\n if (err) {\n return next(err);\n }\n\n next(info[constants.DIST_TAGS]);\n },\n });\n }\n );\n\n route.post(\n '/-/package/:package/dist-tags',\n can('publish'),\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n storage.mergeTags(\n req.params.package,\n req.body,\n function (err: VerdaccioError): $NextFunctionVer {\n if (err) {\n return next(err);\n }\n res.status(constants.HTTP_STATUS.CREATED);\n return next({\n ok: constants.API_MESSAGE.TAG_UPDATED,\n });\n }\n );\n }\n );\n}\n"],"file":"dist-tags.js"}
package/build/index.js CHANGED
@@ -5,35 +5,35 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = _default;
7
7
 
8
- var _express = _interopRequireDefault(require("express"));
9
-
10
- var _middleware = require("@verdaccio/middleware");
11
-
12
8
  var _bodyParser = _interopRequireDefault(require("body-parser"));
13
9
 
10
+ var _express = _interopRequireDefault(require("express"));
11
+
14
12
  var _semver = _interopRequireDefault(require("semver"));
15
13
 
16
- var _whoami = _interopRequireDefault(require("./whoami"));
14
+ var _middleware = require("@verdaccio/middleware");
17
15
 
18
- var _ping = _interopRequireDefault(require("./ping"));
16
+ var _distTags = _interopRequireDefault(require("./dist-tags"));
19
17
 
20
- var _user = _interopRequireDefault(require("./user"));
18
+ var _package = _interopRequireDefault(require("./package"));
21
19
 
22
- var _distTags = _interopRequireDefault(require("./dist-tags"));
20
+ var _ping = _interopRequireDefault(require("./ping"));
23
21
 
24
22
  var _publish = _interopRequireDefault(require("./publish"));
25
23
 
26
24
  var _search = _interopRequireDefault(require("./search"));
27
25
 
28
- var _package = _interopRequireDefault(require("./package"));
29
-
30
26
  var _stars = _interopRequireDefault(require("./stars"));
31
27
 
28
+ var _user = _interopRequireDefault(require("./user"));
29
+
32
30
  var _profile = _interopRequireDefault(require("./v1/profile"));
33
31
 
32
+ var _search2 = _interopRequireDefault(require("./v1/search"));
33
+
34
34
  var _token = _interopRequireDefault(require("./v1/token"));
35
35
 
36
- var _search2 = _interopRequireDefault(require("./v1/search"));
36
+ var _whoami = _interopRequireDefault(require("./whoami"));
37
37
 
38
38
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
39
39
 
@@ -71,7 +71,7 @@ function _default(config, auth, storage) {
71
71
  app.use(_middleware.encodeScopePackage); // for "npm whoami"
72
72
 
73
73
  (0, _whoami.default)(app);
74
- (0, _package.default)(app, auth, storage, config);
74
+ (0, _package.default)(app, auth, storage);
75
75
  (0, _profile.default)(app, auth); // @deprecated endpoint, 404 by default
76
76
 
77
77
  (0, _search.default)(app);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["semver","lte","process","version","global","AbortController","require","config","auth","storage","app","express","Router","param","validatePackage","validateName","use","apiJWTmiddleware","bodyParser","json","strict","limit","max_body_size","encodeScopePackage"],"mappings":";;;;;;;AAAA;;AACA;;AAUA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,IAAIA,gBAAOC,GAAP,CAAWC,OAAO,CAACC,OAAnB,EAA4B,SAA5B,CAAJ,EAA4C;AAC1CC,EAAAA,MAAM,CAACC,eAAP,GAAyBC,OAAO,CAAC,4CAAD,CAAP,CAAsDD,eAA/E;AACD;;AAEc,kBAAUE,MAAV,EAA0BC,IAA1B,EAAuCC,OAAvC,EAAiE;AAC9E;AACA,QAAMC,GAAG,GAAGC,iBAAQC,MAAR,EAAZ;AACA;AAEA;AACA;;;AACAF,EAAAA,GAAG,CAACG,KAAJ,CAAU,SAAV,EAAqBC,2BAArB;AACAJ,EAAAA,GAAG,CAACG,KAAJ,CAAU,UAAV,EAAsBE,wBAAtB;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,KAAV,EAAiBE,wBAAjB;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,SAAV,EAAqBE,wBAArB;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,UAAV,EAAsBE,wBAAtB;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,OAAV,EAAmBE,wBAAnB,EAZ8E,CAc9E;AACA;;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,MAAV,EAAkB,uBAAM,QAAN,CAAlB;AACAH,EAAAA,GAAG,CAACG,KAAJ,CAAU,kBAAV,EAA8B,uBAAM,sBAAN,CAA9B;AACAH,EAAAA,GAAG,CAACG,KAAJ,CAAU,UAAV,EAAsB,uBAAM,IAAN,CAAtB;AACAH,EAAAA,GAAG,CAACM,GAAJ,CAAQR,IAAI,CAACS,gBAAL,EAAR;AACAP,EAAAA,GAAG,CAACM,GAAJ,CAAQE,oBAAWC,IAAX,CAAgB;AAAEC,IAAAA,MAAM,EAAE,KAAV;AAAiBC,IAAAA,KAAK,EAAEd,MAAM,CAACe,aAAP,IAAwB;AAAhD,GAAhB,CAAR,EApB8E,CAqB9E;;AACAZ,EAAAA,GAAG,CAACM,GAAJ,CAAQ,0BAAST,MAAT,CAAR,EAtB8E,CAuB9E;;AACAG,EAAAA,GAAG,CAACM,GAAJ,CAAQO,8BAAR,EAxB8E,CAyB9E;;AACA,uBAAOb,GAAP;AACA,wBAAIA,GAAJ,EAASF,IAAT,EAAeC,OAAf,EAAwBF,MAAxB;AACA,wBAAQG,GAAR,EAAaF,IAAb,EA5B8E,CA6B9E;;AACA,uBAAOE,GAAP;AACA,qBAAKA,GAAL,EAAUF,IAAV,EAAgBD,MAAhB;AACA,yBAASG,GAAT,EAAcF,IAAd,EAAoBC,OAApB;AACA,wBAAQC,GAAR,EAAaF,IAAb,EAAmBC,OAAnB,EAA4BF,MAA5B;AACA,qBAAKG,GAAL;AACA,sBAAMA,GAAN,EAAWD,OAAX,EAnC8E,CAoC9E;;AACA,wBAASC,GAAT,EAAcF,IAAd,EAAoBC,OAApB;AACA,sBAAMC,GAAN,EAAWF,IAAX,EAAiBC,OAAjB,EAA0BF,MAA1B;AACA,SAAOG,GAAP;AACD","sourcesContent":["import express, { Router } from 'express';\nimport {\n match,\n validateName,\n validatePackage,\n encodeScopePackage,\n antiLoop,\n} from '@verdaccio/middleware';\nimport { IAuth } from '@verdaccio/auth';\nimport { Storage } from '@verdaccio/store';\nimport { Config } from '@verdaccio/types';\nimport bodyParser from 'body-parser';\nimport semver from 'semver';\n\nimport whoami from './whoami';\nimport ping from './ping';\nimport user from './user';\nimport distTags from './dist-tags';\nimport publish from './publish';\nimport search from './search';\nimport pkg from './package';\nimport stars from './stars';\nimport profile from './v1/profile';\nimport token from './v1/token';\nimport v1Search from './v1/search';\n\nif (semver.lte(process.version, 'v15.0.0')) {\n global.AbortController = require('abortcontroller-polyfill/dist/cjs-ponyfill').AbortController;\n}\n\nexport default function (config: Config, auth: IAuth, storage: Storage): Router {\n /* eslint new-cap:off */\n const app = express.Router();\n /* eslint new-cap:off */\n\n // validate all of these params as a package name\n // this might be too harsh, so ask if it causes trouble\n app.param('package', validatePackage);\n app.param('filename', validateName);\n app.param('tag', validateName);\n app.param('version', validateName);\n app.param('revision', validateName);\n app.param('token', validateName);\n\n // these can't be safely put into express url for some reason\n // TODO: For some reason? what reason?\n app.param('_rev', match(/^-rev$/));\n app.param('org_couchdb_user', match(/^org\\.couchdb\\.user:/));\n app.param('anything', match(/.*/));\n app.use(auth.apiJWTmiddleware());\n app.use(bodyParser.json({ strict: false, limit: config.max_body_size || '10mb' }));\n // @ts-ignore\n app.use(antiLoop(config));\n // encode / in a scoped package name to be matched as a single parameter in routes\n app.use(encodeScopePackage);\n // for \"npm whoami\"\n whoami(app);\n pkg(app, auth, storage, config);\n profile(app, auth);\n // @deprecated endpoint, 404 by default\n search(app);\n user(app, auth, config);\n distTags(app, auth, storage);\n publish(app, auth, storage, config);\n ping(app);\n stars(app, storage);\n // @ts-ignore\n v1Search(app, auth, storage);\n token(app, auth, storage, config);\n return app;\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["semver","lte","process","version","global","AbortController","require","config","auth","storage","app","express","Router","param","validatePackage","validateName","use","apiJWTmiddleware","bodyParser","json","strict","limit","max_body_size","encodeScopePackage"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAGA;;AAUA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,IAAIA,gBAAOC,GAAP,CAAWC,OAAO,CAACC,OAAnB,EAA4B,SAA5B,CAAJ,EAA4C;AAC1CC,EAAAA,MAAM,CAACC,eAAP,GAAyBC,OAAO,CAAC,4CAAD,CAAP,CAAsDD,eAA/E;AACD;;AAEc,kBAAUE,MAAV,EAA0BC,IAA1B,EAAuCC,OAAvC,EAAiE;AAC9E;AACA,QAAMC,GAAG,GAAGC,iBAAQC,MAAR,EAAZ;AACA;AAEA;AACA;;;AACAF,EAAAA,GAAG,CAACG,KAAJ,CAAU,SAAV,EAAqBC,2BAArB;AACAJ,EAAAA,GAAG,CAACG,KAAJ,CAAU,UAAV,EAAsBE,wBAAtB;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,KAAV,EAAiBE,wBAAjB;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,SAAV,EAAqBE,wBAArB;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,UAAV,EAAsBE,wBAAtB;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,OAAV,EAAmBE,wBAAnB,EAZ8E,CAc9E;AACA;;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,MAAV,EAAkB,uBAAM,QAAN,CAAlB;AACAH,EAAAA,GAAG,CAACG,KAAJ,CAAU,kBAAV,EAA8B,uBAAM,sBAAN,CAA9B;AACAH,EAAAA,GAAG,CAACG,KAAJ,CAAU,UAAV,EAAsB,uBAAM,IAAN,CAAtB;AACAH,EAAAA,GAAG,CAACM,GAAJ,CAAQR,IAAI,CAACS,gBAAL,EAAR;AACAP,EAAAA,GAAG,CAACM,GAAJ,CAAQE,oBAAWC,IAAX,CAAgB;AAAEC,IAAAA,MAAM,EAAE,KAAV;AAAiBC,IAAAA,KAAK,EAAEd,MAAM,CAACe,aAAP,IAAwB;AAAhD,GAAhB,CAAR,EApB8E,CAqB9E;;AACAZ,EAAAA,GAAG,CAACM,GAAJ,CAAQ,0BAAST,MAAT,CAAR,EAtB8E,CAuB9E;;AACAG,EAAAA,GAAG,CAACM,GAAJ,CAAQO,8BAAR,EAxB8E,CAyB9E;;AACA,uBAAOb,GAAP;AACA,wBAAIA,GAAJ,EAASF,IAAT,EAAeC,OAAf;AACA,wBAAQC,GAAR,EAAaF,IAAb,EA5B8E,CA6B9E;;AACA,uBAAOE,GAAP;AACA,qBAAKA,GAAL,EAAUF,IAAV,EAAgBD,MAAhB;AACA,yBAASG,GAAT,EAAcF,IAAd,EAAoBC,OAApB;AACA,wBAAQC,GAAR,EAAaF,IAAb,EAAmBC,OAAnB,EAA4BF,MAA5B;AACA,qBAAKG,GAAL;AACA,sBAAMA,GAAN,EAAWD,OAAX,EAnC8E,CAoC9E;;AACA,wBAASC,GAAT,EAAcF,IAAd,EAAoBC,OAApB;AACA,sBAAMC,GAAN,EAAWF,IAAX,EAAiBC,OAAjB,EAA0BF,MAA1B;AACA,SAAOG,GAAP;AACD","sourcesContent":["import bodyParser from 'body-parser';\nimport express, { Router } from 'express';\nimport semver from 'semver';\n\nimport { IAuth } from '@verdaccio/auth';\nimport {\n antiLoop,\n encodeScopePackage,\n match,\n validateName,\n validatePackage,\n} from '@verdaccio/middleware';\nimport { Storage } from '@verdaccio/store';\nimport { Config } from '@verdaccio/types';\n\nimport distTags from './dist-tags';\nimport pkg from './package';\nimport ping from './ping';\nimport publish from './publish';\nimport search from './search';\nimport stars from './stars';\nimport user from './user';\nimport profile from './v1/profile';\nimport v1Search from './v1/search';\nimport token from './v1/token';\nimport whoami from './whoami';\n\nif (semver.lte(process.version, 'v15.0.0')) {\n global.AbortController = require('abortcontroller-polyfill/dist/cjs-ponyfill').AbortController;\n}\n\nexport default function (config: Config, auth: IAuth, storage: Storage): Router {\n /* eslint new-cap:off */\n const app = express.Router();\n /* eslint new-cap:off */\n\n // validate all of these params as a package name\n // this might be too harsh, so ask if it causes trouble\n app.param('package', validatePackage);\n app.param('filename', validateName);\n app.param('tag', validateName);\n app.param('version', validateName);\n app.param('revision', validateName);\n app.param('token', validateName);\n\n // these can't be safely put into express url for some reason\n // TODO: For some reason? what reason?\n app.param('_rev', match(/^-rev$/));\n app.param('org_couchdb_user', match(/^org\\.couchdb\\.user:/));\n app.param('anything', match(/.*/));\n app.use(auth.apiJWTmiddleware());\n app.use(bodyParser.json({ strict: false, limit: config.max_body_size || '10mb' }));\n // @ts-ignore\n app.use(antiLoop(config));\n // encode / in a scoped package name to be matched as a single parameter in routes\n app.use(encodeScopePackage);\n // for \"npm whoami\"\n whoami(app);\n pkg(app, auth, storage);\n profile(app, auth);\n // @deprecated endpoint, 404 by default\n search(app);\n user(app, auth, config);\n distTags(app, auth, storage);\n publish(app, auth, storage, config);\n ping(app);\n stars(app, storage);\n // @ts-ignore\n v1Search(app, auth, storage);\n token(app, auth, storage, config);\n return app;\n}\n"],"file":"index.js"}
@@ -1,5 +1,4 @@
1
1
  import { Router } from 'express';
2
- import { Config } from '@verdaccio/types';
3
2
  import { IAuth } from '@verdaccio/auth';
4
3
  import { Storage } from '@verdaccio/store';
5
- export default function (route: Router, auth: IAuth, storage: Storage, config: Config): void;
4
+ export default function (route: Router, auth: IAuth, storage: Storage): void;
package/build/package.js CHANGED
@@ -5,23 +5,17 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = _default;
7
7
 
8
- var _lodash = _interopRequireDefault(require("lodash"));
9
-
10
8
  var _debug = _interopRequireDefault(require("debug"));
11
9
 
12
- var _middleware = require("@verdaccio/middleware");
13
-
14
- var _utils = require("@verdaccio/utils");
15
-
16
10
  var _core = require("@verdaccio/core");
17
11
 
18
- var _tarball = require("@verdaccio/tarball");
12
+ var _middleware = require("@verdaccio/middleware");
19
13
 
20
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
15
 
22
16
  const debug = (0, _debug.default)('verdaccio:api:package');
23
17
 
24
- const downloadStream = (packageName, filename, storage, req, res) => {
18
+ const downloadStream = (packageName, filename, storage, _req, res) => {
25
19
  const stream = storage.getTarball(packageName, filename);
26
20
  stream.on('content-length', function (content) {
27
21
  res.header('Content-Length', content);
@@ -33,64 +27,37 @@ const downloadStream = (packageName, filename, storage, req, res) => {
33
27
  stream.pipe(res);
34
28
  };
35
29
 
36
- function _default(route, auth, storage, config) {
37
- const can = (0, _middleware.allow)(auth); // TODO: anonymous user?
38
-
39
- route.get('/:package/:version?', can('access'), function (req, res, next) {
30
+ function _default(route, auth, storage) {
31
+ const can = (0, _middleware.allow)(auth);
32
+ route.get('/:package/:version?', can('access'), async function (req, _res, next) {
40
33
  debug('init package by version');
41
34
  const name = req.params.package;
35
+ let queryVersion = req.params.version;
36
+ const requestOptions = {
37
+ protocol: req.protocol,
38
+ headers: req.headers,
39
+ // FIXME: if we migrate to req.hostname, the port is not longer included.
40
+ host: req.host
41
+ };
42
42
 
43
- const getPackageMetaCallback = function (err, metadata) {
44
- if (err) {
45
- debug('error on fetch metadata for %o with error %o', name, err.message);
46
- return next(err);
47
- }
48
-
49
- debug('convert dist remote to local with prefix %o', config === null || config === void 0 ? void 0 : config.url_prefix);
50
- metadata = (0, _tarball.convertDistRemoteToLocalTarballUrls)(metadata, req, config === null || config === void 0 ? void 0 : config.url_prefix);
51
- let queryVersion = req.params.version;
52
- debug('query by param version: %o', queryVersion);
53
-
54
- if (_lodash.default.isNil(queryVersion)) {
55
- debug('param %o version found', queryVersion);
56
- return next(metadata);
57
- }
58
-
59
- let version = (0, _utils.getVersion)(metadata, queryVersion);
60
- debug('query by latest version %o and result %o', queryVersion, version);
61
-
62
- if (_lodash.default.isNil(version) === false) {
63
- debug('latest version found %o', version);
64
- return next(version);
65
- }
66
-
67
- if (_lodash.default.isNil(metadata[_core.DIST_TAGS]) === false) {
68
- if (_lodash.default.isNil(metadata[_core.DIST_TAGS][queryVersion]) === false) {
69
- queryVersion = metadata[_core.DIST_TAGS][queryVersion];
70
- debug('dist-tag version found %o', queryVersion);
71
- version = (0, _utils.getVersion)(metadata, queryVersion);
72
-
73
- if (_lodash.default.isNil(version) === false) {
74
- debug('dist-tag found %o', version);
75
- return next(version);
76
- }
77
- }
78
- } else {
79
- debug('dist tag not detected');
43
+ try {
44
+ // TODO: this is just temporary while I migrate all plugins to use the new API
45
+ // the method will be renamed to getPackage again but Promise Based.
46
+ if (!storage.getPackageNext) {
47
+ throw _core.errorUtils.getInternalError('getPackageNext not implemented, check pr-2750 for more details');
80
48
  }
81
49
 
82
- debug('package version not found %o', queryVersion);
83
- return next(_core.errorUtils.getNotFound(`${_core.API_ERROR.VERSION_NOT_EXIST}: ${queryVersion}`));
84
- };
85
-
86
- debug('get package name %o', name);
87
- debug('uplinks look up enabled');
88
- storage.getPackage({
89
- name,
90
- uplinksLook: true,
91
- req,
92
- callback: getPackageMetaCallback
93
- });
50
+ const manifest = await storage.getPackageNext({
51
+ name,
52
+ uplinksLook: true,
53
+ req,
54
+ version: queryVersion,
55
+ requestOptions
56
+ });
57
+ next(manifest);
58
+ } catch (err) {
59
+ next(err);
60
+ }
94
61
  });
95
62
  route.get('/:scopedPackage/-/:scope/:filename', can('access'), function (req, res) {
96
63
  const {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/package.ts"],"names":["debug","downloadStream","packageName","filename","storage","req","res","stream","getTarball","on","content","header","err","locals","report_error","HEADERS","CONTENT_TYPE","OCTET_STREAM","pipe","route","auth","config","can","get","next","name","params","package","getPackageMetaCallback","metadata","message","url_prefix","queryVersion","version","_","isNil","DIST_TAGS","errorUtils","getNotFound","API_ERROR","VERSION_NOT_EXIST","getPackage","uplinksLook","callback","scopedPackage"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport { Router } from 'express';\nimport buildDebug from 'debug';\n\nimport { allow } from '@verdaccio/middleware';\nimport { getVersion } from '@verdaccio/utils';\nimport { HEADERS, DIST_TAGS, API_ERROR, errorUtils } from '@verdaccio/core';\nimport { Config, Package } from '@verdaccio/types';\nimport { IAuth } from '@verdaccio/auth';\nimport { Storage } from '@verdaccio/store';\nimport { convertDistRemoteToLocalTarballUrls } from '@verdaccio/tarball';\nimport { $RequestExtend, $ResponseExtend, $NextFunctionVer } from '../types/custom';\n\nconst debug = buildDebug('verdaccio:api:package');\n\nconst downloadStream = (\n packageName: string,\n filename: string,\n storage: any,\n req: $RequestExtend,\n res: $ResponseExtend\n): void => {\n const stream = storage.getTarball(packageName, filename);\n\n stream.on('content-length', function (content): void {\n res.header('Content-Length', content);\n });\n\n stream.on('error', function (err): void {\n return res.locals.report_error(err);\n });\n\n res.header(HEADERS.CONTENT_TYPE, HEADERS.OCTET_STREAM);\n stream.pipe(res);\n};\n\nexport default function (route: Router, auth: IAuth, storage: Storage, config: Config): void {\n const can = allow(auth);\n // TODO: anonymous user?\n route.get(\n '/:package/:version?',\n can('access'),\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n debug('init package by version');\n const name = req.params.package;\n const getPackageMetaCallback = function (err, metadata: Package): void {\n if (err) {\n debug('error on fetch metadata for %o with error %o', name, err.message);\n return next(err);\n }\n debug('convert dist remote to local with prefix %o', config?.url_prefix);\n metadata = convertDistRemoteToLocalTarballUrls(metadata, req, config?.url_prefix);\n\n let queryVersion = req.params.version;\n debug('query by param version: %o', queryVersion);\n if (_.isNil(queryVersion)) {\n debug('param %o version found', queryVersion);\n return next(metadata);\n }\n\n let version = getVersion(metadata, queryVersion);\n debug('query by latest version %o and result %o', queryVersion, version);\n if (_.isNil(version) === false) {\n debug('latest version found %o', version);\n return next(version);\n }\n\n if (_.isNil(metadata[DIST_TAGS]) === false) {\n if (_.isNil(metadata[DIST_TAGS][queryVersion]) === false) {\n queryVersion = metadata[DIST_TAGS][queryVersion];\n debug('dist-tag version found %o', queryVersion);\n version = getVersion(metadata, queryVersion);\n if (_.isNil(version) === false) {\n debug('dist-tag found %o', version);\n return next(version);\n }\n }\n } else {\n debug('dist tag not detected');\n }\n\n debug('package version not found %o', queryVersion);\n return next(errorUtils.getNotFound(`${API_ERROR.VERSION_NOT_EXIST}: ${queryVersion}`));\n };\n\n debug('get package name %o', name);\n debug('uplinks look up enabled');\n storage.getPackage({\n name,\n uplinksLook: true,\n req,\n callback: getPackageMetaCallback,\n });\n }\n );\n\n route.get(\n '/:scopedPackage/-/:scope/:filename',\n can('access'),\n function (req: $RequestExtend, res: $ResponseExtend): void {\n const { scopedPackage, filename } = req.params;\n\n downloadStream(scopedPackage, filename, storage, req, res);\n }\n );\n\n route.get(\n '/:package/-/:filename',\n can('access'),\n function (req: $RequestExtend, res: $ResponseExtend): void {\n downloadStream(req.params.package, req.params.filename, storage, req, res);\n }\n );\n}\n"],"file":"package.js"}
1
+ {"version":3,"sources":["../src/package.ts"],"names":["debug","downloadStream","packageName","filename","storage","_req","res","stream","getTarball","on","content","header","err","locals","report_error","HEADERS","CONTENT_TYPE","OCTET_STREAM","pipe","route","auth","can","get","req","_res","next","name","params","package","queryVersion","version","requestOptions","protocol","headers","host","getPackageNext","errorUtils","getInternalError","manifest","uplinksLook","scopedPackage"],"mappings":";;;;;;;AAAA;;AAIA;;AACA;;;;AAKA,MAAMA,KAAK,GAAG,oBAAW,uBAAX,CAAd;;AAEA,MAAMC,cAAc,GAAG,CACrBC,WADqB,EAErBC,QAFqB,EAGrBC,OAHqB,EAIrBC,IAJqB,EAKrBC,GALqB,KAMZ;AACT,QAAMC,MAAM,GAAGH,OAAO,CAACI,UAAR,CAAmBN,WAAnB,EAAgCC,QAAhC,CAAf;AAEAI,EAAAA,MAAM,CAACE,EAAP,CAAU,gBAAV,EAA4B,UAAUC,OAAV,EAAyB;AACnDJ,IAAAA,GAAG,CAACK,MAAJ,CAAW,gBAAX,EAA6BD,OAA7B;AACD,GAFD;AAIAH,EAAAA,MAAM,CAACE,EAAP,CAAU,OAAV,EAAmB,UAAUG,GAAV,EAAqB;AACtC,WAAON,GAAG,CAACO,MAAJ,CAAWC,YAAX,CAAwBF,GAAxB,CAAP;AACD,GAFD;AAIAN,EAAAA,GAAG,CAACK,MAAJ,CAAWI,cAAQC,YAAnB,EAAiCD,cAAQE,YAAzC;AACAV,EAAAA,MAAM,CAACW,IAAP,CAAYZ,GAAZ;AACD,CAnBD;;AAqBe,kBAAUa,KAAV,EAAyBC,IAAzB,EAAsChB,OAAtC,EAA8D;AAC3E,QAAMiB,GAAG,GAAG,uBAAMD,IAAN,CAAZ;AAEAD,EAAAA,KAAK,CAACG,GAAN,CACE,qBADF,EAEED,GAAG,CAAC,QAAD,CAFL,EAGE,gBACEE,GADF,EAEEC,IAFF,EAGEC,IAHF,EAIiB;AACfzB,IAAAA,KAAK,CAAC,yBAAD,CAAL;AACA,UAAM0B,IAAI,GAAGH,GAAG,CAACI,MAAJ,CAAWC,OAAxB;AACA,QAAIC,YAAY,GAAGN,GAAG,CAACI,MAAJ,CAAWG,OAA9B;AACA,UAAMC,cAAc,GAAG;AACrBC,MAAAA,QAAQ,EAAET,GAAG,CAACS,QADO;AAErBC,MAAAA,OAAO,EAAEV,GAAG,CAACU,OAFQ;AAGrB;AACAC,MAAAA,IAAI,EAAEX,GAAG,CAACW;AAJW,KAAvB;;AAOA,QAAI;AACF;AACA;AACA,UAAI,CAAC9B,OAAO,CAAC+B,cAAb,EAA6B;AAC3B,cAAMC,iBAAWC,gBAAX,CACJ,gEADI,CAAN;AAGD;;AAED,YAAMC,QAAQ,GAAG,MAAMlC,OAAO,CAAC+B,cAAR,CAAuB;AAC5CT,QAAAA,IAD4C;AAE5Ca,QAAAA,WAAW,EAAE,IAF+B;AAG5ChB,QAAAA,GAH4C;AAI5CO,QAAAA,OAAO,EAAED,YAJmC;AAK5CE,QAAAA;AAL4C,OAAvB,CAAvB;AAOAN,MAAAA,IAAI,CAACa,QAAD,CAAJ;AACD,KAjBD,CAiBE,OAAO1B,GAAP,EAAY;AACZa,MAAAA,IAAI,CAACb,GAAD,CAAJ;AACD;AACF,GAtCH;AAyCAO,EAAAA,KAAK,CAACG,GAAN,CACE,oCADF,EAEED,GAAG,CAAC,QAAD,CAFL,EAGE,UAAUE,GAAV,EAA+BjB,GAA/B,EAA2D;AACzD,UAAM;AAAEkC,MAAAA,aAAF;AAAiBrC,MAAAA;AAAjB,QAA8BoB,GAAG,CAACI,MAAxC;AAEA1B,IAAAA,cAAc,CAACuC,aAAD,EAAgBrC,QAAhB,EAA0BC,OAA1B,EAAmCmB,GAAnC,EAAwCjB,GAAxC,CAAd;AACD,GAPH;AAUAa,EAAAA,KAAK,CAACG,GAAN,CACE,uBADF,EAEED,GAAG,CAAC,QAAD,CAFL,EAGE,UAAUE,GAAV,EAA+BjB,GAA/B,EAA2D;AACzDL,IAAAA,cAAc,CAACsB,GAAG,CAACI,MAAJ,CAAWC,OAAZ,EAAqBL,GAAG,CAACI,MAAJ,CAAWxB,QAAhC,EAA0CC,OAA1C,EAAmDmB,GAAnD,EAAwDjB,GAAxD,CAAd;AACD,GALH;AAOD","sourcesContent":["import buildDebug from 'debug';\nimport { Router } from 'express';\n\nimport { IAuth } from '@verdaccio/auth';\nimport { HEADERS, errorUtils } from '@verdaccio/core';\nimport { allow } from '@verdaccio/middleware';\nimport { Storage } from '@verdaccio/store';\n\nimport { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/custom';\n\nconst debug = buildDebug('verdaccio:api:package');\n\nconst downloadStream = (\n packageName: string,\n filename: string,\n storage: any,\n _req: $RequestExtend,\n res: $ResponseExtend\n): void => {\n const stream = storage.getTarball(packageName, filename);\n\n stream.on('content-length', function (content): void {\n res.header('Content-Length', content);\n });\n\n stream.on('error', function (err): void {\n return res.locals.report_error(err);\n });\n\n res.header(HEADERS.CONTENT_TYPE, HEADERS.OCTET_STREAM);\n stream.pipe(res);\n};\n\nexport default function (route: Router, auth: IAuth, storage: Storage): void {\n const can = allow(auth);\n\n route.get(\n '/:package/:version?',\n can('access'),\n async function (\n req: $RequestExtend,\n _res: $ResponseExtend,\n next: $NextFunctionVer\n ): Promise<void> {\n debug('init package by version');\n const name = req.params.package;\n let queryVersion = req.params.version;\n const requestOptions = {\n protocol: req.protocol,\n headers: req.headers as any,\n // FIXME: if we migrate to req.hostname, the port is not longer included.\n host: req.host,\n };\n\n try {\n // TODO: this is just temporary while I migrate all plugins to use the new API\n // the method will be renamed to getPackage again but Promise Based.\n if (!storage.getPackageNext) {\n throw errorUtils.getInternalError(\n 'getPackageNext not implemented, check pr-2750 for more details'\n );\n }\n\n const manifest = await storage.getPackageNext({\n name,\n uplinksLook: true,\n req,\n version: queryVersion,\n requestOptions,\n });\n next(manifest);\n } catch (err) {\n next(err);\n }\n }\n );\n\n route.get(\n '/:scopedPackage/-/:scope/:filename',\n can('access'),\n function (req: $RequestExtend, res: $ResponseExtend): void {\n const { scopedPackage, filename } = req.params;\n\n downloadStream(scopedPackage, filename, storage, req, res);\n }\n );\n\n route.get(\n '/:package/-/:filename',\n can('access'),\n function (req: $RequestExtend, res: $ResponseExtend): void {\n downloadStream(req.params.package, req.params.filename, storage, req, res);\n }\n );\n}\n"],"file":"package.js"}
package/build/ping.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ping.ts"],"names":["route","get","req","res","next"],"mappings":";;;;;;;AAGe,kBAAUA,KAAV,EAA+B;AAC5CA,EAAAA,KAAK,CAACC,GAAN,CACE,SADF,EAEE,UAAUC,GAAV,EAA+BC,GAA/B,EAAqDC,IAArD,EAA6E;AAC3EA,IAAAA,IAAI,CAAC,EAAD,CAAJ;AACD,GAJH;AAMD","sourcesContent":["import { Router } from 'express';\nimport { $RequestExtend, $ResponseExtend, $NextFunctionVer } from '../types/custom';\n\nexport default function (route: Router): void {\n route.get(\n '/-/ping',\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) {\n next({});\n }\n );\n}\n"],"file":"ping.js"}
1
+ {"version":3,"sources":["../src/ping.ts"],"names":["route","get","req","res","next"],"mappings":";;;;;;;AAIe,kBAAUA,KAAV,EAA+B;AAC5CA,EAAAA,KAAK,CAACC,GAAN,CACE,SADF,EAEE,UAAUC,GAAV,EAA+BC,GAA/B,EAAqDC,IAArD,EAA6E;AAC3EA,IAAAA,IAAI,CAAC,EAAD,CAAJ;AACD,GAJH;AAMD","sourcesContent":["import { Router } from 'express';\n\nimport { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/custom';\n\nexport default function (route: Router): void {\n route.get(\n '/-/ping',\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) {\n next({});\n }\n );\n}\n"],"file":"ping.js"}
@@ -1,8 +1,8 @@
1
1
  import { Router } from 'express';
2
- import { Config } from '@verdaccio/types';
3
2
  import { IAuth } from '@verdaccio/auth';
4
3
  import { Storage } from '@verdaccio/store';
5
- import { $RequestExtend, $ResponseExtend, $NextFunctionVer } from '../types/custom';
4
+ import { Config } from '@verdaccio/types';
5
+ import { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/custom';
6
6
  export default function publish(router: Router, auth: IAuth, storage: Storage, config: Config): void;
7
7
  /**
8
8
  * Publish a package
package/build/publish.js CHANGED
@@ -3,43 +3,37 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.addVersion = addVersion;
6
7
  exports.default = publish;
7
8
  exports.publishPackage = publishPackage;
8
- exports.unPublishPackage = unPublishPackage;
9
9
  exports.removeTarball = removeTarball;
10
- exports.addVersion = addVersion;
10
+ exports.unPublishPackage = unPublishPackage;
11
11
  exports.uploadPackageTarball = uploadPackageTarball;
12
12
 
13
- var _path = _interopRequireDefault(require("path"));
13
+ var _debug = _interopRequireDefault(require("debug"));
14
14
 
15
15
  var _lodash = _interopRequireDefault(require("lodash"));
16
16
 
17
17
  var _mime = _interopRequireDefault(require("mime"));
18
18
 
19
- var _debug = _interopRequireDefault(require("debug"));
19
+ var _path = _interopRequireDefault(require("path"));
20
20
 
21
21
  var _core = require("@verdaccio/core");
22
22
 
23
- var _utils = require("@verdaccio/utils");
24
-
25
- var _middleware = require("@verdaccio/middleware");
26
-
27
23
  var _hooks = require("@verdaccio/hooks");
28
24
 
29
25
  var _logger = require("@verdaccio/logger");
30
26
 
27
+ var _middleware = require("@verdaccio/middleware");
28
+
29
+ var _utils = require("@verdaccio/utils");
30
+
31
31
  var _star = _interopRequireDefault(require("./star"));
32
32
 
33
33
  var _utils2 = require("./utils");
34
34
 
35
35
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
36
36
 
37
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
38
-
39
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
40
-
41
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
42
-
43
37
  const debug = (0, _debug.default)('verdaccio:api:publish');
44
38
 
45
39
  function publish(router, auth, storage, config) {
@@ -176,8 +170,8 @@ function publishPackage(storage, config, auth) {
176
170
  };
177
171
 
178
172
  const afterChange = function (error, okMessage, metadata) {
179
- const metadataCopy = _objectSpread({}, metadata);
180
-
173
+ const metadataCopy = { ...metadata
174
+ };
181
175
  debug('after change metadata %o', metadata);
182
176
  const {
183
177
  _attachments,