verdaccio 7.0.0-beta.2 → 7.0.0-beta.4

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 (136) hide show
  1. package/README.md +1 -3
  2. package/bin/verdaccio +1 -1
  3. package/build/cjs/api/debug/index.js +28 -0
  4. package/build/cjs/api/endpoint/api/dist-tags.js +77 -0
  5. package/build/cjs/api/endpoint/api/package.js +103 -0
  6. package/build/cjs/api/endpoint/api/ping.js +13 -0
  7. package/build/cjs/api/endpoint/api/publish.js +359 -0
  8. package/build/cjs/api/endpoint/api/search.js +107 -0
  9. package/build/cjs/api/endpoint/api/star.js +73 -0
  10. package/build/cjs/api/endpoint/api/stars.js +42 -0
  11. package/build/cjs/api/endpoint/api/user.js +84 -0
  12. package/build/cjs/api/endpoint/api/v1/profile.js +69 -0
  13. package/build/cjs/api/endpoint/api/v1/search.js +181 -0
  14. package/build/cjs/api/endpoint/api/v1/token.js +140 -0
  15. package/build/cjs/api/endpoint/api/whoami.js +15 -0
  16. package/build/cjs/api/endpoint/index.js +58 -0
  17. package/build/cjs/api/index.js +105 -0
  18. package/build/cjs/api/middleware.js +56 -0
  19. package/build/cjs/api/web/api/index.js +31 -0
  20. package/build/cjs/api/web/api/package.js +165 -0
  21. package/build/cjs/api/web/api/search.js +53 -0
  22. package/build/cjs/api/web/api/user.js +70 -0
  23. package/build/cjs/api/web/api/utils.js +14 -0
  24. package/build/cjs/api/web/index.js +96 -0
  25. package/build/{index.js → cjs/index.js} +1 -1
  26. package/build/cjs/lib/auth-utils.js +16 -0
  27. package/build/{lib → cjs/lib}/auth.js +1 -1
  28. package/build/cjs/lib/bootstrap.js +167 -0
  29. package/build/cjs/lib/cli/cli.js +26 -0
  30. package/build/cjs/lib/cli/commands/info.js +26 -0
  31. package/build/cjs/lib/cli/commands/init.js +78 -0
  32. package/build/cjs/lib/cli/commands/version.js +17 -0
  33. package/build/{lib → cjs/lib}/cli/utils.js +1 -1
  34. package/build/cjs/lib/cli.js +16 -0
  35. package/build/cjs/lib/config.js +22 -0
  36. package/build/{lib → cjs/lib}/constants.js +1 -1
  37. package/build/cjs/lib/experiments.js +29 -0
  38. package/build/cjs/lib/local-storage.js +740 -0
  39. package/build/cjs/lib/logger/index.js +21 -0
  40. package/build/cjs/lib/metadata-utils.js +39 -0
  41. package/build/cjs/lib/run-server.js +122 -0
  42. package/build/cjs/lib/storage-utils.js +282 -0
  43. package/build/cjs/lib/storage.js +615 -0
  44. package/build/cjs/lib/up-storage.js +605 -0
  45. package/build/cjs/lib/uplink-util.js +36 -0
  46. package/build/cjs/lib/utils.js +265 -0
  47. package/build/cjs/package.json +1 -0
  48. package/build/esm/api/debug/index.js +20 -0
  49. package/build/esm/api/endpoint/api/dist-tags.js +70 -0
  50. package/build/esm/api/endpoint/api/package.js +96 -0
  51. package/build/esm/api/endpoint/api/ping.js +7 -0
  52. package/build/esm/api/endpoint/api/publish.js +347 -0
  53. package/build/esm/api/endpoint/api/search.js +101 -0
  54. package/build/esm/api/endpoint/api/star.js +66 -0
  55. package/build/esm/api/endpoint/api/stars.js +35 -0
  56. package/build/esm/api/endpoint/api/user.js +77 -0
  57. package/build/esm/api/endpoint/api/v1/profile.js +62 -0
  58. package/build/esm/api/endpoint/api/v1/search.js +174 -0
  59. package/build/esm/api/endpoint/api/v1/token.js +133 -0
  60. package/build/esm/api/endpoint/api/whoami.js +9 -0
  61. package/build/esm/api/endpoint/index.js +51 -0
  62. package/build/esm/api/index.js +98 -0
  63. package/build/esm/api/middleware.js +49 -0
  64. package/build/esm/api/web/api/index.js +23 -0
  65. package/build/esm/api/web/api/package.js +158 -0
  66. package/build/esm/api/web/api/search.js +47 -0
  67. package/build/esm/api/web/api/user.js +63 -0
  68. package/build/esm/api/web/api/utils.js +7 -0
  69. package/build/esm/api/web/html/favicon.ico +0 -0
  70. package/build/esm/api/web/index.js +84 -0
  71. package/build/esm/index.js +5 -0
  72. package/build/esm/lib/auth-utils.js +9 -0
  73. package/build/esm/lib/auth.js +3 -0
  74. package/build/esm/lib/bootstrap.js +160 -0
  75. package/build/esm/lib/cli/cli.js +24 -0
  76. package/build/esm/lib/cli/commands/info.js +18 -0
  77. package/build/esm/lib/cli/commands/init.js +70 -0
  78. package/build/esm/lib/cli/commands/version.js +10 -0
  79. package/build/esm/lib/cli/utils.js +6 -0
  80. package/build/esm/lib/cli.js +13 -0
  81. package/build/esm/lib/config.js +16 -0
  82. package/build/esm/lib/constants.js +26 -0
  83. package/build/esm/lib/experiments.js +23 -0
  84. package/build/esm/lib/local-storage.js +734 -0
  85. package/build/esm/lib/logger/index.js +14 -0
  86. package/build/esm/lib/metadata-utils.js +32 -0
  87. package/build/esm/lib/run-server.js +114 -0
  88. package/build/esm/lib/storage-utils.js +261 -0
  89. package/build/esm/lib/storage.js +607 -0
  90. package/build/esm/lib/up-storage.js +598 -0
  91. package/build/esm/lib/uplink-util.js +28 -0
  92. package/build/esm/lib/utils.js +228 -0
  93. package/build/esm/package.json +1 -0
  94. package/index.js +1 -1
  95. package/package.json +42 -29
  96. package/build/api/debug/index.js +0 -28
  97. package/build/api/endpoint/api/dist-tags.js +0 -77
  98. package/build/api/endpoint/api/package.js +0 -103
  99. package/build/api/endpoint/api/ping.js +0 -13
  100. package/build/api/endpoint/api/publish.js +0 -359
  101. package/build/api/endpoint/api/search.js +0 -107
  102. package/build/api/endpoint/api/star.js +0 -73
  103. package/build/api/endpoint/api/stars.js +0 -42
  104. package/build/api/endpoint/api/user.js +0 -84
  105. package/build/api/endpoint/api/v1/profile.js +0 -69
  106. package/build/api/endpoint/api/v1/search.js +0 -181
  107. package/build/api/endpoint/api/v1/token.js +0 -140
  108. package/build/api/endpoint/api/whoami.js +0 -15
  109. package/build/api/endpoint/index.js +0 -58
  110. package/build/api/index.js +0 -105
  111. package/build/api/middleware.js +0 -56
  112. package/build/api/web/api/index.js +0 -31
  113. package/build/api/web/api/package.js +0 -165
  114. package/build/api/web/api/search.js +0 -53
  115. package/build/api/web/api/user.js +0 -70
  116. package/build/api/web/api/utils.js +0 -14
  117. package/build/api/web/index.js +0 -96
  118. package/build/lib/auth-utils.js +0 -16
  119. package/build/lib/bootstrap.js +0 -167
  120. package/build/lib/cli/cli.js +0 -26
  121. package/build/lib/cli/commands/info.js +0 -26
  122. package/build/lib/cli/commands/init.js +0 -78
  123. package/build/lib/cli/commands/version.js +0 -17
  124. package/build/lib/cli.js +0 -16
  125. package/build/lib/config.js +0 -22
  126. package/build/lib/experiments.js +0 -29
  127. package/build/lib/local-storage.js +0 -740
  128. package/build/lib/logger/index.js +0 -21
  129. package/build/lib/metadata-utils.js +0 -39
  130. package/build/lib/run-server.js +0 -122
  131. package/build/lib/storage-utils.js +0 -282
  132. package/build/lib/storage.js +0 -613
  133. package/build/lib/up-storage.js +0 -605
  134. package/build/lib/uplink-util.js +0 -36
  135. package/build/lib/utils.js +0 -265
  136. /package/build/{api → cjs/api}/web/html/favicon.ico +0 -0
