@verdaccio/middleware 8.0.5 → 8.1.0

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 (119) hide show
  1. package/build/_virtual/_rolldown/runtime.js +23 -0
  2. package/build/index.js +62 -229
  3. package/build/index.mjs +23 -0
  4. package/build/middlewares/allow.js +42 -50
  5. package/build/middlewares/allow.js.map +1 -1
  6. package/build/middlewares/allow.mjs +44 -0
  7. package/build/middlewares/allow.mjs.map +1 -0
  8. package/build/middlewares/antiLoop.js +21 -40
  9. package/build/middlewares/antiLoop.js.map +1 -1
  10. package/build/middlewares/antiLoop.mjs +25 -0
  11. package/build/middlewares/antiLoop.mjs.map +1 -0
  12. package/build/middlewares/api_urls.js +66 -59
  13. package/build/middlewares/api_urls.js.map +1 -1
  14. package/build/middlewares/api_urls.mjs +59 -0
  15. package/build/middlewares/api_urls.mjs.map +1 -0
  16. package/build/middlewares/body-parser.js +24 -32
  17. package/build/middlewares/body-parser.js.map +1 -1
  18. package/build/middlewares/body-parser.mjs +28 -0
  19. package/build/middlewares/body-parser.mjs.map +1 -0
  20. package/build/middlewares/encode-pkg.js +20 -36
  21. package/build/middlewares/encode-pkg.js.map +1 -1
  22. package/build/middlewares/encode-pkg.mjs +22 -0
  23. package/build/middlewares/encode-pkg.mjs.map +1 -0
  24. package/build/middlewares/error.js +53 -71
  25. package/build/middlewares/error.js.map +1 -1
  26. package/build/middlewares/error.mjs +53 -0
  27. package/build/middlewares/error.mjs.map +1 -0
  28. package/build/middlewares/final.js +46 -57
  29. package/build/middlewares/final.js.map +1 -1
  30. package/build/middlewares/final.mjs +46 -0
  31. package/build/middlewares/final.mjs.map +1 -0
  32. package/build/middlewares/json.js +7 -11
  33. package/build/middlewares/json.js.map +1 -1
  34. package/build/middlewares/json.mjs +10 -0
  35. package/build/middlewares/json.mjs.map +1 -0
  36. package/build/middlewares/log.js +73 -95
  37. package/build/middlewares/log.js.map +1 -1
  38. package/build/middlewares/log.mjs +71 -0
  39. package/build/middlewares/log.mjs.map +1 -0
  40. package/build/middlewares/make-url-relative.js +26 -41
  41. package/build/middlewares/make-url-relative.js.map +1 -1
  42. package/build/middlewares/make-url-relative.mjs +28 -0
  43. package/build/middlewares/make-url-relative.mjs.map +1 -0
  44. package/build/middlewares/match.js +8 -13
  45. package/build/middlewares/match.js.map +1 -1
  46. package/build/middlewares/match.mjs +11 -0
  47. package/build/middlewares/match.mjs.map +1 -0
  48. package/build/middlewares/media.js +14 -19
  49. package/build/middlewares/media.js.map +1 -1
  50. package/build/middlewares/media.mjs +17 -0
  51. package/build/middlewares/media.mjs.map +1 -0
  52. package/build/middlewares/rate-limit.js +8 -10
  53. package/build/middlewares/rate-limit.js.map +1 -1
  54. package/build/middlewares/rate-limit.mjs +9 -0
  55. package/build/middlewares/rate-limit.mjs.map +1 -0
  56. package/build/middlewares/request-options.js +18 -27
  57. package/build/middlewares/request-options.js.map +1 -1
  58. package/build/middlewares/request-options.mjs +19 -0
  59. package/build/middlewares/request-options.mjs.map +1 -0
  60. package/build/middlewares/token-auth.js +90 -105
  61. package/build/middlewares/token-auth.js.map +1 -1
  62. package/build/middlewares/token-auth.mjs +100 -0
  63. package/build/middlewares/token-auth.mjs.map +1 -0
  64. package/build/middlewares/user-agent.js +10 -12
  65. package/build/middlewares/user-agent.js.map +1 -1
  66. package/build/middlewares/user-agent.mjs +13 -0
  67. package/build/middlewares/user-agent.mjs.map +1 -0
  68. package/build/middlewares/validation.js +10 -18
  69. package/build/middlewares/validation.js.map +1 -1
  70. package/build/middlewares/validation.mjs +14 -0
  71. package/build/middlewares/validation.mjs.map +1 -0
  72. package/build/middlewares/web/index.js +4 -35
  73. package/build/middlewares/web/index.mjs +4 -0
  74. package/build/middlewares/web/render-web.js +86 -115
  75. package/build/middlewares/web/render-web.js.map +1 -1
  76. package/build/middlewares/web/render-web.mjs +85 -0
  77. package/build/middlewares/web/render-web.mjs.map +1 -0
  78. package/build/middlewares/web/security.js +29 -41
  79. package/build/middlewares/web/security.js.map +1 -1
  80. package/build/middlewares/web/security.mjs +30 -0
  81. package/build/middlewares/web/security.mjs.map +1 -0
  82. package/build/middlewares/web/utils/manifest.js +17 -18
  83. package/build/middlewares/web/utils/manifest.js.map +1 -1
  84. package/build/middlewares/web/utils/manifest.mjs +21 -0
  85. package/build/middlewares/web/utils/manifest.mjs.map +1 -0
  86. package/build/middlewares/web/utils/renderHTML.js +46 -50
  87. package/build/middlewares/web/utils/renderHTML.js.map +1 -1
  88. package/build/middlewares/web/utils/renderHTML.mjs +48 -0
  89. package/build/middlewares/web/utils/renderHTML.mjs.map +1 -0
  90. package/build/middlewares/web/utils/template.js +19 -20
  91. package/build/middlewares/web/utils/template.js.map +1 -1
  92. package/build/middlewares/web/utils/template.mjs +33 -0
  93. package/build/middlewares/web/utils/template.mjs.map +1 -0
  94. package/build/middlewares/web/utils/ui-options.js +66 -82
  95. package/build/middlewares/web/utils/ui-options.js.map +1 -1
  96. package/build/middlewares/web/utils/ui-options.mjs +69 -0
  97. package/build/middlewares/web/utils/ui-options.mjs.map +1 -0
  98. package/build/middlewares/web/utils/web-utils.js +17 -18
  99. package/build/middlewares/web/utils/web-utils.js.map +1 -1
  100. package/build/middlewares/web/utils/web-utils.mjs +18 -0
  101. package/build/middlewares/web/utils/web-utils.mjs.map +1 -0
  102. package/build/middlewares/web/web-api.js +18 -27
  103. package/build/middlewares/web/web-api.js.map +1 -1
  104. package/build/middlewares/web/web-api.mjs +19 -0
  105. package/build/middlewares/web/web-api.mjs.map +1 -0
  106. package/build/middlewares/web/web-middleware.d.ts +1 -1
  107. package/build/middlewares/web/web-middleware.js +16 -23
  108. package/build/middlewares/web/web-middleware.js.map +1 -1
  109. package/build/middlewares/web/web-middleware.mjs +16 -0
  110. package/build/middlewares/web/web-middleware.mjs.map +1 -0
  111. package/build/middlewares/web/web-urls.js +28 -29
  112. package/build/middlewares/web/web-urls.js.map +1 -1
  113. package/build/middlewares/web/web-urls.mjs +32 -0
  114. package/build/middlewares/web/web-urls.mjs.map +1 -0
  115. package/package.json +47 -34
  116. package/build/index.js.map +0 -1
  117. package/build/middlewares/web/index.js.map +0 -1
  118. package/build/types.js +0 -6
  119. package/build/types.js.map +0 -1