package/README.md CHANGED
@@ -28,9 +28,7 @@ Install with npm:
28
28
  npm install --global verdaccio
29
29
  ```
30
30
 
31
- **Node.js v18 or higher is required.**
32
-
33
- > Node.js 20 (or the latest LTS version) is recommended.
31
+ **Node.js v24 or higher is required.**
34
32
 
35
33
  or pull [Docker official image](https://verdaccio.org/docs/docker)
36
34
 
package/bin/verdaccio CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- require('../build/lib/cli');
3
+ require('../build/cjs/lib/cli');
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _lodash = _interopRequireDefault(require("lodash"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ var _default = (app, selfPath) => {
10
+ // Hook for tests only
11
+ app.get('/-/_debug', function (req, res, next) {
12
+ const doGarbabeCollector = _lodash.default.isNil(global.gc) === false;
13
+ if (doGarbabeCollector) {
14
+ // @ts-ignore
15
+ global.gc();
16
+ }
17
+ next({
18
+ pid: process.pid,
19
+ // @ts-ignore
20
+ main: process.mainModule.filename,
21
+ conf: selfPath,
22
+ mem: process.memoryUsage(),
23
+ gc: doGarbabeCollector
24
+ });
25
+ });
26
+ };
27
+ exports.default = _default;
28
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfZGVmYXVsdCIsImFwcCIsInNlbGZQYXRoIiwiZ2V0IiwicmVxIiwicmVzIiwibmV4dCIsImRvR2FyYmFiZUNvbGxlY3RvciIsIl8iLCJpc05pbCIsImdsb2JhbCIsImdjIiwicGlkIiwicHJvY2VzcyIsIm1haW4iLCJtYWluTW9kdWxlIiwiZmlsZW5hbWUiLCJjb25mIiwibWVtIiwibWVtb3J5VXNhZ2UiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9kZWJ1Zy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvbiB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQsICRSZXNwb25zZUV4dGVuZCB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgKGFwcDogQXBwbGljYXRpb24sIHNlbGZQYXRoOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgLy8gSG9vayBmb3IgdGVzdHMgb25seVxuICBhcHAuZ2V0KFxuICAgICcvLS9fZGVidWcnLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgICAgY29uc3QgZG9HYXJiYWJlQ29sbGVjdG9yID0gXy5pc05pbChnbG9iYWwuZ2MpID09PSBmYWxzZTtcblxuICAgICAgaWYgKGRvR2FyYmFiZUNvbGxlY3Rvcikge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGdsb2JhbC5nYygpO1xuICAgICAgfVxuXG4gICAgICBuZXh0KHtcbiAgICAgICAgcGlkOiBwcm9jZXNzLnBpZCxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBtYWluOiBwcm9jZXNzLm1haW5Nb2R1bGUuZmlsZW5hbWUsXG4gICAgICAgIGNvbmY6IHNlbGZQYXRoLFxuICAgICAgICBtZW06IHByb2Nlc3MubWVtb3J5VXNhZ2UoKSxcbiAgICAgICAgZ2M6IGRvR2FyYmFiZUNvbGxlY3RvcixcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUF1QixTQUFBRCx1QkFBQUUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUFBLElBQUFHLFFBQUEsR0FJUkEsQ0FBQ0MsR0FBZ0IsRUFBRUMsUUFBZ0IsS0FBVztFQUMzRDtFQUNBRCxHQUFHLENBQUNFLEdBQUcsQ0FDTCxXQUFXLEVBQ1gsVUFBVUMsR0FBbUIsRUFBRUMsR0FBb0IsRUFBRUMsSUFBc0IsRUFBUTtJQUNqRixNQUFNQyxrQkFBa0IsR0FBR0MsZUFBQyxDQUFDQyxLQUFLLENBQUNDLE1BQU0sQ0FBQ0MsRUFBRSxDQUFDLEtBQUssS0FBSztJQUV2RCxJQUFJSixrQkFBa0IsRUFBRTtNQUN0QjtNQUNBRyxNQUFNLENBQUNDLEVBQUUsQ0FBQyxDQUFDO0lBQ2I7SUFFQUwsSUFBSSxDQUFDO01BQ0hNLEdBQUcsRUFBRUMsT0FBTyxDQUFDRCxHQUFHO01BQ2hCO01BQ0FFLElBQUksRUFBRUQsT0FBTyxDQUFDRSxVQUFVLENBQUNDLFFBQVE7TUFDakNDLElBQUksRUFBRWYsUUFBUTtNQUNkZ0IsR0FBRyxFQUFFTCxPQUFPLENBQUNNLFdBQVcsQ0FBQyxDQUFDO01BQzFCUixFQUFFLEVBQUVKO0lBQ04sQ0FBQyxDQUFDO0VBQ0osQ0FDRixDQUFDO0FBQ0gsQ0FBQztBQUFBYSxPQUFBLENBQUFyQixPQUFBLEdBQUFDLFFBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = _default;
7
+ var _lodash = _interopRequireDefault(require("lodash"));
8
+ var _mime = _interopRequireDefault(require("mime"));
9
+ var _middleware = require("@verdaccio/middleware");
10
+ var _constants = require("../../../lib/constants");
11
+ var _logger = require("../../../lib/logger");
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ function _default(route, auth, storage) {
14
+ const can = (0, _middleware.allow)(auth, {
15
+ beforeAll: (params, message) => _logger.logger.trace(params, message),
16
+ afterAll: (params, message) => _logger.logger.trace(params, message)
17
+ });
18
+ const tag_package_version = function (req, res, next) {
19
+ if (_lodash.default.isString(req.body) === false) {
20
+ return next('route');
21
+ }
22
+ const tags = {};
23
+ tags[req.params.tag] = req.body;
24
+ storage.mergeTags(req.params.package, tags, function (err) {
25
+ if (err) {
26
+ return next(err);
27
+ }
28
+ res.status(_constants.HTTP_STATUS.CREATED);
29
+ return next({
30
+ ok: _constants.API_MESSAGE.TAG_ADDED
31
+ });
32
+ });
33
+ };
34
+
35
+ // tagging a package
36
+ route.put(_middleware.DIST_TAGS_API_ENDPOINTS.tagging, can('publish'), (0, _middleware.media)(_mime.default.getType('json')), tag_package_version);
37
+ route.post(_middleware.DIST_TAGS_API_ENDPOINTS.tagging_package, can('publish'), (0, _middleware.media)(_mime.default.getType('json')), tag_package_version);
38
+ route.put(_middleware.DIST_TAGS_API_ENDPOINTS.tagging_package, can('publish'), (0, _middleware.media)(_mime.default.getType('json')), tag_package_version);
39
+ route.delete(_middleware.DIST_TAGS_API_ENDPOINTS.tagging_package, can('publish'), function (req, res, next) {
40
+ const tags = {};
41
+ tags[req.params.tag] = null;
42
+ storage.mergeTags(req.params.package, tags, function (err) {
43
+ if (err) {
44
+ return next(err);
45
+ }
46
+ res.status(_constants.HTTP_STATUS.CREATED);
47
+ return next({
48
+ ok: _constants.API_MESSAGE.TAG_REMOVED
49
+ });
50
+ });
51
+ });
52
+ route.get(_middleware.DIST_TAGS_API_ENDPOINTS.get_dist_tags, can('access'), function (req, res, next) {
53
+ storage.getPackage({
54
+ name: req.params.package,
55
+ uplinksLook: true,
56
+ req,
57
+ callback: function (err, info) {
58
+ if (err) {
59
+ return next(err);
60
+ }
61
+ next(info[_constants.DIST_TAGS]);
62
+ }
63
+ });
64
+ });
65
+ route.post(_middleware.DIST_TAGS_API_ENDPOINTS.get_dist_tags, can('publish'), function (req, res, next) {
66
+ storage.mergeTags(req.params.package, req.body, function (err) {
67
+ if (err) {
68
+ return next(err);
69
+ }
70
+ res.status(_constants.HTTP_STATUS.CREATED);
71
+ return next({
72
+ ok: _constants.API_MESSAGE.TAG_UPDATED
73
+ });
74
+ });
75
+ });
76
+ }
77
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbWltZSIsIl9taWRkbGV3YXJlIiwiX2NvbnN0YW50cyIsIl9sb2dnZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfZGVmYXVsdCIsInJvdXRlIiwiYXV0aCIsInN0b3JhZ2UiLCJjYW4iLCJhbGxvdyIsImJlZm9yZUFsbCIsInBhcmFtcyIsIm1lc3NhZ2UiLCJsb2dnZXIiLCJ0cmFjZSIsImFmdGVyQWxsIiwidGFnX3BhY2thZ2VfdmVyc2lvbiIsInJlcSIsInJlcyIsIm5leHQiLCJfIiwiaXNTdHJpbmciLCJib2R5IiwidGFncyIsInRhZyIsIm1lcmdlVGFncyIsInBhY2thZ2UiLCJlcnIiLCJzdGF0dXMiLCJIVFRQX1NUQVRVUyIsIkNSRUFURUQiLCJvayIsIkFQSV9NRVNTQUdFIiwiVEFHX0FEREVEIiwicHV0IiwiRElTVF9UQUdTX0FQSV9FTkRQT0lOVFMiLCJ0YWdnaW5nIiwibWVkaWEiLCJtaW1lIiwiZ2V0VHlwZSIsInBvc3QiLCJ0YWdnaW5nX3BhY2thZ2UiLCJkZWxldGUiLCJUQUdfUkVNT1ZFRCIsImdldCIsImdldF9kaXN0X3RhZ3MiLCJnZXRQYWNrYWdlIiwibmFtZSIsInVwbGlua3NMb29rIiwiY2FsbGJhY2siLCJpbmZvIiwiRElTVF9UQUdTIiwiVEFHX1VQREFURUQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2VuZHBvaW50L2FwaS9kaXN0LXRhZ3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbWltZSBmcm9tICdtaW1lJztcblxuaW1wb3J0IHsgRElTVF9UQUdTX0FQSV9FTkRQT0lOVFMsIGFsbG93LCBtZWRpYSB9IGZyb20gJ0B2ZXJkYWNjaW8vbWlkZGxld2FyZSc7XG5pbXBvcnQgdHlwZSB7IFBhY2thZ2UgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcblxuaW1wb3J0IHR5cGUgQXV0aCBmcm9tICcuLi8uLi8uLi9saWIvYXV0aCc7XG5pbXBvcnQgeyBBUElfTUVTU0FHRSwgRElTVF9UQUdTLCBIVFRQX1NUQVRVUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgdHlwZSBTdG9yYWdlIGZyb20gJy4uLy4uLy4uL2xpYi9zdG9yYWdlJztcbmltcG9ydCB0eXBlIHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQsICRSZXNwb25zZUV4dGVuZCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHJvdXRlOiBSb3V0ZXIsIGF1dGg6IEF1dGgsIHN0b3JhZ2U6IFN0b3JhZ2UpOiB2b2lkIHtcbiAgY29uc3QgY2FuID0gYWxsb3coYXV0aCwge1xuICAgIGJlZm9yZUFsbDogKHBhcmFtcywgbWVzc2FnZSkgPT4gbG9nZ2VyLnRyYWNlKHBhcmFtcywgbWVzc2FnZSksXG4gICAgYWZ0ZXJBbGw6IChwYXJhbXMsIG1lc3NhZ2UpID0+IGxvZ2dlci50cmFjZShwYXJhbXMsIG1lc3NhZ2UpLFxuICB9KTtcbiAgY29uc3QgdGFnX3BhY2thZ2VfdmVyc2lvbiA9IGZ1bmN0aW9uIChcbiAgICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICAgIHJlczogJFJlc3BvbnNlRXh0ZW5kLFxuICAgIG5leHQ6ICROZXh0RnVuY3Rpb25WZXJcbiAgKTogJE5leHRGdW5jdGlvblZlciB7XG4gICAgaWYgKF8uaXNTdHJpbmcocmVxLmJvZHkpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIG5leHQoJ3JvdXRlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdGFncyA9IHt9O1xuICAgIHRhZ3NbcmVxLnBhcmFtcy50YWddID0gcmVxLmJvZHk7XG4gICAgc3RvcmFnZS5tZXJnZVRhZ3MocmVxLnBhcmFtcy5wYWNrYWdlLCB0YWdzLCBmdW5jdGlvbiAoZXJyOiBFcnJvcik6ICROZXh0RnVuY3Rpb25WZXIge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgfVxuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgIHJldHVybiBuZXh0KHsgb2s6IEFQSV9NRVNTQUdFLlRBR19BRERFRCB9KTtcbiAgICB9KTtcbiAgfTtcblxuICAvLyB0YWdnaW5nIGEgcGFja2FnZVxuICByb3V0ZS5wdXQoXG4gICAgRElTVF9UQUdTX0FQSV9FTkRQT0lOVFMudGFnZ2luZyxcbiAgICBjYW4oJ3B1Ymxpc2gnKSxcbiAgICBtZWRpYShtaW1lLmdldFR5cGUoJ2pzb24nKSksXG4gICAgdGFnX3BhY2thZ2VfdmVyc2lvblxuICApO1xuXG4gIHJvdXRlLnBvc3QoXG4gICAgRElTVF9UQUdTX0FQSV9FTkRQT0lOVFMudGFnZ2luZ19wYWNrYWdlLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSxcbiAgICB0YWdfcGFja2FnZV92ZXJzaW9uXG4gICk7XG5cbiAgcm91dGUucHV0KFxuICAgIERJU1RfVEFHU19BUElfRU5EUE9JTlRTLnRhZ2dpbmdfcGFja2FnZSxcbiAgICBjYW4oJ3B1Ymxpc2gnKSxcbiAgICBtZWRpYShtaW1lLmdldFR5cGUoJ2pzb24nKSksXG4gICAgdGFnX3BhY2thZ2VfdmVyc2lvblxuICApO1xuXG4gIHJvdXRlLmRlbGV0ZShcbiAgICBESVNUX1RBR1NfQVBJX0VORFBPSU5UUy50YWdnaW5nX3BhY2thZ2UsXG4gICAgY2FuKCdwdWJsaXNoJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBjb25zdCB0YWdzID0ge307XG4gICAgICB0YWdzW3JlcS5wYXJhbXMudGFnXSA9IG51bGw7XG4gICAgICBzdG9yYWdlLm1lcmdlVGFncyhyZXEucGFyYW1zLnBhY2thZ2UsIHRhZ3MsIGZ1bmN0aW9uIChlcnI6IGFueSk6ICROZXh0RnVuY3Rpb25WZXIge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgICAgfVxuICAgICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgICAgb2s6IEFQSV9NRVNTQUdFLlRBR19SRU1PVkVELFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICByb3V0ZS5nZXQoXG4gICAgRElTVF9UQUdTX0FQSV9FTkRQT0lOVFMuZ2V0X2Rpc3RfdGFncyxcbiAgICBjYW4oJ2FjY2VzcycpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgICAgc3RvcmFnZS5nZXRQYWNrYWdlKHtcbiAgICAgICAgbmFtZTogcmVxLnBhcmFtcy5wYWNrYWdlLFxuICAgICAgICB1cGxpbmtzTG9vazogdHJ1ZSxcbiAgICAgICAgcmVxLFxuICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24gKGVycjogYW55LCBpbmZvOiBQYWNrYWdlKTogJE5leHRGdW5jdGlvblZlciB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXh0KGluZm9bRElTVF9UQUdTXSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gICk7XG5cbiAgcm91dGUucG9zdChcbiAgICBESVNUX1RBR1NfQVBJX0VORFBPSU5UUy5nZXRfZGlzdF90YWdzLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgICAgc3RvcmFnZS5tZXJnZVRhZ3MocmVxLnBhcmFtcy5wYWNrYWdlLCByZXEuYm9keSwgZnVuY3Rpb24gKGVycjogYW55KTogJE5leHRGdW5jdGlvblZlciB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICBvazogQVBJX01FU1NBR0UuVEFHX1VQREFURUQsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxXQUFBLEdBQUFGLE9BQUE7QUFJQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFKLE9BQUE7QUFBNkMsU0FBQUQsdUJBQUFNLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFJOUIsU0FBQUcsU0FBVUMsS0FBYSxFQUFFQyxJQUFVLEVBQUVDLE9BQWdCLEVBQVE7RUFDMUUsTUFBTUMsR0FBRyxHQUFHLElBQUFDLGlCQUFLLEVBQUNILElBQUksRUFBRTtJQUN0QkksU0FBUyxFQUFFQSxDQUFDQyxNQUFNLEVBQUVDLE9BQU8sS0FBS0MsY0FBTSxDQUFDQyxLQUFLLENBQUNILE1BQU0sRUFBRUMsT0FBTyxDQUFDO0lBQzdERyxRQUFRLEVBQUVBLENBQUNKLE1BQU0sRUFBRUMsT0FBTyxLQUFLQyxjQUFN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
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = _default;
7
+ var _lodash = _interopRequireDefault(require("lodash"));
8
+ var _core = require("@verdaccio/core");
9
+ var _middleware = require("@verdaccio/middleware");
10
+ var _tarball = require("@verdaccio/tarball");
11
+ var _constants = require("../../../lib/constants");
12
+ var _logger = require("../../../lib/logger");
13
+ var _utils = require("../../../lib/utils");
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
+ const downloadStream = (packageName, filename, storage, req, res) => {
16
+ const stream = storage.getTarball(packageName, filename);
17
+ stream.on('content-length', function (content) {
18
+ res.header('Content-Length', content);
19
+ });
20
+ stream.on('error', function (err) {
21
+ return res.locals.report_error(err);
22
+ });
23
+ res.header(_constants.HEADERS.CONTENT_TYPE, _constants.HEADERS.OCTET_STREAM);
24
+ stream.pipe(res);
25
+ };
26
+ const redirectOrDownloadStream = (packageName, filename, storage, req, res, config) => {
27
+ const tarballUrlRedirect = _lodash.default.get(config, 'experiments.tarball_url_redirect');
28
+ storage.hasLocalTarball(packageName, filename).then(hasLocalTarball => {
29
+ if (hasLocalTarball) {
30
+ const context = {
31
+ packageName,
32
+ filename
33
+ };
34
+ const tarballUrl = typeof tarballUrlRedirect === 'function' ? tarballUrlRedirect(context) : _lodash.default.template(tarballUrlRedirect)(context);
35
+ res.redirect(tarballUrl);
36
+ } else {
37
+ downloadStream(packageName, filename, storage, req, res);
38
+ }
39
+ }).catch(err => {
40
+ res.locals.report_error(err);
41
+ });
42
+ };
43
+ function _default(route, auth, storage, config) {
44
+ const can = (0, _middleware.allow)(auth, {
45
+ beforeAll: (params, message) => _logger.logger.trace(params, message),
46
+ afterAll: (params, message) => _logger.logger.trace(params, message)
47
+ });
48
+ // TODO: anonymous user?
49
+ route.get(_middleware.PACKAGE_API_ENDPOINTS.get_package_by_version, can('access'), function (req, res, next) {
50
+ const abbreviated = _core.stringUtils.getByQualityPriorityValue(req.get('Accept')) === 'application/vnd.npm.install-v1+json';
51
+ const getPackageMetaCallback = function (err, metadata) {
52
+ if (err) {
53
+ return next(err);
54
+ }
55
+ metadata = (0, _tarball.convertDistRemoteToLocalTarballUrls)(metadata, {
56
+ protocol: req.protocol,
57
+ headers: req.headers,
58
+ host: req.hostname,
59
+ remoteAddress: req.socket.remoteAddress
60
+ }, config.url_prefix);
61
+ let queryVersion = req.params.version;
62
+ if (_lodash.default.isNil(queryVersion)) {
63
+ if (abbreviated) {
64
+ res.setHeader(_constants.HEADERS.CONTENT_TYPE, 'application/vnd.npm.install-v1+json');
65
+ } else {
66
+ res.setHeader(_constants.HEADERS.CONTENT_TYPE, _constants.HEADERS.JSON);
67
+ }
68
+ return next(metadata);
69
+ }
70
+ let version = (0, _utils.getVersion)(metadata, queryVersion);
71
+ if (_lodash.default.isNil(version) === false) {
72
+ res.setHeader(_constants.HEADERS.CONTENT_TYPE, _constants.HEADERS.JSON);
73
+ return next(version);
74
+ }
75
+ if (_lodash.default.isNil(metadata[_constants.DIST_TAGS]) === false) {
76
+ if (_lodash.default.isNil(metadata[_constants.DIST_TAGS][queryVersion]) === false) {
77
+ queryVersion = metadata[_constants.DIST_TAGS][queryVersion];
78
+ version = (0, _utils.getVersion)(metadata, queryVersion);
79
+ if (_lodash.default.isNil(version) === false) {
80
+ res.setHeader(_constants.HEADERS.CONTENT_TYPE, _constants.HEADERS.JSON);
81
+ return next(version);
82
+ }
83
+ }
84
+ }
85
+ return next(_utils.ErrorCode.getNotFound(`${_constants.API_ERROR.VERSION_NOT_EXIST}: ${req.params.version}`));
86
+ };
87
+ storage.getPackage({
88
+ name: req.params.package,
89
+ uplinksLook: true,
90
+ req,
91
+ abbreviated,
92
+ callback: getPackageMetaCallback
93
+ });
94
+ });
95
+ route.get(_middleware.PACKAGE_API_ENDPOINTS.get_package_tarball, can('access'), function (req, res) {
96
+ if (_lodash.default.get(config, 'experiments.tarball_url_redirect') === undefined) {
97
+ downloadStream(req.params.package, req.params.filename, storage, req, res);
98
+ } else {
99
+ redirectOrDownloadStream(req.params.package, req.params.filename, storage, req, res, config);
100
+ }
101
+ });
102
+ }
103
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29yZSIsIl9taWRkbGV3YXJlIiwiX3RhcmJhbGwiLCJfY29uc3RhbnRzIiwiX2xvZ2dlciIsIl91dGlscyIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImRvd25sb2FkU3RyZWFtIiwicGFja2FnZU5hbWUiLCJmaWxlbmFtZSIsInN0b3JhZ2UiLCJyZXEiLCJyZXMiLCJzdHJlYW0iLCJnZXRUYXJiYWxsIiwib24iLCJjb250ZW50IiwiaGVhZGVyIiwiZXJyIiwibG9jYWxzIiwicmVwb3J0X2Vycm9yIiwiSEVBREVSUyIsIkNPTlRFTlRfVFlQRSIsIk9DVEVUX1NUUkVBTSIsInBpcGUiLCJyZWRpcmVjdE9yRG93bmxvYWRTdHJlYW0iLCJjb25maWciLCJ0YXJiYWxsVXJsUmVkaXJlY3QiLCJfIiwiZ2V0IiwiaGFzTG9jYWxUYXJiYWxsIiwidGhlbiIsImNvbnRleHQiLCJ0YXJiYWxsVXJsIiwidGVtcGxhdGUiLCJyZWRpcmVjdCIsImNhdGNoIiwiX2RlZmF1bHQiLCJyb3V0ZSIsImF1dGgiLCJjYW4iLCJhbGxvdyIsImJlZm9yZUFsbCIsInBhcmFtcyIsIm1lc3NhZ2UiLCJsb2dnZXIiLCJ0cmFjZSIsImFmdGVyQWxsIiwiUEFDS0FHRV9BUElfRU5EUE9JTlRTIiwiZ2V0X3BhY2thZ2VfYnlfdmVyc2lvbiIsIm5leHQiLCJhYmJyZXZpYXRlZCIsInN0cmluZ1V0aWxzIiwiZ2V0QnlRdWFsaXR5UHJpb3JpdHlWYWx1ZSIsImdldFBhY2thZ2VNZXRhQ2FsbGJhY2siLCJtZXRhZGF0YSIsImNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzIiwicHJvdG9jb2wiLCJoZWFkZXJzIiwiaG9zdCIsImhvc3RuYW1lIiwicmVtb3RlQWRkcmVzcyIsInNvY2tldCIsInVybF9wcmVmaXgiLCJxdWVyeVZlcnNpb24iLCJ2ZXJzaW9uIiwiaXNOaWwiLCJzZXRIZWFkZXIiLCJKU09OIiwiZ2V0VmVyc2lvbiIsIkRJU1RfVEFHUyIsIkVycm9yQ29kZSIsImdldE5vdEZvdW5kIiwiQVBJX0VSUk9SIiwiVkVSU0lPTl9OT1RfRVhJU1QiLCJnZXRQYWNrYWdlIiwibmFtZSIsInBhY2thZ2UiLCJ1cGxpbmtzTG9vayIsImNhbGxiYWNrIiwiZ2V0X3BhY2thZ2VfdGFyYmFsbCIsInVuZGVmaW5lZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3BhY2thZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IHN0cmluZ1V0aWxzIH0gZnJvbSAnQHZlcmRhY2Npby9jb3JlJztcbmltcG9ydCB7IFBBQ0tBR0VfQVBJX0VORFBPSU5UUywgYWxsb3cgfSBmcm9tICdAdmVyZGFjY2lvL21pZGRsZXdhcmUnO1xuaW1wb3J0IHsgY29udmVydERpc3RSZW1vdGVUb0xvY2FsVGFyYmFsbFVybHMgfSBmcm9tICdAdmVyZGFjY2lvL3RhcmJhbGwnO1xuaW1wb3J0IHR5cGUgeyBDb25maWcsIE1hbmlmZXN0IH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCB0eXBlIEF1dGggZnJvbSAnLi4vLi4vLi4vbGliL2F1dGgnO1xuaW1wb3J0IHsgQVBJX0VSUk9SLCBESVNUX1RBR1MsIEhFQURFUlMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IHR5cGUgU3RvcmFnZSBmcm9tICcuLi8uLi8uLi9saWIvc3RvcmFnZSc7XG5pbXBvcnQgeyBFcnJvckNvZGUsIGdldFZlcnNpb24gfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuXG5jb25zdCBkb3dubG9hZFN0cmVhbSA9IChcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgc3RvcmFnZTogYW55LFxuICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICByZXM6ICRSZXNwb25zZUV4dGVuZFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2UuZ2V0VGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpO1xuXG4gIHN0cmVhbS5vbignY29udGVudC1sZW5ndGgnLCBmdW5jdGlvbiAoY29udGVudCk6IHZvaWQge1xuICAgIHJlcy5oZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgY29udGVudCk7XG4gIH0pO1xuXG4gIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKTogdm9pZCB7XG4gICAgcmV0dXJuIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yKGVycik7XG4gIH0pO1xuXG4gIHJlcy5oZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuT0NURVRfU1RSRUFNKTtcbiAgc3RyZWFtLnBpcGUocmVzKTtcbn07XG5cbmNvbnN0IHJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbSA9IChcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgc3RvcmFnZTogYW55LFxuICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICByZXM6ICRSZXNwb25zZUV4dGVuZCxcbiAgY29uZmlnOiBDb25maWdcbik6IHZvaWQgPT4ge1xuICBjb25zdCB0YXJiYWxsVXJsUmVkaXJlY3QgPSBfLmdldChjb25maWcsICdleHBlcmltZW50cy50YXJiYWxsX3VybF9yZWRpcmVjdCcpO1xuICBzdG9yYWdlXG4gICAgLmhhc0xvY2FsVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpXG4gICAgLnRoZW4oKGhhc0xvY2FsVGFyYmFsbCkgPT4ge1xuICAgICAgaWYgKGhhc0xvY2FsVGFyYmFsbCkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0geyBwYWNrYWdlTmFtZSwgZmlsZW5hbWUgfTtcbiAgICAgICAgY29uc3QgdGFyYmFsbFVybCA9XG4gICAgICAgICAgdHlwZW9mIHRhcmJhbGxVcmxSZWRpcmVjdCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyB0YXJiYWxsVXJsUmVkaXJlY3QoY29udGV4dClcbiAgICAgICAgICAgIDogXy50ZW1wbGF0ZSh0YXJiYWxsVXJsUmVkaXJlY3QpKGNvbnRleHQpO1xuICAgICAgICByZXMucmVkaXJlY3QodGFyYmFsbFVybCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb3dubG9hZFN0cmVhbShwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHN0b3JhZ2UsIHJlcSwgcmVzKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICByZXMubG9jYWxzLnJlcG9ydF9lcnJvcihlcnIpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHJvdXRlOiBSb3V0ZXIsIGF1dGg6IEF1dGgsIHN0b3JhZ2U6IFN0b3JhZ2UsIGNvbmZpZzogQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IGNhbiA9IGFsbG93KGF1dGgsIHtcbiAgICBiZWZvcmVBbGw6IChwYXJhbXMsIG1lc3NhZ2UpID0+IGxvZ2dlci50cmFjZShwYXJhbXMsIG1lc3NhZ2UpLFxuICAgIGFmdGVyQWxsOiAocGFyYW1zLCBtZXNzYWdlKSA9PiBsb2dnZXIudHJhY2UocGFyYW1zLCBtZXNzYWdlKSxcbiAgfSk7XG4gIC8vIFRPRE86IGFub255bW91cyB1c2VyP1xuICByb3V0ZS5nZXQoXG4gICAgUEFDS0FHRV9BUElfRU5EUE9JTlRTLmdldF9wYWNrYWdlX2J5X3ZlcnNpb24sXG4gICAgY2FuKCdhY2Nlc3MnKSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGFiYnJldmlhdGVkID1cbiAgICAgICAgc3RyaW5nVXRpbHMuZ2V0QnlRdWFsaXR5UHJpb3JpdHlWYWx1ZShyZXEuZ2V0KCdBY2NlcHQnKSkgPT09XG4gICAgICAgICdhcHBsaWNhdGlvbi92bmQubnBtLmluc3RhbGwtdjEranNvbic7XG4gICAgICBjb25zdCBnZXRQYWNrYWdlTWV0YUNhbGxiYWNrID0gZnVuY3Rpb24gKGVyciwgbWV0YWRhdGE6IE1hbmlmZXN0KTogdm9pZCB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICB9XG4gICAgICAgIG1ldGFkYXRhID0gY29udmVydERpc3RSZW1vdGVUb0xvY2FsVGFyYmFsbFVybHMoXG4gICAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJvdG9jb2w6IHJlcS5wcm90b2NvbCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzIGFzIGFueSxcbiAgICAgICAgICAgIGhvc3Q6IHJlcS5ob3N0bmFtZSxcbiAgICAgICAgICAgIHJlbW90ZUFkZHJlc3M6IHJlcS5zb2NrZXQucmVtb3RlQWRkcmVzcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbmZpZy51cmxfcHJlZml4XG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IHF1ZXJ5VmVyc2lvbiA9IHJlcS5wYXJhbXMudmVyc2lvbjtcbiAgICAgICAgaWYgKF8uaXNOaWwocXVlcnlWZXJzaW9uKSkge1xuICAgICAgICAgIGlmIChhYmJyZXZpYXRlZCkge1xuICAgICAgICAgICAgcmVzLnNldEhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgJ2FwcGxpY2F0aW9uL3ZuZC5ucG0uaW5zdGFsbC12MStqc29uJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuSlNPTik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG5leHQobWV0YWRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZlcnNpb24gPSBnZXRWZXJzaW9uKG1ldGFkYXRhLCBxdWVyeVZlcnNpb24pO1xuICAgICAgICBpZiAoXy5pc05pbCh2ZXJzaW9uKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXMuc2V0SGVhZGVyKEhFQURFUlMuQ09OVEVOVF9UWVBFLCBIRUFERVJTLkpTT04pO1xuICAgICAgICAgIHJldHVybiBuZXh0KHZlcnNpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8uaXNOaWwobWV0YWRhdGFbRElTVF9UQUdTXSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgaWYgKF8uaXNOaWwobWV0YWRhdGFbRElTVF9UQUdTXVtxdWVyeVZlcnNpb25dKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHF1ZXJ5VmVyc2lvbiA9IG1ldGFkYXRhW0RJU1RfVEFHU11bcXVlcnlWZXJzaW9uXTtcbiAgICAgICAgICAgIHZlcnNpb24gPSBnZXRWZXJzaW9uKG1ldGFkYXRhLCBxdWVyeVZlcnNpb24pO1xuICAgICAgICAgICAgaWYgKF8uaXNOaWwodmVyc2lvbikgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuSlNPTik7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KHZlcnNpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0Tm90Rm91bmQoYCR7QVBJX0VSUk9SLlZFUlNJT05fTk9UX0VYSVNUfTogJHtyZXEucGFyYW1zLnZlcnNpb259YCkpO1xuICAgICAgfTtcblxuICAgICAgc3RvcmFnZS5nZXRQYWNrYWdlKHtcbiAgICAgICAgbmFtZTogcmVxLnBhcmFtcy5wYWNrYWdlLFxuICAgICAgICB1cGxpbmtzTG9vazogdHJ1ZSxcbiAgICAgICAgcmVxLFxuICAgICAgICBhYmJyZXZpYXRlZCxcbiAgICAgICAgY2FsbGJhY2s6IGdldFBhY2thZ2VNZXRhQ2FsbGJhY2ssXG4gICAgICB9KTtcbiAgICB9XG4gICk7XG5cbiAgcm91dGUuZ2V0KFxuICAgIFBBQ0tBR0VfQVBJX0VORFBPSU5UUy5nZXRfcGFja2FnZV90YXJiYWxsLFxuICAgIGNhbignYWNjZXNzJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kKTogdm9pZCB7XG4gICAgICBpZiAoXy5nZXQoY29uZmlnLCAnZXhwZXJpbWVudHMudGFyYmFsbF91cmxfcmVkaXJlY3QnKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRvd25sb2FkU3RyZWFtKHJlcS5wYXJhbXMucGFja2FnZSwgcmVxLnBhcmFtcy5maWxlbmFtZSwgc3RvcmFnZSwgcmVxLCByZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVkaXJlY3RPckRvd25sb2FkU3RyZWFtKFxuICAgICAgICAgIHJlcS5wYXJhbXMucGFja2FnZSxcbiAgICAgICAgICByZXEucGFyYW1zLmZpbGVuYW1lLFxuICAgICAgICAgIHN0b3JhZ2UsXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHJlcyxcbiAgICAgICAgICBjb25maWdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLEtBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQUlBLElBQUFJLFVBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE9BQUEsR0FBQUwsT0FBQTtBQUVBLElBQUFNLE1BQUEsR0FBQU4s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
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = _default;
7
+ var _middleware = require("@verdaccio/middleware");
8
+ function _default(route) {
9
+ route.get(_middleware.PING_API_ENDPOINTS.ping, function (req, res, next) {
10
+ next({});
11
+ });
12
+ }
13
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWlkZGxld2FyZSIsInJlcXVpcmUiLCJfZGVmYXVsdCIsInJvdXRlIiwiZ2V0IiwiUElOR19BUElfRU5EUE9JTlRTIiwicGluZyIsInJlcSIsInJlcyIsIm5leHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2VuZHBvaW50L2FwaS9waW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5cbmltcG9ydCB7IFBJTkdfQVBJX0VORFBPSU5UUyB9IGZyb20gJ0B2ZXJkYWNjaW8vbWlkZGxld2FyZSc7XG5cbmltcG9ydCB0eXBlIHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQsICRSZXNwb25zZUV4dGVuZCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHJvdXRlOiBSb3V0ZXIpOiB2b2lkIHtcbiAgcm91dGUuZ2V0KFxuICAgIFBJTkdfQVBJX0VORFBPSU5UUy5waW5nLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcikge1xuICAgICAgbmV4dCh7fSk7XG4gICAgfVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUFJZSxTQUFBQyxTQUFVQyxLQUFhLEVBQVE7RUFDNUNBLEtBQUssQ0FBQ0MsR0FBRyxDQUNQQyw4QkFBa0IsQ0FBQ0MsSUFBSSxFQUN2QixVQUFVQyxHQUFtQixFQUFFQyxHQUFvQixFQUFFQyxJQUFzQixFQUFFO0lBQzNFQSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDVixDQUNGLENBQUM7QUFDSCIsImlnbm9yZUxpc3QiOltdfQ==