@@ -0,0 +1,23 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
+ key = keys[i];
11
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: ((k) => from[k]).bind(null, key),
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
19
+ value: mod,
20
+ enumerable: true
21
+ }) : target, mod));
22
+ //#endregion
23
+ exports.__toESM = __toESM;
package/build/index.js CHANGED
@@ -1,229 +1,62 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- var _exportNames = {
7
- match: true,
8
- validateName: true,
9
- validatePackage: true,
10
- media: true,
11
- makeURLrelative: true,
12
- encodeScopePackage: true,
13
- expectJson: true,
14
- antiLoop: true,
15
- final: true,
16
- allow: true,
17
- enforceGeneratedTokenMetadata: true,
18
- rateLimit: true,
19
- registerBodyParser: true,
20
- userAgent: true,
21
- webMiddleware: true,
22
- renderWebMiddleware: true,
23
- setSecurityWebHeaders: true,
24
- errorReportingMiddleware: true,
25
- handleError: true,
26
- getRequestOptions: true,
27
- log: true,
28
- LOG_STATUS_MESSAGE: true,
29
- LOG_VERDACCIO_BYTES: true,
30
- LOG_VERDACCIO_ERROR: true
31
- };
32
- Object.defineProperty(exports, "LOG_STATUS_MESSAGE", {
33
- enumerable: true,
34
- get: function () {
35
- return _log.LOG_STATUS_MESSAGE;
36
- }
37
- });
38
- Object.defineProperty(exports, "LOG_VERDACCIO_BYTES", {
39
- enumerable: true,
40
- get: function () {
41
- return _log.LOG_VERDACCIO_BYTES;
42
- }
43
- });
44
- Object.defineProperty(exports, "LOG_VERDACCIO_ERROR", {
45
- enumerable: true,
46
- get: function () {
47
- return _log.LOG_VERDACCIO_ERROR;
48
- }
49
- });
50
- Object.defineProperty(exports, "allow", {
51
- enumerable: true,
52
- get: function () {
53
- return _allow.allow;
54
- }
55
- });
56
- Object.defineProperty(exports, "antiLoop", {
57
- enumerable: true,
58
- get: function () {
59
- return _antiLoop.antiLoop;
60
- }
61
- });
62
- Object.defineProperty(exports, "encodeScopePackage", {
63
- enumerable: true,
64
- get: function () {
65
- return _encodePkg.encodeScopePackage;
66
- }
67
- });
68
- Object.defineProperty(exports, "enforceGeneratedTokenMetadata", {
69
- enumerable: true,
70
- get: function () {
71
- return _tokenAuth.enforceGeneratedTokenMetadata;
72
- }
73
- });
74
- Object.defineProperty(exports, "errorReportingMiddleware", {
75
- enumerable: true,
76
- get: function () {
77
- return _error.errorReportingMiddleware;
78
- }
79
- });
80
- Object.defineProperty(exports, "expectJson", {
81
- enumerable: true,
82
- get: function () {
83
- return _json.expectJson;
84
- }
85
- });
86
- Object.defineProperty(exports, "final", {
87
- enumerable: true,
88
- get: function () {
89
- return _final.final;
90
- }
91
- });
92
- Object.defineProperty(exports, "getRequestOptions", {
93
- enumerable: true,
94
- get: function () {
95
- return _requestOptions.getRequestOptions;
96
- }
97
- });
98
- Object.defineProperty(exports, "handleError", {
99
- enumerable: true,
100
- get: function () {
101
- return _error.handleError;
102
- }
103
- });
104
- Object.defineProperty(exports, "log", {
105
- enumerable: true,
106
- get: function () {
107
- return _log.log;
108
- }
109
- });
110
- Object.defineProperty(exports, "makeURLrelative", {
111
- enumerable: true,
112
- get: function () {
113
- return _makeUrlRelative.makeURLrelative;
114
- }
115
- });
116
- Object.defineProperty(exports, "match", {
117
- enumerable: true,
118
- get: function () {
119
- return _match.match;
120
- }
121
- });
122
- Object.defineProperty(exports, "media", {
123
- enumerable: true,
124
- get: function () {
125
- return _media.media;
126
- }
127
- });
128
- Object.defineProperty(exports, "rateLimit", {
129
- enumerable: true,
130
- get: function () {
131
- return _rateLimit.rateLimit;
132
- }
133
- });
134
- Object.defineProperty(exports, "registerBodyParser", {
135
- enumerable: true,
136
- get: function () {
137
- return _bodyParser.registerBodyParser;
138
- }
139
- });
140
- Object.defineProperty(exports, "renderWebMiddleware", {
141
- enumerable: true,
142
- get: function () {
143
- return _web.renderWebMiddleware;
144
- }
145
- });
146
- Object.defineProperty(exports, "setSecurityWebHeaders", {
147
- enumerable: true,
148
- get: function () {
149
- return _web.setSecurityWebHeaders;
150
- }
151
- });
152
- Object.defineProperty(exports, "userAgent", {
153
- enumerable: true,
154
- get: function () {
155
- return _userAgent.userAgent;
156
- }
157
- });
158
- Object.defineProperty(exports, "validateName", {
159
- enumerable: true,
160
- get: function () {
161
- return _validation.validateName;
162
- }
163
- });
164
- Object.defineProperty(exports, "validatePackage", {
165
- enumerable: true,
166
- get: function () {
167
- return _validation.validatePackage;
168
- }
169
- });
170
- Object.defineProperty(exports, "webMiddleware", {
171
- enumerable: true,
172
- get: function () {
173
- return _web.webMiddleware;
174
- }
175
- });
176
- var _match = require("./middlewares/match");
177
- var _validation = require("./middlewares/validation");
178
- var _media = require("./middlewares/media");
179
- var _makeUrlRelative = require("./middlewares/make-url-relative");
180
- var _encodePkg = require("./middlewares/encode-pkg");
181
- var _json = require("./middlewares/json");
182
- var _antiLoop = require("./middlewares/antiLoop");
183
- var _final = require("./middlewares/final");
184
- var _allow = require("./middlewares/allow");
185
- var _tokenAuth = require("./middlewares/token-auth");
186
- var _rateLimit = require("./middlewares/rate-limit");
187
- var _bodyParser = require("./middlewares/body-parser");
188
- var _userAgent = require("./middlewares/user-agent");
189
- var _web = require("./middlewares/web");
190
- var _error = require("./middlewares/error");
191
- var _requestOptions = require("./middlewares/request-options");
192
- var _log = require("./middlewares/log");
193
- var _types = require("./types");
194
- Object.keys(_types).forEach(function (key) {
195
- if (key === "default" || key === "__esModule") return;
196
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
197
- if (key in exports && exports[key] === _types[key]) return;
198
- Object.defineProperty(exports, key, {
199
- enumerable: true,
200
- get: function () {
201
- return _types[key];
202
- }
203
- });
204
- });
205
- var _api_urls = require("./middlewares/api_urls");
206
- Object.keys(_api_urls).forEach(function (key) {
207
- if (key === "default" || key === "__esModule") return;
208
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
209
- if (key in exports && exports[key] === _api_urls[key]) return;
210
- Object.defineProperty(exports, key, {
211
- enumerable: true,
212
- get: function () {
213
- return _api_urls[key];
214
- }
215
- });
216
- });
217
- var _webUrls = require("./middlewares/web/web-urls");
218
- Object.keys(_webUrls).forEach(function (key) {
219
- if (key === "default" || key === "__esModule") return;
220
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
221
- if (key in exports && exports[key] === _webUrls[key]) return;
222
- Object.defineProperty(exports, key, {
223
- enumerable: true,
224
- get: function () {
225
- return _webUrls[key];
226
- }
227
- });
228
- });
229
- //# sourceMappingURL=index.js.map
1
+ Object.defineProperties(exports, {
2
+ __esModule: { value: true },
3
+ [Symbol.toStringTag]: { value: "Module" }
4
+ });
5
+ const require_match = require("./middlewares/match.js");
6
+ const require_validation = require("./middlewares/validation.js");
7
+ const require_media = require("./middlewares/media.js");
8
+ const require_make_url_relative = require("./middlewares/make-url-relative.js");
9
+ const require_encode_pkg = require("./middlewares/encode-pkg.js");
10
+ const require_json = require("./middlewares/json.js");
11
+ const require_antiLoop = require("./middlewares/antiLoop.js");
12
+ const require_final = require("./middlewares/final.js");
13
+ const require_allow = require("./middlewares/allow.js");
14
+ const require_token_auth = require("./middlewares/token-auth.js");
15
+ const require_rate_limit = require("./middlewares/rate-limit.js");
16
+ const require_body_parser = require("./middlewares/body-parser.js");
17
+ const require_user_agent = require("./middlewares/user-agent.js");
18
+ const require_security = require("./middlewares/web/security.js");
19
+ const require_web_urls = require("./middlewares/web/web-urls.js");
20
+ const require_render_web = require("./middlewares/web/render-web.js");
21
+ const require_web_middleware = require("./middlewares/web/web-middleware.js");
22
+ require("./middlewares/web/index.js");
23
+ const require_error = require("./middlewares/error.js");
24
+ const require_request_options = require("./middlewares/request-options.js");
25
+ const require_log = require("./middlewares/log.js");
26
+ const require_api_urls = require("./middlewares/api_urls.js");
27
+ exports.DIST_TAGS_API_ENDPOINTS = require_api_urls.DIST_TAGS_API_ENDPOINTS;
28
+ exports.LOGIN_API_ENDPOINTS = require_api_urls.LOGIN_API_ENDPOINTS;
29
+ exports.LOG_STATUS_MESSAGE = require_log.LOG_STATUS_MESSAGE;
30
+ exports.LOG_VERDACCIO_BYTES = require_log.LOG_VERDACCIO_BYTES;
31
+ exports.LOG_VERDACCIO_ERROR = require_log.LOG_VERDACCIO_ERROR;
32
+ exports.PACKAGE_API_ENDPOINTS = require_api_urls.PACKAGE_API_ENDPOINTS;
33
+ exports.PING_API_ENDPOINTS = require_api_urls.PING_API_ENDPOINTS;
34
+ exports.PROFILE_API_ENDPOINTS = require_api_urls.PROFILE_API_ENDPOINTS;
35
+ exports.PUBLISH_API_ENDPOINTS = require_api_urls.PUBLISH_API_ENDPOINTS;
36
+ exports.SEARCH_API_ENDPOINTS = require_api_urls.SEARCH_API_ENDPOINTS;
37
+ exports.STARS_API_ENDPOINTS = require_api_urls.STARS_API_ENDPOINTS;
38
+ exports.TOKEN_API_ENDPOINTS = require_api_urls.TOKEN_API_ENDPOINTS;
39
+ exports.USER_API_ENDPOINTS = require_api_urls.USER_API_ENDPOINTS;
40
+ exports.WebUrls = require_web_urls.WebUrls;
41
+ exports.WebUrlsNamespace = require_web_urls.WebUrlsNamespace;
42
+ exports.allow = require_allow.allow;
43
+ exports.antiLoop = require_antiLoop.antiLoop;
44
+ exports.encodeScopePackage = require_encode_pkg.encodeScopePackage;
45
+ exports.enforceGeneratedTokenMetadata = require_token_auth.enforceGeneratedTokenMetadata;
46
+ exports.errorReportingMiddleware = require_error.errorReportingMiddleware;
47
+ exports.expectJson = require_json.expectJson;
48
+ exports.final = require_final.final;
49
+ exports.getRequestOptions = require_request_options.getRequestOptions;
50
+ exports.handleError = require_error.handleError;
51
+ exports.log = require_log.log;
52
+ exports.makeURLrelative = require_make_url_relative.makeURLrelative;
53
+ exports.match = require_match.match;
54
+ exports.media = require_media.media;
55
+ exports.rateLimit = require_rate_limit.rateLimit;
56
+ exports.registerBodyParser = require_body_parser.registerBodyParser;
57
+ exports.renderWebMiddleware = require_render_web.renderWebMiddleware;
58
+ exports.setSecurityWebHeaders = require_security.setSecurityWebHeaders;
59
+ exports.userAgent = require_user_agent.userAgent;
60
+ exports.validateName = require_validation.validateName;
61
+ exports.validatePackage = require_validation.validatePackage;
62
+ exports.webMiddleware = require_web_middleware.default;
@@ -0,0 +1,23 @@
1
+ import { match } from "./middlewares/match.mjs";
2
+ import { validateName, validatePackage } from "./middlewares/validation.mjs";
3
+ import { media } from "./middlewares/media.mjs";
4
+ import { makeURLrelative } from "./middlewares/make-url-relative.mjs";
5
+ import { encodeScopePackage } from "./middlewares/encode-pkg.mjs";
6
+ import { expectJson } from "./middlewares/json.mjs";
7
+ import { antiLoop } from "./middlewares/antiLoop.mjs";
8
+ import { final } from "./middlewares/final.mjs";
9
+ import { allow } from "./middlewares/allow.mjs";
10
+ import { enforceGeneratedTokenMetadata } from "./middlewares/token-auth.mjs";
11
+ import { rateLimit } from "./middlewares/rate-limit.mjs";
12
+ import { registerBodyParser } from "./middlewares/body-parser.mjs";
13
+ import { userAgent } from "./middlewares/user-agent.mjs";
14
+ import { setSecurityWebHeaders } from "./middlewares/web/security.mjs";
15
+ import { WebUrls, WebUrlsNamespace } from "./middlewares/web/web-urls.mjs";
16
+ import { renderWebMiddleware } from "./middlewares/web/render-web.mjs";
17
+ import web_middleware_default from "./middlewares/web/web-middleware.mjs";
18
+ import "./middlewares/web/index.mjs";
19
+ import { errorReportingMiddleware, handleError } from "./middlewares/error.mjs";
20
+ import { getRequestOptions } from "./middlewares/request-options.mjs";
21
+ import { LOG_STATUS_MESSAGE, LOG_VERDACCIO_BYTES, LOG_VERDACCIO_ERROR, log } from "./middlewares/log.mjs";
22
+ import { DIST_TAGS_API_ENDPOINTS, LOGIN_API_ENDPOINTS, PACKAGE_API_ENDPOINTS, PING_API_ENDPOINTS, PROFILE_API_ENDPOINTS, PUBLISH_API_ENDPOINTS, SEARCH_API_ENDPOINTS, STARS_API_ENDPOINTS, TOKEN_API_ENDPOINTS, USER_API_ENDPOINTS } from "./middlewares/api_urls.mjs";
23
+ export { DIST_TAGS_API_ENDPOINTS, LOGIN_API_ENDPOINTS, LOG_STATUS_MESSAGE, LOG_VERDACCIO_BYTES, LOG_VERDACCIO_ERROR, PACKAGE_API_ENDPOINTS, PING_API_ENDPOINTS, PROFILE_API_ENDPOINTS, PUBLISH_API_ENDPOINTS, SEARCH_API_ENDPOINTS, STARS_API_ENDPOINTS, TOKEN_API_ENDPOINTS, USER_API_ENDPOINTS, WebUrls, WebUrlsNamespace, allow, antiLoop, encodeScopePackage, enforceGeneratedTokenMetadata, errorReportingMiddleware, expectJson, final, getRequestOptions, handleError, log, makeURLrelative, match, media, rateLimit, registerBodyParser, renderWebMiddleware, setSecurityWebHeaders, userAgent, validateName, validatePackage, web_middleware_default as webMiddleware };
@@ -1,54 +1,46 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.allow = allow;
7
- var _debug = _interopRequireDefault(require("debug"));
8
- var _core = require("@verdaccio/core");
9
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
- const debug = (0, _debug.default)('verdaccio:middleware:allow');
1
+ const require_runtime = require("../_virtual/_rolldown/runtime.js");
2
+ let _verdaccio_core = require("@verdaccio/core");
3
+ let debug = require("debug");
4
+ debug = require_runtime.__toESM(debug);
5
+ //#region src/middlewares/allow.ts
6
+ var debug$1 = (0, debug.default)("verdaccio:middleware:allow");
11
7
  function allow(auth, options = {
12
- beforeAll: (_a, _b) => {},
13
- afterAll: (_a, _b) => {}
8
+ beforeAll: (_a, _b) => {},
9
+ afterAll: (_a, _b) => {}
14
10
  }) {
15
- const {
16
- beforeAll,
17
- afterAll
18
- } = options;
19
- return function (action) {
20
- return function (req, res, next) {
21
- req.pause();
22
- const packageName = req.params.scope ? `${req.params.scope}/${req.params.package}` : req.params.package;
23
- const packageVersion = req.params.filename ? _core.tarballUtils.getVersionFromTarball(req.params.filename) : req.params.version ? req.params.version : undefined;
24
- const remote_user = req.remote_user;
25
- debug('check if user %o can %o package %o version %o', remote_user?.name, action, packageName, packageVersion);
26
- beforeAll?.({
27
- action,
28
- user: remote_user?.name
29
- }, `[middleware/allow][@{action}] allow for @{user}`);
30
- auth['allow_' + action]({
31
- packageName,
32
- packageVersion
33
- }, remote_user, function (error, allowed) {
34
- req.resume();
35
- if (error) {
36
- debug('user is NOT allowed to %o', action);
37
- next(error);
38
- } else if (allowed) {
39
- debug('user is allowed to %o', action);
40
- afterAll?.({
41
- action,
42
- user: remote_user?.name
43
- }, `[middleware/allow][@{action}] allowed for @{user}`);
44
- next();
45
- } else {
46
- // last plugin (that's our built-in one) returns either
47
- // cb(err) or cb(null, true), so this should never happen
48
- throw _core.errorUtils.getInternalError(_core.API_ERROR.PLUGIN_ERROR);
49
- }
50
- });
51
- };
52
- };
11
+ const { beforeAll, afterAll } = options;
12
+ return function(action) {
13
+ return function(req, res, next) {
14
+ req.pause();
15
+ const packageName = req.params.scope ? `${req.params.scope}/${req.params.package}` : req.params.package;
16
+ const packageVersion = req.params.filename ? _verdaccio_core.tarballUtils.getVersionFromTarball(req.params.filename) : req.params.version ? req.params.version : void 0;
17
+ const remote_user = req.remote_user;
18
+ debug$1("check if user %o can %o package %o version %o", remote_user?.name, action, packageName, packageVersion);
19
+ beforeAll?.({
20
+ action,
21
+ user: remote_user?.name
22
+ }, `[middleware/allow][@{action}] allow for @{user}`);
23
+ auth["allow_" + action]({
24
+ packageName,
25
+ packageVersion
26
+ }, remote_user, function(error, allowed) {
27
+ req.resume();
28
+ if (error) {
29
+ debug$1("user is NOT allowed to %o", action);
30
+ next(error);
31
+ } else if (allowed) {
32
+ debug$1("user is allowed to %o", action);
33
+ afterAll?.({
34
+ action,
35
+ user: remote_user?.name
36
+ }, `[middleware/allow][@{action}] allowed for @{user}`);
37
+ next();
38
+ } else throw _verdaccio_core.errorUtils.getInternalError(_verdaccio_core.API_ERROR.PLUGIN_ERROR);
39
+ });
40
+ };
41
+ };
53
42
  }
43
+ //#endregion
44
+ exports.allow = allow;
45
+
54
46
  //# sourceMappingURL=allow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"allow.js","names":["_debug","_interopRequireDefault","require","_core","e","__esModule","default","debug","buildDebug","allow","auth","options","beforeAll","_a","_b","afterAll","action","req","res","next","pause","packageName","params","scope","package","packageVersion","filename","tarballUtils","getVersionFromTarball","version","undefined","remote_user","name","user","error","allowed","resume","errorUtils","getInternalError","API_ERROR","PLUGIN_ERROR"],"sources":["../../src/middlewares/allow.ts"],"sourcesContent":["import buildDebug from 'debug';\n\nimport { API_ERROR, errorUtils, tarballUtils } from '@verdaccio/core';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types';\n\nconst debug = buildDebug('verdaccio:middleware:allow');\n\nexport function allow<T>(\n auth: T,\n options = {\n beforeAll: (_a: any, _b: any) => {},\n\n afterAll: (_a: any, _b: any) => {},\n }\n): Function {\n const { beforeAll, afterAll } = options;\n return function (action: string): Function {\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n req.pause();\n const packageName = req.params.scope\n ? `${req.params.scope}/${req.params.package}`\n : req.params.package;\n const packageVersion = req.params.filename\n ? tarballUtils.getVersionFromTarball(req.params.filename)\n : req.params.version\n ? req.params.version\n : undefined;\n const remote_user = req.remote_user;\n debug(\n 'check if user %o can %o package %o version %o',\n remote_user?.name,\n action,\n packageName,\n packageVersion\n );\n beforeAll?.(\n { action, user: remote_user?.name },\n `[middleware/allow][@{action}] allow for @{user}`\n );\n auth['allow_' + action](\n { packageName, packageVersion },\n remote_user,\n function (error, allowed): void {\n req.resume();\n if (error) {\n debug('user is NOT allowed to %o', action);\n next(error);\n } else if (allowed) {\n debug('user is allowed to %o', action);\n afterAll?.(\n { action, user: remote_user?.name },\n `[middleware/allow][@{action}] allowed for @{user}`\n );\n next();\n } else {\n // last plugin (that's our built-in one) returns either\n // cb(err) or cb(null, true), so this should never happen\n throw errorUtils.getInternalError(API_ERROR.PLUGIN_ERROR);\n }\n }\n );\n };\n };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AAAsE,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAItE,MAAMG,KAAK,GAAG,IAAAC,cAAU,EAAC,4BAA4B,CAAC;AAE/C,SAASC,KAAKA,CACnBC,IAAO,EACPC,OAAO,GAAG;EACRC,SAAS,EAAEA,CAACC,EAAO,EAAEC,EAAO,KAAK,CAAC,CAAC;EAEnCC,QAAQ,EAAEA,CAACF,EAAO,EAAEC,EAAO,KAAK,CAAC;AACnC,CAAC,EACS;EACV,MAAM;IAAEF,SAAS;IAAEG;EAAS,CAAC,GAAGJ,OAAO;EACvC,OAAO,UAAUK,MAAc,EAAY;IACzC,OAAO,UAAUC,GAAmB,EAAEC,GAAoB,EAAEC,IAAsB,EAAQ;MACxFF,GAAG,CAACG,KAAK,CAAC,CAAC;MACX,MAAMC,WAAW,GAAGJ,GAAG,CAACK,MAAM,CAACC,KAAK,GAChC,GAAGN,GAAG,CAACK,MAAM,CAACC,KAAK,IAAIN,GAAG,CAACK,MAAM,CAACE,OAAO,EAAE,GAC3CP,GAAG,CAACK,MAAM,CAACE,OAAO;MACtB,MAAMC,cAAc,GAAGR,GAAG,CAACK,MAAM,CAACI,QAAQ,GACtCC,kBAAY,CAACC,qBAAqB,CAACX,GAAG,CAACK,MAAM,CAACI,QAAQ,CAAC,GACvDT,GAAG,CAACK,MAAM,CAACO,OAAO,GAChBZ,GAAG,CAACK,MAAM,CAACO,OAAO,GAClBC,SAAS;MACf,MAAMC,WAAW,GAAGd,GAAG,CAACc,WAAW;MACnCxB,KAAK,CACH,+CAA+C,EAC/CwB,WAAW,EAAEC,IAAI,EACjBhB,MAAM,EACNK,WAAW,EACXI,cACF,CAAC;MACDb,SAAS,GACP;QAAEI,MAAM;QAAEiB,IAAI,EAAEF,WAAW,EAAEC;MAAK,CAAC,EACnC,iDACF,CAAC;MACDtB,IAAI,CAAC,QAAQ,GAAGM,MAAM,CAAC,CACrB;QAAEK,WAAW;QAAEI;MAAe,CAAC,EAC/BM,WAAW,EACX,UAAUG,KAAK,EAAEC,OAAO,EAAQ;QAC9BlB,GAAG,CAACmB,MAAM,CAAC,CAAC;QACZ,IAAIF,KAAK,EAAE;UACT3B,KAAK,CAAC,2BAA2B,EAAES,MAAM,CAAC;UAC1CG,IAAI,CAACe,KAAK,CAAC;QACb,CAAC,MAAM,IAAIC,OAAO,EAAE;UAClB5B,KAAK,CAAC,uBAAuB,EAAES,MAAM,CAAC;UACtCD,QAAQ,GACN;YAAEC,MAAM;YAAEiB,IAAI,EAAEF,WAAW,EAAEC;UAAK,CAAC,EACnC,mDACF,CAAC;UACDb,IAAI,CAAC,CAAC;QACR,CAAC,MAAM;UACL;UACA;UACA,MAAMkB,gBAAU,CAACC,gBAAgB,CAACC,eAAS,CAACC,YAAY,CAAC;QAC3D;MACF,CACF,CAAC;IACH,CAAC;EACH,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"file":"allow.js","names":[],"sources":["../../src/middlewares/allow.ts"],"sourcesContent":["import buildDebug from 'debug';\n\nimport { API_ERROR, errorUtils, tarballUtils } from '@verdaccio/core';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types';\n\nconst debug = buildDebug('verdaccio:middleware:allow');\n\nexport function allow<T>(\n auth: T,\n options = {\n beforeAll: (_a: any, _b: any) => {},\n\n afterAll: (_a: any, _b: any) => {},\n }\n): Function {\n const { beforeAll, afterAll } = options;\n return function (action: string): Function {\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n req.pause();\n const packageName = req.params.scope\n ? `${req.params.scope}/${req.params.package}`\n : req.params.package;\n const packageVersion = req.params.filename\n ? tarballUtils.getVersionFromTarball(req.params.filename)\n : req.params.version\n ? req.params.version\n : undefined;\n const remote_user = req.remote_user;\n debug(\n 'check if user %o can %o package %o version %o',\n remote_user?.name,\n action,\n packageName,\n packageVersion\n );\n beforeAll?.(\n { action, user: remote_user?.name },\n `[middleware/allow][@{action}] allow for @{user}`\n );\n auth['allow_' + action](\n { packageName, packageVersion },\n remote_user,\n function (error, allowed): void {\n req.resume();\n if (error) {\n debug('user is NOT allowed to %o', action);\n next(error);\n } else if (allowed) {\n debug('user is allowed to %o', action);\n afterAll?.(\n { action, user: remote_user?.name },\n `[middleware/allow][@{action}] allowed for @{user}`\n );\n next();\n } else {\n // last plugin (that's our built-in one) returns either\n // cb(err) or cb(null, true), so this should never happen\n throw errorUtils.getInternalError(API_ERROR.PLUGIN_ERROR);\n }\n }\n );\n };\n };\n}\n"],"mappings":";;;;;AAMA,IAAM,WAAA,GAAA,MAAA,SAAmB,4BAA4B;AAErD,SAAgB,MACd,MACA,UAAU;CACR,YAAY,IAAS,OAAY,CAAC;CAElC,WAAW,IAAS,OAAY,CAAC;AACnC,GACU;CACV,MAAM,EAAE,WAAW,aAAa;CAChC,OAAO,SAAU,QAA0B;EACzC,OAAO,SAAU,KAAqB,KAAsB,MAA8B;GACxF,IAAI,MAAM;GACV,MAAM,cAAc,IAAI,OAAO,QAC3B,GAAG,IAAI,OAAO,MAAM,GAAG,IAAI,OAAO,YAClC,IAAI,OAAO;GACf,MAAM,iBAAiB,IAAI,OAAO,WAC9B,gBAAA,aAAa,sBAAsB,IAAI,OAAO,QAAQ,IACtD,IAAI,OAAO,UACT,IAAI,OAAO,UACX,KAAA;GACN,MAAM,cAAc,IAAI;GACxB,QACE,iDACA,aAAa,MACb,QACA,aACA,cACF;GACA,YACE;IAAE;IAAQ,MAAM,aAAa;GAAK,GAClC,iDACF;GACA,KAAK,WAAW,QACd;IAAE;IAAa;GAAe,GAC9B,aACA,SAAU,OAAO,SAAe;IAC9B,IAAI,OAAO;IACX,IAAI,OAAO;KACT,QAAM,6BAA6B,MAAM;KACzC,KAAK,KAAK;IACZ,OAAO,IAAI,SAAS;KAClB,QAAM,yBAAyB,MAAM;KACrC,WACE;MAAE;MAAQ,MAAM,aAAa;KAAK,GAClC,mDACF;KACA,KAAK;IACP,OAGE,MAAM,gBAAA,WAAW,iBAAiB,gBAAA,UAAU,YAAY;GAE5D,CACF;EACF;CACF;AACF"}
@@ -0,0 +1,44 @@
1
+ import { API_ERROR, errorUtils, tarballUtils } from "@verdaccio/core";
2
+ import buildDebug from "debug";
3
+ //#region src/middlewares/allow.ts
4
+ var debug = buildDebug("verdaccio:middleware:allow");
5
+ function allow(auth, options = {
6
+ beforeAll: (_a, _b) => {},
7
+ afterAll: (_a, _b) => {}
8
+ }) {
9
+ const { beforeAll, afterAll } = options;
10
+ return function(action) {
11
+ return function(req, res, next) {
12
+ req.pause();
13
+ const packageName = req.params.scope ? `${req.params.scope}/${req.params.package}` : req.params.package;
14
+ const packageVersion = req.params.filename ? tarballUtils.getVersionFromTarball(req.params.filename) : req.params.version ? req.params.version : void 0;
15
+ const remote_user = req.remote_user;
16
+ debug("check if user %o can %o package %o version %o", remote_user?.name, action, packageName, packageVersion);
17
+ beforeAll?.({
18
+ action,
19
+ user: remote_user?.name
20
+ }, `[middleware/allow][@{action}] allow for @{user}`);
21
+ auth["allow_" + action]({
22
+ packageName,
23
+ packageVersion
24
+ }, remote_user, function(error, allowed) {
25
+ req.resume();
26
+ if (error) {
27
+ debug("user is NOT allowed to %o", action);
28
+ next(error);
29
+ } else if (allowed) {
30
+ debug("user is allowed to %o", action);
31
+ afterAll?.({
32
+ action,
33
+ user: remote_user?.name
34
+ }, `[middleware/allow][@{action}] allowed for @{user}`);
35
+ next();
36
+ } else throw errorUtils.getInternalError(API_ERROR.PLUGIN_ERROR);
37
+ });
38
+ };
39
+ };
40
+ }
41
+ //#endregion
42
+ export { allow };
43
+
44
+ //# sourceMappingURL=allow.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allow.mjs","names":[],"sources":["../../src/middlewares/allow.ts"],"sourcesContent":["import buildDebug from 'debug';\n\nimport { API_ERROR, errorUtils, tarballUtils } from '@verdaccio/core';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types';\n\nconst debug = buildDebug('verdaccio:middleware:allow');\n\nexport function allow<T>(\n auth: T,\n options = {\n beforeAll: (_a: any, _b: any) => {},\n\n afterAll: (_a: any, _b: any) => {},\n }\n): Function {\n const { beforeAll, afterAll } = options;\n return function (action: string): Function {\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n req.pause();\n const packageName = req.params.scope\n ? `${req.params.scope}/${req.params.package}`\n : req.params.package;\n const packageVersion = req.params.filename\n ? tarballUtils.getVersionFromTarball(req.params.filename)\n : req.params.version\n ? req.params.version\n : undefined;\n const remote_user = req.remote_user;\n debug(\n 'check if user %o can %o package %o version %o',\n remote_user?.name,\n action,\n packageName,\n packageVersion\n );\n beforeAll?.(\n { action, user: remote_user?.name },\n `[middleware/allow][@{action}] allow for @{user}`\n );\n auth['allow_' + action](\n { packageName, packageVersion },\n remote_user,\n function (error, allowed): void {\n req.resume();\n if (error) {\n debug('user is NOT allowed to %o', action);\n next(error);\n } else if (allowed) {\n debug('user is allowed to %o', action);\n afterAll?.(\n { action, user: remote_user?.name },\n `[middleware/allow][@{action}] allowed for @{user}`\n );\n next();\n } else {\n // last plugin (that's our built-in one) returns either\n // cb(err) or cb(null, true), so this should never happen\n throw errorUtils.getInternalError(API_ERROR.PLUGIN_ERROR);\n }\n }\n );\n };\n };\n}\n"],"mappings":";;;AAMA,IAAM,QAAQ,WAAW,4BAA4B;AAErD,SAAgB,MACd,MACA,UAAU;CACR,YAAY,IAAS,OAAY,CAAC;CAElC,WAAW,IAAS,OAAY,CAAC;AACnC,GACU;CACV,MAAM,EAAE,WAAW,aAAa;CAChC,OAAO,SAAU,QAA0B;EACzC,OAAO,SAAU,KAAqB,KAAsB,MAA8B;GACxF,IAAI,MAAM;GACV,MAAM,cAAc,IAAI,OAAO,QAC3B,GAAG,IAAI,OAAO,MAAM,GAAG,IAAI,OAAO,YAClC,IAAI,OAAO;GACf,MAAM,iBAAiB,IAAI,OAAO,WAC9B,aAAa,sBAAsB,IAAI,OAAO,QAAQ,IACtD,IAAI,OAAO,UACT,IAAI,OAAO,UACX,KAAA;GACN,MAAM,cAAc,IAAI;GACxB,MACE,iDACA,aAAa,MACb,QACA,aACA,cACF;GACA,YACE;IAAE;IAAQ,MAAM,aAAa;GAAK,GAClC,iDACF;GACA,KAAK,WAAW,QACd;IAAE;IAAa;GAAe,GAC9B,aACA,SAAU,OAAO,SAAe;IAC9B,IAAI,OAAO;IACX,IAAI,OAAO;KACT,MAAM,6BAA6B,MAAM;KACzC,KAAK,KAAK;IACZ,OAAO,IAAI,SAAS;KAClB,MAAM,yBAAyB,MAAM;KACrC,WACE;MAAE;MAAQ,MAAM,aAAa;KAAK,GAClC,mDACF;KACA,KAAK;IACP,OAGE,MAAM,WAAW,iBAAiB,UAAU,YAAY;GAE5D,CACF;EACF;CACF;AACF"}
@@ -1,44 +1,25 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.antiLoop = antiLoop;
7
- var _core = require("@verdaccio/core");
1
+ let _verdaccio_core = require("@verdaccio/core");
2
+ //#region src/middlewares/antiLoop.ts
8
3
  /**
9
- * A middleware that avoid a registry points itself as proxy and avoid create infinite loops.
10
- * @param config
11
- * @returns
12
- */
4
+ * A middleware that avoid a registry points itself as proxy and avoid create infinite loops.
5
+ * @param config
6
+ * @returns
7
+ */
13
8
  function antiLoop(config) {
14
- return function (req, res, next) {
15
- if (req?.headers?.via != null) {
16
- const arr = req.get('via')?.split(',');
17
- if (Array.isArray(arr)) {
18
- for (let i = 0; i < arr.length; i++) {
19
- // the "via" header must contain a specific value, this has to be in sync
20
- // with the proxy request
21
- // match eg: Server 1 or Server 2
22
-
23
- // RFC 7230: Via = 1*( "," OWS Via-value )
24
- // Via-value = received-protocol RWS received-by [ RWS comment ]
25
- // received-protocol = [ protocol-name "/" ] protocol-version
26
- // received-by = ( uri-host [ ":" port ] ) / pseudonym
27
-
28
- // Split the trimmed header value into parts
29
- const parts = arr[i].trim().split(/\s+/);
30
- // Check if we have at least protocol/version and received-by parts
31
- if (parts.length >= 2) {
32
- // Get the received-by value (server id), removing any comment
33
- const serverId = parts[1].split('(')[0].trim();
34
- if (serverId === config.server_id) {
35
- return next(_core.errorUtils.getCode(_core.HTTP_STATUS.LOOP_DETECTED, 'loop detected'));
36
- }
37
- }
38
- }
39
- }
40
- }
41
- next();
42
- };
9
+ return function(req, res, next) {
10
+ if (req?.headers?.via != null) {
11
+ const arr = req.get("via")?.split(",");
12
+ if (Array.isArray(arr)) for (let i = 0; i < arr.length; i++) {
13
+ const parts = arr[i].trim().split(/\s+/);
14
+ if (parts.length >= 2) {
15
+ if (parts[1].split("(")[0].trim() === config.server_id) return next(_verdaccio_core.errorUtils.getCode(_verdaccio_core.HTTP_STATUS.LOOP_DETECTED, "loop detected"));
16
+ }
17
+ }
18
+ }
19
+ next();
20
+ };
43
21
  }
22
+ //#endregion
23
+ exports.antiLoop = antiLoop;
24
+
44
25
  //# sourceMappingURL=antiLoop.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"antiLoop.js","names":["_core","require","antiLoop","config","req","res","next","headers","via","arr","get","split","Array","isArray","i","length","parts","trim","serverId","server_id","errorUtils","getCode","HTTP_STATUS","LOOP_DETECTED"],"sources":["../../src/middlewares/antiLoop.ts"],"sourcesContent":["import { HTTP_STATUS, errorUtils } from '@verdaccio/core';\nimport type { Config } from '@verdaccio/types';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types';\n\n/**\n * A middleware that avoid a registry points itself as proxy and avoid create infinite loops.\n * @param config\n * @returns\n */\nexport function antiLoop(config: Config) {\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n if (req?.headers?.via != null) {\n const arr = req.get('via')?.split(',');\n if (Array.isArray(arr)) {\n for (let i = 0; i < arr.length; i++) {\n // the \"via\" header must contain a specific value, this has to be in sync\n // with the proxy request\n // match eg: Server 1 or Server 2\n\n // RFC 7230: Via = 1*( \",\" OWS Via-value )\n // Via-value = received-protocol RWS received-by [ RWS comment ]\n // received-protocol = [ protocol-name \"/\" ] protocol-version\n // received-by = ( uri-host [ \":\" port ] ) / pseudonym\n\n // Split the trimmed header value into parts\n const parts = arr[i].trim().split(/\\s+/);\n // Check if we have at least protocol/version and received-by parts\n if (parts.length >= 2) {\n // Get the received-by value (server id), removing any comment\n const serverId = parts[1].split('(')[0].trim();\n if (serverId === config.server_id) {\n return next(errorUtils.getCode(HTTP_STATUS.LOOP_DETECTED, 'loop detected'));\n }\n }\n }\n }\n }\n next();\n };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAKA;AACA;AACA;AACA;AACA;AACO,SAASC,QAAQA,CAACC,MAAc,EAAE;EACvC,OAAO,UAAUC,GAAmB,EAAEC,GAAoB,EAAEC,IAAsB,EAAQ;IACxF,IAAIF,GAAG,EAAEG,OAAO,EAAEC,GAAG,IAAI,IAAI,EAAE;MAC7B,MAAMC,GAAG,GAAGL,GAAG,CAACM,GAAG,CAAC,KAAK,CAAC,EAAEC,KAAK,CAAC,GAAG,CAAC;MACtC,IAAIC,KAAK,CAACC,OAAO,CAACJ,GAAG,CAAC,EAAE;QACtB,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,GAAG,CAACM,MAAM,EAAED,CAAC,EAAE,EAAE;UACnC;UACA;UACA;;UAEA;UACA;UACA;UACA;;UAEA;UACA,MAAME,KAAK,GAAGP,GAAG,CAACK,CAAC,CAAC,CAACG,IAAI,CAAC,CAAC,CAACN,KAAK,CAAC,KAAK,CAAC;UACxC;UACA,IAAIK,KAAK,CAACD,MAAM,IAAI,CAAC,EAAE;YACrB;YACA,MAAMG,QAAQ,GAAGF,KAAK,CAAC,CAAC,CAAC,CAACL,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAACM,IAAI,CAAC,CAAC;YAC9C,IAAIC,QAAQ,KAAKf,MAAM,CAACgB,SAAS,EAAE;cACjC,OAAOb,IAAI,CAACc,gBAAU,CAACC,OAAO,CAACC,iBAAW,CAACC,aAAa,EAAE,eAAe,CAAC,CAAC;YAC7E;UACF;QACF;MACF;IACF;IACAjB,IAAI,CAAC,CAAC;EACR,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"file":"antiLoop.js","names":[],"sources":["../../src/middlewares/antiLoop.ts"],"sourcesContent":["import { HTTP_STATUS, errorUtils } from '@verdaccio/core';\nimport type { Config } from '@verdaccio/types';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types';\n\n/**\n * A middleware that avoid a registry points itself as proxy and avoid create infinite loops.\n * @param config\n * @returns\n */\nexport function antiLoop(config: Config) {\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n if (req?.headers?.via != null) {\n const arr = req.get('via')?.split(',');\n if (Array.isArray(arr)) {\n for (let i = 0; i < arr.length; i++) {\n // the \"via\" header must contain a specific value, this has to be in sync\n // with the proxy request\n // match eg: Server 1 or Server 2\n\n // RFC 7230: Via = 1*( \",\" OWS Via-value )\n // Via-value = received-protocol RWS received-by [ RWS comment ]\n // received-protocol = [ protocol-name \"/\" ] protocol-version\n // received-by = ( uri-host [ \":\" port ] ) / pseudonym\n\n // Split the trimmed header value into parts\n const parts = arr[i].trim().split(/\\s+/);\n // Check if we have at least protocol/version and received-by parts\n if (parts.length >= 2) {\n // Get the received-by value (server id), removing any comment\n const serverId = parts[1].split('(')[0].trim();\n if (serverId === config.server_id) {\n return next(errorUtils.getCode(HTTP_STATUS.LOOP_DETECTED, 'loop detected'));\n }\n }\n }\n }\n }\n next();\n };\n}\n"],"mappings":";;;;;;;AAUA,SAAgB,SAAS,QAAgB;CACvC,OAAO,SAAU,KAAqB,KAAsB,MAA8B;EACxF,IAAI,KAAK,SAAS,OAAO,MAAM;GAC7B,MAAM,MAAM,IAAI,IAAI,KAAK,GAAG,MAAM,GAAG;GACrC,IAAI,MAAM,QAAQ,GAAG,GACnB,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;IAWnC,MAAM,QAAQ,IAAI,GAAG,KAAK,EAAE,MAAM,KAAK;IAEvC,IAAI,MAAM,UAAU;SAED,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,KACpC,MAAa,OAAO,WACtB,OAAO,KAAK,gBAAA,WAAW,QAAQ,gBAAA,YAAY,eAAe,eAAe,CAAC;IAAA;GAGhF;EAEJ;EACA,KAAK;CACP;AACF"}
@@ -0,0 +1,25 @@
1
+ import { HTTP_STATUS, errorUtils } from "@verdaccio/core";
2
+ //#region src/middlewares/antiLoop.ts
3
+ /**
4
+ * A middleware that avoid a registry points itself as proxy and avoid create infinite loops.
5
+ * @param config
6
+ * @returns
7
+ */
8
+ function antiLoop(config) {
9
+ return function(req, res, next) {
10
+ if (req?.headers?.via != null) {
11
+ const arr = req.get("via")?.split(",");
12
+ if (Array.isArray(arr)) for (let i = 0; i < arr.length; i++) {
13
+ const parts = arr[i].trim().split(/\s+/);
14
+ if (parts.length >= 2) {
15
+ if (parts[1].split("(")[0].trim() === config.server_id) return next(errorUtils.getCode(HTTP_STATUS.LOOP_DETECTED, "loop detected"));
16
+ }
17
+ }
18
+ }
19
+ next();
20
+ };
21
+ }
22
+ //#endregion
23
+ export { antiLoop };
24
+
25
+ //# sourceMappingURL=antiLoop.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antiLoop.mjs","names":[],"sources":["../../src/middlewares/antiLoop.ts"],"sourcesContent":["import { HTTP_STATUS, errorUtils } from '@verdaccio/core';\nimport type { Config } from '@verdaccio/types';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types';\n\n/**\n * A middleware that avoid a registry points itself as proxy and avoid create infinite loops.\n * @param config\n * @returns\n */\nexport function antiLoop(config: Config) {\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n if (req?.headers?.via != null) {\n const arr = req.get('via')?.split(',');\n if (Array.isArray(arr)) {\n for (let i = 0; i < arr.length; i++) {\n // the \"via\" header must contain a specific value, this has to be in sync\n // with the proxy request\n // match eg: Server 1 or Server 2\n\n // RFC 7230: Via = 1*( \",\" OWS Via-value )\n // Via-value = received-protocol RWS received-by [ RWS comment ]\n // received-protocol = [ protocol-name \"/\" ] protocol-version\n // received-by = ( uri-host [ \":\" port ] ) / pseudonym\n\n // Split the trimmed header value into parts\n const parts = arr[i].trim().split(/\\s+/);\n // Check if we have at least protocol/version and received-by parts\n if (parts.length >= 2) {\n // Get the received-by value (server id), removing any comment\n const serverId = parts[1].split('(')[0].trim();\n if (serverId === config.server_id) {\n return next(errorUtils.getCode(HTTP_STATUS.LOOP_DETECTED, 'loop detected'));\n }\n }\n }\n }\n }\n next();\n };\n}\n"],"mappings":";;;;;;;AAUA,SAAgB,SAAS,QAAgB;CACvC,OAAO,SAAU,KAAqB,KAAsB,MAA8B;EACxF,IAAI,KAAK,SAAS,OAAO,MAAM;GAC7B,MAAM,MAAM,IAAI,IAAI,KAAK,GAAG,MAAM,GAAG;GACrC,IAAI,MAAM,QAAQ,GAAG,GACnB,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;IAWnC,MAAM,QAAQ,IAAI,GAAG,KAAK,EAAE,MAAM,KAAK;IAEvC,IAAI,MAAM,UAAU;SAED,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,KACpC,MAAa,OAAO,WACtB,OAAO,KAAK,WAAW,QAAQ,YAAY,eAAe,eAAe,CAAC;IAAA;GAGhF;EAEJ;EACA,KAAK;CACP;AACF"}