@verdaccio/core 8.0.0-next-8.15 → 8.0.0-next-8.16

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.
@@ -0,0 +1,10 @@
1
+ /// <reference types="node" />
2
+ import { PackageAccess, PackageList } from '@verdaccio/types';
3
+ export interface CookieSessionToken {
4
+ expires: Date;
5
+ }
6
+ export declare function createSessionToken(): CookieSessionToken;
7
+ export declare function getAuthenticatedMessage(user: string): string;
8
+ export declare function buildUserBuffer(name: string, password: string): Buffer;
9
+ export declare function buildToken(type: string, token: string): string;
10
+ export declare function getMatchedPackagesSpec(pkgName: string, packages: PackageList): PackageAccess | void;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.buildToken = buildToken;
7
+ exports.buildUserBuffer = buildUserBuffer;
8
+ exports.createSessionToken = createSessionToken;
9
+ exports.getAuthenticatedMessage = getAuthenticatedMessage;
10
+ exports.getMatchedPackagesSpec = getMatchedPackagesSpec;
11
+ var _lodash = _interopRequireDefault(require("lodash"));
12
+ var _minimatch = require("minimatch");
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ function createSessionToken() {
15
+ const tenHoursTime = 10 * 60 * 60 * 1000;
16
+ return {
17
+ // npmjs.org sets 10h expire
18
+ expires: new Date(Date.now() + tenHoursTime)
19
+ };
20
+ }
21
+ function getAuthenticatedMessage(user) {
22
+ return `you are authenticated as '${user}'`;
23
+ }
24
+ function buildUserBuffer(name, password) {
25
+ return Buffer.from(`${name}:${password}`, 'utf8');
26
+ }
27
+ function buildToken(type, token) {
28
+ return `${_lodash.default.capitalize(type)} ${token}`;
29
+ }
30
+ function getMatchedPackagesSpec(pkgName, packages) {
31
+ for (const i in packages) {
32
+ if (_minimatch.minimatch.makeRe(i).exec(pkgName)) {
33
+ return packages[i];
34
+ }
35
+ }
36
+ return;
37
+ }
38
+ //# sourceMappingURL=auth-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-utils.js","names":["_lodash","_interopRequireDefault","require","_minimatch","e","__esModule","default","createSessionToken","tenHoursTime","expires","Date","now","getAuthenticatedMessage","user","buildUserBuffer","name","password","Buffer","from","buildToken","type","token","_","capitalize","getMatchedPackagesSpec","pkgName","packages","i","minimatch","makeRe","exec"],"sources":["../src/auth-utils.ts"],"sourcesContent":["import _ from 'lodash';\nimport { MMRegExp, minimatch } from 'minimatch';\n\nimport { PackageAccess, PackageList } from '@verdaccio/types';\n\nexport interface CookieSessionToken {\n expires: Date;\n}\n\nexport function createSessionToken(): CookieSessionToken {\n const tenHoursTime = 10 * 60 * 60 * 1000;\n\n return {\n // npmjs.org sets 10h expire\n expires: new Date(Date.now() + tenHoursTime),\n };\n}\n\nexport function getAuthenticatedMessage(user: string): string {\n return `you are authenticated as '${user}'`;\n}\n\nexport function buildUserBuffer(name: string, password: string): Buffer {\n return Buffer.from(`${name}:${password}`, 'utf8');\n}\n\nexport function buildToken(type: string, token: string): string {\n return `${_.capitalize(type)} ${token}`;\n}\n\nexport function getMatchedPackagesSpec(\n pkgName: string,\n packages: PackageList\n): PackageAccess | void {\n for (const i in packages) {\n if ((minimatch.makeRe(i) as MMRegExp).exec(pkgName)) {\n return packages[i];\n }\n }\n return;\n}\n"],"mappings":";;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAAgD,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAQzC,SAASG,kBAAkBA,CAAA,EAAuB;EACvD,MAAMC,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;EAExC,OAAO;IACL;IACAC,OAAO,EAAE,IAAIC,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGH,YAAY;EAC7C,CAAC;AACH;AAEO,SAASI,uBAAuBA,CAACC,IAAY,EAAU;EAC5D,OAAO,6BAA6BA,IAAI,GAAG;AAC7C;AAEO,SAASC,eAAeA,CAACC,IAAY,EAAEC,QAAgB,EAAU;EACtE,OAAOC,MAAM,CAACC,IAAI,CAAC,GAAGH,IAAI,IAAIC,QAAQ,EAAE,EAAE,MAAM,CAAC;AACnD;AAEO,SAASG,UAAUA,CAACC,IAAY,EAAEC,KAAa,EAAU;EAC9D,OAAO,GAAGC,eAAC,CAACC,UAAU,CAACH,IAAI,CAAC,IAAIC,KAAK,EAAE;AACzC;AAEO,SAASG,sBAAsBA,CACpCC,OAAe,EACfC,QAAqB,EACC;EACtB,KAAK,MAAMC,CAAC,IAAID,QAAQ,EAAE;IACxB,IAAKE,oBAAS,CAACC,MAAM,CAACF,CAAC,CAAC,CAAcG,IAAI,CAACL,OAAO,CAAC,EAAE;MACnD,OAAOC,QAAQ,CAACC,CAAC,CAAC;IACpB;EACF;EACA;AACF","ignoreList":[]}
@@ -31,6 +31,7 @@ export declare const HEADERS: {
31
31
  TEXT_HTML: string;
32
32
  AUTHORIZATION: string;
33
33
  CACHE_CONTROL: string;
34
+ RETRY_AFTER: string;
34
35
  FORWARDED_PROTO: string;
35
36
  FORWARDED_FOR: string;
36
37
  FRAMES_OPTIONS: string;
@@ -51,26 +52,50 @@ export declare const HEADERS: {
51
52
  GZIP: string;
52
53
  HOST: string;
53
54
  };
55
+ /**
56
+ * HTTP status codes used throughout Verdaccio.
57
+ */
54
58
  export declare const HTTP_STATUS: {
59
+ /** 202: The request has been accepted for processing, but the processing is not yet complete. */
60
+ ACCEPTED: number;
61
+ /** 200: Standard response for successful HTTP requests. */
55
62
  OK: number;
63
+ /** 201: The request has been fulfilled and resulted in a new resource being created. */
56
64
  CREATED: number;
65
+ /** 300: Indicates multiple options for the resource from which the client may choose. */
57
66
  MULTIPLE_CHOICES: number;
67
+ /** 304: Indicates that the resource has not been modified since the last request. */
58
68
  NOT_MODIFIED: number;
69
+ /** 400: The server could not understand the request due to invalid syntax. */
59
70
  BAD_REQUEST: number;
71
+ /** 401: The client must authenticate itself to get the requested response. */
60
72
  UNAUTHORIZED: number;
73
+ /** 403: The client does not have access rights to the content. */
61
74
  FORBIDDEN: number;
75
+ /** 404: The server can not find the requested resource. */
62
76
  NOT_FOUND: number;
77
+ /** 408: The server timed out waiting for the request. */
78
+ REQUEST_TIMEOUT: number;
79
+ /** 409: The request could not be completed due to a conflict with the current state of the resource. */
63
80
  CONFLICT: number;
64
- NOT_IMPLEMENTED: number;
81
+ /** 415: The media format of the requested data is not supported by the server. */
65
82
  UNSUPPORTED_MEDIA: number;
83
+ /** 422: The request was well-formed but was unable to be followed due to semantic errors. */
66
84
  BAD_DATA: number;
85
+ /** 500: The server has encountered a situation it doesn't know how to handle. */
67
86
  INTERNAL_ERROR: number;
87
+ /** 501: The request method is not supported by the server and cannot be handled. */
88
+ NOT_IMPLEMENTED: number;
89
+ /** 502: The server, while acting as a gateway or proxy, received an invalid response from the upstream server. */
90
+ BAD_GATEWAY: number;
91
+ /** 503: The server is not ready to handle the request. */
68
92
  SERVICE_UNAVAILABLE: number;
93
+ /** 504: The server, while acting as a gateway or proxy, did not get a response in time from the upstream server. */
94
+ GATEWAY_TIMEOUT: number;
95
+ /** 508: The server detected an infinite loop while processing the request. */
69
96
  LOOP_DETECTED: number;
97
+ /** 590: Custom Verdaccio code indicating the server cannot handle the request. */
70
98
  CANNOT_HANDLE: number;
71
- REQUEST_TIMEOUT: number;
72
- BAD_GATEWAY: number;
73
- GATEWAY_TIMEOUT: number;
74
99
  };
75
100
  export declare const ERROR_CODE: {
76
101
  token_required: string;
@@ -110,6 +135,8 @@ export declare enum HtpasswdHashAlgorithm {
110
135
  crypt = "crypt",
111
136
  bcrypt = "bcrypt"
112
137
  }
138
+ export declare const PLUGIN_PREFIX = "verdaccio";
139
+ export declare const PLUGIN_UI_PREFIX = "verdaccio-theme";
113
140
  export declare const PLUGIN_CATEGORY: {
114
141
  AUTHENTICATION: string;
115
142
  MIDDLEWARE: string;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.USERS = exports.TOKEN_BEARER = exports.TOKEN_BASIC = exports.TIME_EXPIRATION_24H = exports.TIME_EXPIRATION_1H = exports.ROLES = exports.PLUGIN_CATEGORY = exports.PACKAGE_ACCESS = exports.MAINTAINERS = exports.LOG_VERDACCIO_ERROR = exports.LOG_VERDACCIO_BYTES = exports.LOG_STATUS_MESSAGE = exports.LATEST = exports.HtpasswdHashAlgorithm = exports.HTTP_STATUS = exports.HEADER_TYPE = exports.HEADERS = exports.ERROR_CODE = exports.DIST_TAGS = exports.DEFAULT_USER = exports.DEFAULT_PASSWORD_VALIDATION = exports.CHARACTER_ENCODING = exports.API_MESSAGE = void 0;
6
+ exports.USERS = exports.TOKEN_BEARER = exports.TOKEN_BASIC = exports.TIME_EXPIRATION_24H = exports.TIME_EXPIRATION_1H = exports.ROLES = exports.PLUGIN_UI_PREFIX = exports.PLUGIN_PREFIX = exports.PLUGIN_CATEGORY = exports.PACKAGE_ACCESS = exports.MAINTAINERS = exports.LOG_VERDACCIO_ERROR = exports.LOG_VERDACCIO_BYTES = exports.LOG_STATUS_MESSAGE = exports.LATEST = exports.HtpasswdHashAlgorithm = exports.HTTP_STATUS = exports.HEADER_TYPE = exports.HEADERS = exports.ERROR_CODE = exports.DIST_TAGS = exports.DEFAULT_USER = exports.DEFAULT_PASSWORD_VALIDATION = exports.CHARACTER_ENCODING = exports.API_MESSAGE = void 0;
7
7
  var _httpStatusCodes = _interopRequireDefault(require("http-status-codes"));
8
8
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  const DEFAULT_PASSWORD_VALIDATION = exports.DEFAULT_PASSWORD_VALIDATION = /.{3}$/;
@@ -41,6 +41,7 @@ const HEADERS = exports.HEADERS = {
41
41
  TEXT_HTML: 'text/html',
42
42
  AUTHORIZATION: 'authorization',
43
43
  CACHE_CONTROL: 'Cache-Control',
44
+ RETRY_AFTER: 'Retry-After',
44
45
  // only set with proxy that setup HTTPS
45
46
  // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto
46
47
  FORWARDED_PROTO: 'X-Forwarded-Proto',
@@ -63,28 +64,51 @@ const HEADERS = exports.HEADERS = {
63
64
  GZIP: 'gzip',
64
65
  HOST: 'host'
65
66
  };
67
+
68
+ /**
69
+ * HTTP status codes used throughout Verdaccio.
70
+ */
66
71
  const HTTP_STATUS = exports.HTTP_STATUS = {
72
+ /** 202: The request has been accepted for processing, but the processing is not yet complete. */
73
+ ACCEPTED: _httpStatusCodes.default.ACCEPTED,
74
+ /** 200: Standard response for successful HTTP requests. */
67
75
  OK: _httpStatusCodes.default.OK,
76
+ /** 201: The request has been fulfilled and resulted in a new resource being created. */
68
77
  CREATED: _httpStatusCodes.default.CREATED,
78
+ /** 300: Indicates multiple options for the resource from which the client may choose. */
69
79
  MULTIPLE_CHOICES: _httpStatusCodes.default.MULTIPLE_CHOICES,
80
+ /** 304: Indicates that the resource has not been modified since the last request. */
70
81
  NOT_MODIFIED: _httpStatusCodes.default.NOT_MODIFIED,
82
+ /** 400: The server could not understand the request due to invalid syntax. */
71
83
  BAD_REQUEST: _httpStatusCodes.default.BAD_REQUEST,
84
+ /** 401: The client must authenticate itself to get the requested response. */
72
85
  UNAUTHORIZED: _httpStatusCodes.default.UNAUTHORIZED,
86
+ /** 403: The client does not have access rights to the content. */
73
87
  FORBIDDEN: _httpStatusCodes.default.FORBIDDEN,
88
+ /** 404: The server can not find the requested resource. */
74
89
  NOT_FOUND: _httpStatusCodes.default.NOT_FOUND,
90
+ /** 408: The server timed out waiting for the request. */
91
+ REQUEST_TIMEOUT: _httpStatusCodes.default.REQUEST_TIMEOUT,
92
+ /** 409: The request could not be completed due to a conflict with the current state of the resource. */
75
93
  CONFLICT: _httpStatusCodes.default.CONFLICT,
76
- NOT_IMPLEMENTED: _httpStatusCodes.default.NOT_IMPLEMENTED,
94
+ /** 415: The media format of the requested data is not supported by the server. */
77
95
  UNSUPPORTED_MEDIA: _httpStatusCodes.default.UNSUPPORTED_MEDIA_TYPE,
96
+ /** 422: The request was well-formed but was unable to be followed due to semantic errors. */
78
97
  BAD_DATA: _httpStatusCodes.default.UNPROCESSABLE_ENTITY,
98
+ /** 500: The server has encountered a situation it doesn't know how to handle. */
79
99
  INTERNAL_ERROR: _httpStatusCodes.default.INTERNAL_SERVER_ERROR,
100
+ /** 501: The request method is not supported by the server and cannot be handled. */
101
+ NOT_IMPLEMENTED: _httpStatusCodes.default.NOT_IMPLEMENTED,
102
+ /** 502: The server, while acting as a gateway or proxy, received an invalid response from the upstream server. */
103
+ BAD_GATEWAY: _httpStatusCodes.default.BAD_GATEWAY,
104
+ /** 503: The server is not ready to handle the request. */
80
105
  SERVICE_UNAVAILABLE: _httpStatusCodes.default.SERVICE_UNAVAILABLE,
106
+ /** 504: The server, while acting as a gateway or proxy, did not get a response in time from the upstream server. */
107
+ GATEWAY_TIMEOUT: _httpStatusCodes.default.GATEWAY_TIMEOUT,
108
+ /** 508: The server detected an infinite loop while processing the request. */
81
109
  LOOP_DETECTED: 508,
82
- CANNOT_HANDLE: 590,
83
- REQUEST_TIMEOUT: _httpStatusCodes.default.REQUEST_TIMEOUT,
84
- // 408
85
- BAD_GATEWAY: _httpStatusCodes.default.BAD_GATEWAY,
86
- // 502
87
- GATEWAY_TIMEOUT: _httpStatusCodes.default.GATEWAY_TIMEOUT // 504
110
+ /** 590: Custom Verdaccio code indicating the server cannot handle the request. */
111
+ CANNOT_HANDLE: 590
88
112
  };
89
113
  const ERROR_CODE = exports.ERROR_CODE = {
90
114
  token_required: 'token is required'
@@ -125,6 +149,8 @@ let HtpasswdHashAlgorithm = exports.HtpasswdHashAlgorithm = /*#__PURE__*/functio
125
149
  HtpasswdHashAlgorithm["bcrypt"] = "bcrypt";
126
150
  return HtpasswdHashAlgorithm;
127
151
  }({});
152
+ const PLUGIN_PREFIX = exports.PLUGIN_PREFIX = 'verdaccio';
153
+ const PLUGIN_UI_PREFIX = exports.PLUGIN_UI_PREFIX = 'verdaccio-theme';
128
154
  const PLUGIN_CATEGORY = exports.PLUGIN_CATEGORY = {
129
155
  AUTHENTICATION: 'authentication',
130
156
  MIDDLEWARE: 'middleware',
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":["_httpStatusCodes","_interopRequireDefault","require","e","__esModule","default","DEFAULT_PASSWORD_VALIDATION","exports","TIME_EXPIRATION_24H","TIME_EXPIRATION_1H","DIST_TAGS","LATEST","USERS","MAINTAINERS","DEFAULT_USER","HEADER_TYPE","CONTENT_ENCODING","CONTENT_TYPE","CONTENT_LENGTH","ACCEPT_ENCODING","AUTHORIZATION","CHARACTER_ENCODING","UTF8","TOKEN_BASIC","TOKEN_BEARER","HEADERS","ACCEPT","USER_AGENT","JSON","TEXT_PLAIN","TEXT_PLAIN_UTF8","TEXT_HTML_UTF8","TEXT_HTML","CACHE_CONTROL","FORWARDED_PROTO","FORWARDED_FOR","FRAMES_OPTIONS","CSP","CTO","XSS","CLIENT","POWERED_BY","RATELIMIT_LIMIT","RATELIMIT_REMAINING","NONE_MATCH","ETAG","JSON_CHARSET","JSON_INSTALL_CHARSET","OCTET_STREAM","TEXT_CHARSET","WWW_AUTH","GZIP","HOST","HTTP_STATUS","OK","httpCodes","CREATED","MULTIPLE_CHOICES","NOT_MODIFIED","BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","NOT_IMPLEMENTED","UNSUPPORTED_MEDIA","UNSUPPORTED_MEDIA_TYPE","BAD_DATA","UNPROCESSABLE_ENTITY","INTERNAL_ERROR","INTERNAL_SERVER_ERROR","SERVICE_UNAVAILABLE","LOOP_DETECTED","CANNOT_HANDLE","REQUEST_TIMEOUT","BAD_GATEWAY","GATEWAY_TIMEOUT","ERROR_CODE","token_required","API_MESSAGE","PKG_CREATED","PKG_CHANGED","PKG_REMOVED","PKG_PUBLISHED","TARBALL_UPLOADED","TARBALL_REMOVED","TAG_UPDATED","TAG_REMOVED","TAG_ADDED","LOGGED_OUT","LOG_STATUS_MESSAGE","LOG_VERDACCIO_ERROR","LOG_VERDACCIO_BYTES","ROLES","$ALL","ALL","$AUTH","$ANONYMOUS","DEPRECATED_ALL","DEPRECATED_AUTH","DEPRECATED_ANONYMOUS","PACKAGE_ACCESS","SCOPE","HtpasswdHashAlgorithm","PLUGIN_CATEGORY","AUTHENTICATION","MIDDLEWARE","STORAGE","FILTER","THEME"],"sources":["../src/constants.ts"],"sourcesContent":["import httpCodes from 'http-status-codes';\n\nexport const DEFAULT_PASSWORD_VALIDATION = /.{3}$/;\nexport const TIME_EXPIRATION_24H = '24h';\nexport const TIME_EXPIRATION_1H = '1h';\nexport const DIST_TAGS = 'dist-tags';\nexport const LATEST = 'latest';\nexport const USERS = 'users';\nexport const MAINTAINERS = 'maintainers';\nexport const DEFAULT_USER = 'Anonymous';\n\nexport const HEADER_TYPE = {\n CONTENT_ENCODING: 'content-encoding',\n CONTENT_TYPE: 'content-type',\n CONTENT_LENGTH: 'content-length',\n ACCEPT_ENCODING: 'accept-encoding',\n AUTHORIZATION: 'authorization',\n};\n\nexport const CHARACTER_ENCODING = {\n UTF8: 'utf8',\n};\n\n// @deprecated use Bearer instead\nexport const TOKEN_BASIC = 'Basic';\nexport const TOKEN_BEARER = 'Bearer';\n\nexport const HEADERS = {\n ACCEPT: 'Accept',\n ACCEPT_ENCODING: 'Accept-Encoding',\n USER_AGENT: 'User-Agent',\n JSON: 'application/json',\n CONTENT_TYPE: 'Content-type',\n CONTENT_LENGTH: 'content-length',\n TEXT_PLAIN: 'text/plain',\n TEXT_PLAIN_UTF8: 'text/plain; charset=utf-8',\n TEXT_HTML_UTF8: 'text/html; charset=utf-8',\n TEXT_HTML: 'text/html',\n AUTHORIZATION: 'authorization',\n CACHE_CONTROL: 'Cache-Control',\n // only set with proxy that setup HTTPS\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto\n FORWARDED_PROTO: 'X-Forwarded-Proto',\n FORWARDED_FOR: 'X-Forwarded-For',\n FRAMES_OPTIONS: 'X-Frame-Options',\n CSP: 'Content-Security-Policy',\n CTO: 'X-Content-Type-Options',\n XSS: 'X-XSS-Protection',\n CLIENT: 'X-Client',\n POWERED_BY: 'X-Powered-By',\n RATELIMIT_LIMIT: 'X-RateLimit-Limit',\n RATELIMIT_REMAINING: 'X-RateLimit-Remaining',\n NONE_MATCH: 'If-None-Match',\n ETAG: 'ETag',\n JSON_CHARSET: 'application/json; charset=utf-8',\n JSON_INSTALL_CHARSET: 'application/vnd.npm.install-v1+json; charset=utf-8',\n OCTET_STREAM: 'application/octet-stream; charset=utf-8',\n TEXT_CHARSET: 'text/plain; charset=utf-8',\n WWW_AUTH: 'WWW-Authenticate',\n GZIP: 'gzip',\n HOST: 'host',\n};\n\nexport const HTTP_STATUS = {\n OK: httpCodes.OK,\n CREATED: httpCodes.CREATED,\n MULTIPLE_CHOICES: httpCodes.MULTIPLE_CHOICES,\n NOT_MODIFIED: httpCodes.NOT_MODIFIED,\n BAD_REQUEST: httpCodes.BAD_REQUEST,\n UNAUTHORIZED: httpCodes.UNAUTHORIZED,\n FORBIDDEN: httpCodes.FORBIDDEN,\n NOT_FOUND: httpCodes.NOT_FOUND,\n CONFLICT: httpCodes.CONFLICT,\n NOT_IMPLEMENTED: httpCodes.NOT_IMPLEMENTED,\n UNSUPPORTED_MEDIA: httpCodes.UNSUPPORTED_MEDIA_TYPE,\n BAD_DATA: httpCodes.UNPROCESSABLE_ENTITY,\n INTERNAL_ERROR: httpCodes.INTERNAL_SERVER_ERROR,\n SERVICE_UNAVAILABLE: httpCodes.SERVICE_UNAVAILABLE,\n LOOP_DETECTED: 508,\n CANNOT_HANDLE: 590,\n REQUEST_TIMEOUT: httpCodes.REQUEST_TIMEOUT, // 408\n BAD_GATEWAY: httpCodes.BAD_GATEWAY, // 502\n GATEWAY_TIMEOUT: httpCodes.GATEWAY_TIMEOUT, // 504\n};\n\nexport const ERROR_CODE = {\n token_required: 'token is required',\n};\n\nexport const API_MESSAGE = {\n PKG_CREATED: 'created new package',\n PKG_CHANGED: 'package changed',\n PKG_REMOVED: 'package removed',\n PKG_PUBLISHED: 'package published',\n TARBALL_UPLOADED: 'tarball uploaded successfully',\n TARBALL_REMOVED: 'tarball removed',\n TAG_UPDATED: 'tags updated',\n TAG_REMOVED: 'tag removed',\n TAG_ADDED: 'package tagged',\n OK: 'ok',\n LOGGED_OUT: 'Logged out',\n};\n\nexport const LOG_STATUS_MESSAGE =\n \"@{status}, user: @{user}(@{remoteIP}), req: '@{request.method} @{request.url}'\";\nexport const LOG_VERDACCIO_ERROR = `${LOG_STATUS_MESSAGE}, error: @{!error}`;\nexport const LOG_VERDACCIO_BYTES = `${LOG_STATUS_MESSAGE}, bytes: @{bytes.in}/@{bytes.out}`;\n\nexport const ROLES = {\n $ALL: '$all',\n ALL: 'all',\n $AUTH: '$authenticated',\n $ANONYMOUS: '$anonymous',\n DEPRECATED_ALL: '@all',\n DEPRECATED_AUTH: '@authenticated',\n DEPRECATED_ANONYMOUS: '@anonymous',\n};\n\nexport const PACKAGE_ACCESS = {\n SCOPE: '@*/*',\n ALL: '**',\n};\n\nexport enum HtpasswdHashAlgorithm {\n md5 = 'md5',\n sha1 = 'sha1',\n crypt = 'crypt',\n bcrypt = 'bcrypt',\n}\n\nexport const PLUGIN_CATEGORY = {\n AUTHENTICATION: 'authentication',\n MIDDLEWARE: 'middleware',\n STORAGE: 'storage',\n FILTER: 'filter',\n THEME: 'theme',\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"constants.js","names":["_httpStatusCodes","_interopRequireDefault","require","e","__esModule","default","DEFAULT_PASSWORD_VALIDATION","exports","TIME_EXPIRATION_24H","TIME_EXPIRATION_1H","DIST_TAGS","LATEST","USERS","MAINTAINERS","DEFAULT_USER","HEADER_TYPE","CONTENT_ENCODING","CONTENT_TYPE","CONTENT_LENGTH","ACCEPT_ENCODING","AUTHORIZATION","CHARACTER_ENCODING","UTF8","TOKEN_BASIC","TOKEN_BEARER","HEADERS","ACCEPT","USER_AGENT","JSON","TEXT_PLAIN","TEXT_PLAIN_UTF8","TEXT_HTML_UTF8","TEXT_HTML","CACHE_CONTROL","RETRY_AFTER","FORWARDED_PROTO","FORWARDED_FOR","FRAMES_OPTIONS","CSP","CTO","XSS","CLIENT","POWERED_BY","RATELIMIT_LIMIT","RATELIMIT_REMAINING","NONE_MATCH","ETAG","JSON_CHARSET","JSON_INSTALL_CHARSET","OCTET_STREAM","TEXT_CHARSET","WWW_AUTH","GZIP","HOST","HTTP_STATUS","ACCEPTED","httpCodes","OK","CREATED","MULTIPLE_CHOICES","NOT_MODIFIED","BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","REQUEST_TIMEOUT","CONFLICT","UNSUPPORTED_MEDIA","UNSUPPORTED_MEDIA_TYPE","BAD_DATA","UNPROCESSABLE_ENTITY","INTERNAL_ERROR","INTERNAL_SERVER_ERROR","NOT_IMPLEMENTED","BAD_GATEWAY","SERVICE_UNAVAILABLE","GATEWAY_TIMEOUT","LOOP_DETECTED","CANNOT_HANDLE","ERROR_CODE","token_required","API_MESSAGE","PKG_CREATED","PKG_CHANGED","PKG_REMOVED","PKG_PUBLISHED","TARBALL_UPLOADED","TARBALL_REMOVED","TAG_UPDATED","TAG_REMOVED","TAG_ADDED","LOGGED_OUT","LOG_STATUS_MESSAGE","LOG_VERDACCIO_ERROR","LOG_VERDACCIO_BYTES","ROLES","$ALL","ALL","$AUTH","$ANONYMOUS","DEPRECATED_ALL","DEPRECATED_AUTH","DEPRECATED_ANONYMOUS","PACKAGE_ACCESS","SCOPE","HtpasswdHashAlgorithm","PLUGIN_PREFIX","PLUGIN_UI_PREFIX","PLUGIN_CATEGORY","AUTHENTICATION","MIDDLEWARE","STORAGE","FILTER","THEME"],"sources":["../src/constants.ts"],"sourcesContent":["import httpCodes from 'http-status-codes';\n\nexport const DEFAULT_PASSWORD_VALIDATION = /.{3}$/;\nexport const TIME_EXPIRATION_24H = '24h';\nexport const TIME_EXPIRATION_1H = '1h';\nexport const DIST_TAGS = 'dist-tags';\nexport const LATEST = 'latest';\nexport const USERS = 'users';\nexport const MAINTAINERS = 'maintainers';\nexport const DEFAULT_USER = 'Anonymous';\n\nexport const HEADER_TYPE = {\n CONTENT_ENCODING: 'content-encoding',\n CONTENT_TYPE: 'content-type',\n CONTENT_LENGTH: 'content-length',\n ACCEPT_ENCODING: 'accept-encoding',\n AUTHORIZATION: 'authorization',\n};\n\nexport const CHARACTER_ENCODING = {\n UTF8: 'utf8',\n};\n\n// @deprecated use Bearer instead\nexport const TOKEN_BASIC = 'Basic';\nexport const TOKEN_BEARER = 'Bearer';\n\nexport const HEADERS = {\n ACCEPT: 'Accept',\n ACCEPT_ENCODING: 'Accept-Encoding',\n USER_AGENT: 'User-Agent',\n JSON: 'application/json',\n CONTENT_TYPE: 'Content-type',\n CONTENT_LENGTH: 'content-length',\n TEXT_PLAIN: 'text/plain',\n TEXT_PLAIN_UTF8: 'text/plain; charset=utf-8',\n TEXT_HTML_UTF8: 'text/html; charset=utf-8',\n TEXT_HTML: 'text/html',\n AUTHORIZATION: 'authorization',\n CACHE_CONTROL: 'Cache-Control',\n RETRY_AFTER: 'Retry-After',\n // only set with proxy that setup HTTPS\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto\n FORWARDED_PROTO: 'X-Forwarded-Proto',\n FORWARDED_FOR: 'X-Forwarded-For',\n FRAMES_OPTIONS: 'X-Frame-Options',\n CSP: 'Content-Security-Policy',\n CTO: 'X-Content-Type-Options',\n XSS: 'X-XSS-Protection',\n CLIENT: 'X-Client',\n POWERED_BY: 'X-Powered-By',\n RATELIMIT_LIMIT: 'X-RateLimit-Limit',\n RATELIMIT_REMAINING: 'X-RateLimit-Remaining',\n NONE_MATCH: 'If-None-Match',\n ETAG: 'ETag',\n JSON_CHARSET: 'application/json; charset=utf-8',\n JSON_INSTALL_CHARSET: 'application/vnd.npm.install-v1+json; charset=utf-8',\n OCTET_STREAM: 'application/octet-stream; charset=utf-8',\n TEXT_CHARSET: 'text/plain; charset=utf-8',\n WWW_AUTH: 'WWW-Authenticate',\n GZIP: 'gzip',\n HOST: 'host',\n};\n\n/**\n * HTTP status codes used throughout Verdaccio.\n */\nexport const HTTP_STATUS = {\n /** 202: The request has been accepted for processing, but the processing is not yet complete. */\n ACCEPTED: httpCodes.ACCEPTED,\n /** 200: Standard response for successful HTTP requests. */\n OK: httpCodes.OK,\n /** 201: The request has been fulfilled and resulted in a new resource being created. */\n CREATED: httpCodes.CREATED,\n /** 300: Indicates multiple options for the resource from which the client may choose. */\n MULTIPLE_CHOICES: httpCodes.MULTIPLE_CHOICES,\n /** 304: Indicates that the resource has not been modified since the last request. */\n NOT_MODIFIED: httpCodes.NOT_MODIFIED,\n /** 400: The server could not understand the request due to invalid syntax. */\n BAD_REQUEST: httpCodes.BAD_REQUEST,\n /** 401: The client must authenticate itself to get the requested response. */\n UNAUTHORIZED: httpCodes.UNAUTHORIZED,\n /** 403: The client does not have access rights to the content. */\n FORBIDDEN: httpCodes.FORBIDDEN,\n /** 404: The server can not find the requested resource. */\n NOT_FOUND: httpCodes.NOT_FOUND,\n /** 408: The server timed out waiting for the request. */\n REQUEST_TIMEOUT: httpCodes.REQUEST_TIMEOUT,\n /** 409: The request could not be completed due to a conflict with the current state of the resource. */\n CONFLICT: httpCodes.CONFLICT,\n /** 415: The media format of the requested data is not supported by the server. */\n UNSUPPORTED_MEDIA: httpCodes.UNSUPPORTED_MEDIA_TYPE,\n /** 422: The request was well-formed but was unable to be followed due to semantic errors. */\n BAD_DATA: httpCodes.UNPROCESSABLE_ENTITY,\n /** 500: The server has encountered a situation it doesn't know how to handle. */\n INTERNAL_ERROR: httpCodes.INTERNAL_SERVER_ERROR,\n /** 501: The request method is not supported by the server and cannot be handled. */\n NOT_IMPLEMENTED: httpCodes.NOT_IMPLEMENTED,\n /** 502: The server, while acting as a gateway or proxy, received an invalid response from the upstream server. */\n BAD_GATEWAY: httpCodes.BAD_GATEWAY,\n /** 503: The server is not ready to handle the request. */\n SERVICE_UNAVAILABLE: httpCodes.SERVICE_UNAVAILABLE,\n /** 504: The server, while acting as a gateway or proxy, did not get a response in time from the upstream server. */\n GATEWAY_TIMEOUT: httpCodes.GATEWAY_TIMEOUT,\n /** 508: The server detected an infinite loop while processing the request. */\n LOOP_DETECTED: 508,\n /** 590: Custom Verdaccio code indicating the server cannot handle the request. */\n CANNOT_HANDLE: 590,\n};\n\nexport const ERROR_CODE = {\n token_required: 'token is required',\n};\n\nexport const API_MESSAGE = {\n PKG_CREATED: 'created new package',\n PKG_CHANGED: 'package changed',\n PKG_REMOVED: 'package removed',\n PKG_PUBLISHED: 'package published',\n TARBALL_UPLOADED: 'tarball uploaded successfully',\n TARBALL_REMOVED: 'tarball removed',\n TAG_UPDATED: 'tags updated',\n TAG_REMOVED: 'tag removed',\n TAG_ADDED: 'package tagged',\n OK: 'ok',\n LOGGED_OUT: 'Logged out',\n};\n\nexport const LOG_STATUS_MESSAGE =\n \"@{status}, user: @{user}(@{remoteIP}), req: '@{request.method} @{request.url}'\";\nexport const LOG_VERDACCIO_ERROR = `${LOG_STATUS_MESSAGE}, error: @{!error}`;\nexport const LOG_VERDACCIO_BYTES = `${LOG_STATUS_MESSAGE}, bytes: @{bytes.in}/@{bytes.out}`;\n\nexport const ROLES = {\n $ALL: '$all',\n ALL: 'all',\n $AUTH: '$authenticated',\n $ANONYMOUS: '$anonymous',\n DEPRECATED_ALL: '@all',\n DEPRECATED_AUTH: '@authenticated',\n DEPRECATED_ANONYMOUS: '@anonymous',\n};\n\nexport const PACKAGE_ACCESS = {\n SCOPE: '@*/*',\n ALL: '**',\n};\n\nexport enum HtpasswdHashAlgorithm {\n md5 = 'md5',\n sha1 = 'sha1',\n crypt = 'crypt',\n bcrypt = 'bcrypt',\n}\n\nexport const PLUGIN_PREFIX = 'verdaccio';\nexport const PLUGIN_UI_PREFIX = 'verdaccio-theme';\n\nexport const PLUGIN_CATEGORY = {\n AUTHENTICATION: 'authentication',\n MIDDLEWARE: 'middleware',\n STORAGE: 'storage',\n FILTER: 'filter',\n THEME: 'theme',\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { Hash } from 'node:crypto';
4
+ export declare const defaultTarballHashAlgorithm = "sha1";
5
+ export declare function createTarballHash(): Hash;
6
+ /**
7
+ * Express doesn't do ETAGS with requests <= 1024b
8
+ * we use md5 here, it works well on 1k+ bytes, but sucks with fewer data
9
+ * could improve performance using crc32 after benchmarks.
10
+ * @param {Object} data
11
+ * @return {String}
12
+ */
13
+ export declare function stringToMD5(data: Buffer | string): string;
14
+ export declare function generateRandomHexString(length?: number): string;
15
+ /**
16
+ * return a masquerade string with its first and last {charNum} and three dots in between.
17
+ * @param {String} str
18
+ * @param {Number} charNum
19
+ * @returns {String}
20
+ */
21
+ export declare function mask(str: string, charNum?: number): string;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createTarballHash = createTarballHash;
7
+ exports.defaultTarballHashAlgorithm = void 0;
8
+ exports.generateRandomHexString = generateRandomHexString;
9
+ exports.mask = mask;
10
+ exports.stringToMD5 = stringToMD5;
11
+ var _nodeCrypto = require("node:crypto");
12
+ const defaultTarballHashAlgorithm = exports.defaultTarballHashAlgorithm = 'sha1';
13
+ function createTarballHash() {
14
+ return (0, _nodeCrypto.createHash)(defaultTarballHashAlgorithm);
15
+ }
16
+
17
+ /**
18
+ * Express doesn't do ETAGS with requests <= 1024b
19
+ * we use md5 here, it works well on 1k+ bytes, but sucks with fewer data
20
+ * could improve performance using crc32 after benchmarks.
21
+ * @param {Object} data
22
+ * @return {String}
23
+ */
24
+ function stringToMD5(data) {
25
+ // @ts-ignore update method accepts Buffer or string
26
+ return (0, _nodeCrypto.createHash)('md5').update(data).digest('hex');
27
+ }
28
+ function generateRandomHexString(length = 8) {
29
+ return (0, _nodeCrypto.pseudoRandomBytes)(length).toString('hex');
30
+ }
31
+
32
+ /**
33
+ * return a masquerade string with its first and last {charNum} and three dots in between.
34
+ * @param {String} str
35
+ * @param {Number} charNum
36
+ * @returns {String}
37
+ */
38
+ function mask(str, charNum = 3) {
39
+ return `${str.slice(0, charNum)}...${str.slice(-charNum)}`;
40
+ }
41
+ //# sourceMappingURL=crypto-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-utils.js","names":["_nodeCrypto","require","defaultTarballHashAlgorithm","exports","createTarballHash","createHash","stringToMD5","data","update","digest","generateRandomHexString","length","pseudoRandomBytes","toString","mask","str","charNum","slice"],"sources":["../src/crypto-utils.ts"],"sourcesContent":["import { Hash, createHash, pseudoRandomBytes } from 'node:crypto';\n\nexport const defaultTarballHashAlgorithm = 'sha1';\n\nexport function createTarballHash(): Hash {\n return createHash(defaultTarballHashAlgorithm);\n}\n\n/**\n * Express doesn't do ETAGS with requests <= 1024b\n * we use md5 here, it works well on 1k+ bytes, but sucks with fewer data\n * could improve performance using crc32 after benchmarks.\n * @param {Object} data\n * @return {String}\n */\nexport function stringToMD5(data: Buffer | string): string {\n // @ts-ignore update method accepts Buffer or string\n return createHash('md5').update(data).digest('hex');\n}\n\nexport function generateRandomHexString(length = 8): string {\n return pseudoRandomBytes(length).toString('hex');\n}\n\n/**\n * return a masquerade string with its first and last {charNum} and three dots in between.\n * @param {String} str\n * @param {Number} charNum\n * @returns {String}\n */\nexport function mask(str: string, charNum = 3): string {\n return `${str.slice(0, charNum)}...${str.slice(-charNum)}`;\n}\n"],"mappings":";;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAEO,MAAMC,2BAA2B,GAAAC,OAAA,CAAAD,2BAAA,GAAG,MAAM;AAE1C,SAASE,iBAAiBA,CAAA,EAAS;EACxC,OAAO,IAAAC,sBAAU,EAACH,2BAA2B,CAAC;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASI,WAAWA,CAACC,IAAqB,EAAU;EACzD;EACA,OAAO,IAAAF,sBAAU,EAAC,KAAK,CAAC,CAACG,MAAM,CAACD,IAAI,CAAC,CAACE,MAAM,CAAC,KAAK,CAAC;AACrD;AAEO,SAASC,uBAAuBA,CAACC,MAAM,GAAG,CAAC,EAAU;EAC1D,OAAO,IAAAC,6BAAiB,EAACD,MAAM,CAAC,CAACE,QAAQ,CAAC,KAAK,CAAC;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,IAAIA,CAACC,GAAW,EAAEC,OAAO,GAAG,CAAC,EAAU;EACrD,OAAO,GAAGD,GAAG,CAACE,KAAK,CAAC,CAAC,EAAED,OAAO,CAAC,MAAMD,GAAG,CAACE,KAAK,CAAC,CAACD,OAAO,CAAC,EAAE;AAC5D","ignoreList":[]}
@@ -37,6 +37,9 @@ export declare const API_ERROR: {
37
37
  USERNAME_PASSWORD_REQUIRED: string;
38
38
  USERNAME_ALREADY_REGISTERED: string;
39
39
  USERNAME_MISMATCH: string;
40
+ SESSION_ID_REQUIRED: string;
41
+ SESSION_ID_INVALID: string;
42
+ SESSION_TOKEN_EXPIRED: string;
40
43
  };
41
44
  export declare const SUPPORT_ERRORS: {
42
45
  PLUGIN_MISSING_INTERFACE: string;
@@ -53,7 +53,10 @@ const API_ERROR = exports.API_ERROR = {
53
53
  BAD_PACKAGE_DATA: 'bad incoming package data',
54
54
  USERNAME_PASSWORD_REQUIRED: 'username and password is required',
55
55
  USERNAME_ALREADY_REGISTERED: 'username is already registered',
56
- USERNAME_MISMATCH: 'username does not match logged in user'
56
+ USERNAME_MISMATCH: 'username does not match logged in user',
57
+ SESSION_ID_REQUIRED: 'session id is required',
58
+ SESSION_ID_INVALID: 'session id is invalid',
59
+ SESSION_TOKEN_EXPIRED: 'session token expired'
57
60
  };
58
61
  const SUPPORT_ERRORS = exports.SUPPORT_ERRORS = {
59
62
  PLUGIN_MISSING_INTERFACE: 'the plugin does not provide implementation of the requested feature',
@@ -1 +1 @@
1
- {"version":3,"file":"error-utils.js","names":["_httpErrors","_interopRequireDefault","require","_constants","e","__esModule","default","API_ERROR","exports","PASSWORD_SHORT","MUST_BE_LOGGED","PLUGIN_ERROR","CONFIG_BAD_FORMAT","BAD_USERNAME_PASSWORD","NO_PACKAGE","PACKAGE_CANNOT_BE_ADDED","BAD_DATA","NOT_ALLOWED","NOT_ALLOWED_PUBLISH","INTERNAL_SERVER_ERROR","UNKNOWN_ERROR","NOT_PACKAGE_UPLINK","UPLINK_OFFLINE_PUBLISH","UPLINK_OFFLINE","NOT_MODIFIED_NO_DATA","CONTENT_MISMATCH","NOT_FILE_UPLINK","MAX_USERS_REACHED","VERSION_NOT_EXIST","NO_SUCH_FILE","UNSUPORTED_REGISTRY_CALL","FILE_NOT_FOUND","REGISTRATION_DISABLED","UNAUTHORIZED_ACCESS","BAD_STATUS_CODE","SERVER_TIME_OUT","PACKAGE_EXIST","BAD_AUTH_HEADER","WEB_DISABLED","DEPRECATED_BASIC_HEADER","BAD_FORMAT_USER_GROUP","RESOURCE_UNAVAILABLE","BAD_PACKAGE_DATA","USERNAME_PASSWORD_REQUIRED","USERNAME_ALREADY_REGISTERED","USERNAME_MISMATCH","SUPPORT_ERRORS","PLUGIN_MISSING_INTERFACE","TFA_DISABLED","STORAGE_NOT_IMPLEMENT","PARAMETERS_NOT_VALID","APP_ERROR","CONFIG_NOT_VALID","PROFILE_ERROR","PASSWORD_VALIDATION","getError","code","message","httpError","createError","getConflict","HTTP_STATUS","CONFLICT","getBadData","customMessage","getBadRequest","BAD_REQUEST","getInternalError","INTERNAL_ERROR","getUnauthorized","UNAUTHORIZED","getForbidden","FORBIDDEN","getServiceUnavailable","SERVICE_UNAVAILABLE","getNotFound","NOT_FOUND","getCode","statusCode"],"sources":["../src/error-utils.ts"],"sourcesContent":["import createError, { HttpError } from 'http-errors';\n\nimport { HTTP_STATUS } from './constants';\n\nexport const API_ERROR = {\n PASSWORD_SHORT: 'The provided password does not pass the validation',\n MUST_BE_LOGGED: 'You must be logged in to publish packages.',\n PLUGIN_ERROR: 'bug in the auth plugin system',\n CONFIG_BAD_FORMAT: 'config file must be an object',\n BAD_USERNAME_PASSWORD: 'bad username/password, access denied',\n NO_PACKAGE: 'no such package available',\n PACKAGE_CANNOT_BE_ADDED: 'this package cannot be added',\n BAD_DATA: 'bad data',\n NOT_ALLOWED: 'not allowed to access package',\n NOT_ALLOWED_PUBLISH: 'not allowed to publish package',\n INTERNAL_SERVER_ERROR: 'internal server error',\n UNKNOWN_ERROR: 'unknown error',\n NOT_PACKAGE_UPLINK: 'package does not exist on uplink',\n UPLINK_OFFLINE_PUBLISH: 'one of the uplinks is down, refuse to publish',\n UPLINK_OFFLINE: 'uplink is offline',\n NOT_MODIFIED_NO_DATA: 'no data',\n CONTENT_MISMATCH: 'content length mismatch',\n NOT_FILE_UPLINK: \"file doesn't exist on uplink\",\n MAX_USERS_REACHED: 'maximum amount of users reached',\n VERSION_NOT_EXIST: \"this version doesn't exist\",\n NO_SUCH_FILE: 'no such file available',\n UNSUPORTED_REGISTRY_CALL: 'unsupported registry call',\n FILE_NOT_FOUND: 'File not found',\n REGISTRATION_DISABLED: 'user registration disabled',\n UNAUTHORIZED_ACCESS: 'unauthorized access',\n BAD_STATUS_CODE: 'bad status code',\n SERVER_TIME_OUT: 'looks like the server is taking to long to respond',\n PACKAGE_EXIST: 'this package is already present',\n BAD_AUTH_HEADER: 'bad authorization header',\n WEB_DISABLED: 'Web interface is disabled in the config file',\n DEPRECATED_BASIC_HEADER: 'basic authentication is deprecated, please use JWT instead',\n BAD_FORMAT_USER_GROUP: 'user groups is different than an array',\n RESOURCE_UNAVAILABLE: 'resource unavailable',\n BAD_PACKAGE_DATA: 'bad incoming package data',\n USERNAME_PASSWORD_REQUIRED: 'username and password is required',\n USERNAME_ALREADY_REGISTERED: 'username is already registered',\n USERNAME_MISMATCH: 'username does not match logged in user',\n};\n\nexport const SUPPORT_ERRORS = {\n PLUGIN_MISSING_INTERFACE: 'the plugin does not provide implementation of the requested feature',\n TFA_DISABLED: 'the two-factor authentication is not yet supported',\n STORAGE_NOT_IMPLEMENT: 'the storage does not support token saving',\n PARAMETERS_NOT_VALID: 'the parameters are not valid',\n};\n\nexport const APP_ERROR = {\n CONFIG_NOT_VALID: 'CONFIG: it does not look like a valid config file',\n PROFILE_ERROR: 'profile unexpected error',\n PASSWORD_VALIDATION: 'not valid password',\n};\n\nexport type VerdaccioError = HttpError & { code: number };\n\nfunction getError(code: number, message: string): VerdaccioError {\n const httpError = createError(code, message);\n\n httpError.code = code;\n\n return httpError as VerdaccioError;\n}\n\nexport function getConflict(message: string = API_ERROR.PACKAGE_EXIST): VerdaccioError {\n return getError(HTTP_STATUS.CONFLICT, message);\n}\n\nexport function getBadData(customMessage?: string): VerdaccioError {\n return getError(HTTP_STATUS.BAD_DATA, customMessage || API_ERROR.BAD_DATA);\n}\n\nexport function getBadRequest(customMessage: string): VerdaccioError {\n return getError(HTTP_STATUS.BAD_REQUEST, customMessage);\n}\n\nexport function getInternalError(customMessage?: string): VerdaccioError {\n return customMessage\n ? getError(HTTP_STATUS.INTERNAL_ERROR, customMessage)\n : getError(HTTP_STATUS.INTERNAL_ERROR, API_ERROR.UNKNOWN_ERROR);\n}\n\nexport function getUnauthorized(message = 'no credentials provided'): VerdaccioError {\n return getError(HTTP_STATUS.UNAUTHORIZED, message);\n}\n\nexport function getForbidden(message = \"can't use this filename\"): VerdaccioError {\n return getError(HTTP_STATUS.FORBIDDEN, message);\n}\n\nexport function getServiceUnavailable(\n message: string = API_ERROR.RESOURCE_UNAVAILABLE\n): VerdaccioError {\n return getError(HTTP_STATUS.SERVICE_UNAVAILABLE, message);\n}\n\nexport function getNotFound(customMessage?: string): VerdaccioError {\n return getError(HTTP_STATUS.NOT_FOUND, customMessage || API_ERROR.NO_PACKAGE);\n}\n\nexport function getCode(statusCode: number, customMessage: string): VerdaccioError {\n return getError(statusCode, customMessage);\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAA0C,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEnC,MAAMG,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAG;EACvBE,cAAc,EAAE,oDAAoD;EACpEC,cAAc,EAAE,4CAA4C;EAC5DC,YAAY,EAAE,+BAA+B;EAC7CC,iBAAiB,EAAE,+BAA+B;EAClDC,qBAAqB,EAAE,sCAAsC;EAC7DC,UAAU,EAAE,2BAA2B;EACvCC,uBAAuB,EAAE,8BAA8B;EACvDC,QAAQ,EAAE,UAAU;EACpBC,WAAW,EAAE,+BAA+B;EAC5CC,mBAAmB,EAAE,gCAAgC;EACrDC,qBAAqB,EAAE,uBAAuB;EAC9CC,aAAa,EAAE,eAAe;EAC9BC,kBAAkB,EAAE,kCAAkC;EACtDC,sBAAsB,EAAE,+CAA+C;EACvEC,cAAc,EAAE,mBAAmB;EACnCC,oBAAoB,EAAE,SAAS;EAC/BC,gBAAgB,EAAE,yBAAyB;EAC3CC,eAAe,EAAE,8BAA8B;EAC/CC,iBAAiB,EAAE,iCAAiC;EACpDC,iBAAiB,EAAE,4BAA4B;EAC/CC,YAAY,EAAE,wBAAwB;EACtCC,wBAAwB,EAAE,2BAA2B;EACrDC,cAAc,EAAE,gBAAgB;EAChCC,qBAAqB,EAAE,4BAA4B;EACnDC,mBAAmB,EAAE,qBAAqB;EAC1CC,eAAe,EAAE,iBAAiB;EAClCC,eAAe,EAAE,oDAAoD;EACrEC,aAAa,EAAE,iCAAiC;EAChDC,eAAe,EAAE,0BAA0B;EAC3CC,YAAY,EAAE,8CAA8C;EAC5DC,uBAAuB,EAAE,4DAA4D;EACrFC,qBAAqB,EAAE,wCAAwC;EAC/DC,oBAAoB,EAAE,sBAAsB;EAC5CC,gBAAgB,EAAE,2BAA2B;EAC7CC,0BAA0B,EAAE,mCAAmC;EAC/DC,2BAA2B,EAAE,gCAAgC;EAC7DC,iBAAiB,EAAE;AACrB,CAAC;AAEM,MAAMC,cAAc,GAAAtC,OAAA,CAAAsC,cAAA,GAAG;EAC5BC,wBAAwB,EAAE,qEAAqE;EAC/FC,YAAY,EAAE,oDAAoD;EAClEC,qBAAqB,EAAE,2CAA2C;EAClEC,oBAAoB,EAAE;AACxB,CAAC;AAEM,MAAMC,SAAS,GAAA3C,OAAA,CAAA2C,SAAA,GAAG;EACvBC,gBAAgB,EAAE,mDAAmD;EACrEC,aAAa,EAAE,0BAA0B;EACzCC,mBAAmB,EAAE;AACvB,CAAC;AAID,SAASC,QAAQA,CAACC,IAAY,EAAEC,OAAe,EAAkB;EAC/D,MAAMC,SAAS,GAAG,IAAAC,mBAAW,EAACH,IAAI,EAAEC,OAAO,CAAC;EAE5CC,SAAS,CAACF,IAAI,GAAGA,IAAI;EAErB,OAAOE,SAAS;AAClB;AAEO,SAASE,WAAWA,CAACH,OAAe,GAAGlD,SAAS,CAAC6B,aAAa,EAAkB;EACrF,OAAOmB,QAAQ,CAACM,sBAAW,CAACC,QAAQ,EAAEL,OAAO,CAAC;AAChD;AAEO,SAASM,UAAUA,CAACC,aAAsB,EAAkB;EACjE,OAAOT,QAAQ,CAACM,sBAAW,CAAC7C,QAAQ,EAAEgD,aAAa,IAAIzD,SAAS,CAACS,QAAQ,CAAC;AAC5E;AAEO,SAASiD,aAAaA,CAACD,aAAqB,EAAkB;EACnE,OAAOT,QAAQ,CAACM,sBAAW,CAACK,WAAW,EAAEF,aAAa,CAAC;AACzD;AAEO,SAASG,gBAAgBA,CAACH,aAAsB,EAAkB;EACvE,OAAOA,aAAa,GAChBT,QAAQ,CAACM,sBAAW,CAACO,cAAc,EAAEJ,aAAa,CAAC,GACnDT,QAAQ,CAACM,sBAAW,CAACO,cAAc,EAAE7D,SAAS,CAACa,aAAa,CAAC;AACnE;AAEO,SAASiD,eAAeA,CAACZ,OAAO,GAAG,yBAAyB,EAAkB;EACnF,OAAOF,QAAQ,CAACM,sBAAW,CAACS,YAAY,EAAEb,OAAO,CAAC;AACpD;AAEO,SAASc,YAAYA,CAACd,OAAO,GAAG,yBAAyB,EAAkB;EAChF,OAAOF,QAAQ,CAACM,sBAAW,CAACW,SAAS,EAAEf,OAAO,CAAC;AACjD;AAEO,SAASgB,qBAAqBA,CACnChB,OAAe,GAAGlD,SAAS,CAACkC,oBAAoB,EAChC;EAChB,OAAOc,QAAQ,CAACM,sBAAW,CAACa,mBAAmB,EAAEjB,OAAO,CAAC;AAC3D;AAEO,SAASkB,WAAWA,CAACX,aAAsB,EAAkB;EAClE,OAAOT,QAAQ,CAACM,sBAAW,CAACe,SAAS,EAAEZ,aAAa,IAAIzD,SAAS,CAACO,UAAU,CAAC;AAC/E;AAEO,SAAS+D,OAAOA,CAACC,UAAkB,EAAEd,aAAqB,EAAkB;EACjF,OAAOT,QAAQ,CAACuB,UAAU,EAAEd,aAAa,CAAC;AAC5C","ignoreList":[]}
1
+ {"version":3,"file":"error-utils.js","names":["_httpErrors","_interopRequireDefault","require","_constants","e","__esModule","default","API_ERROR","exports","PASSWORD_SHORT","MUST_BE_LOGGED","PLUGIN_ERROR","CONFIG_BAD_FORMAT","BAD_USERNAME_PASSWORD","NO_PACKAGE","PACKAGE_CANNOT_BE_ADDED","BAD_DATA","NOT_ALLOWED","NOT_ALLOWED_PUBLISH","INTERNAL_SERVER_ERROR","UNKNOWN_ERROR","NOT_PACKAGE_UPLINK","UPLINK_OFFLINE_PUBLISH","UPLINK_OFFLINE","NOT_MODIFIED_NO_DATA","CONTENT_MISMATCH","NOT_FILE_UPLINK","MAX_USERS_REACHED","VERSION_NOT_EXIST","NO_SUCH_FILE","UNSUPORTED_REGISTRY_CALL","FILE_NOT_FOUND","REGISTRATION_DISABLED","UNAUTHORIZED_ACCESS","BAD_STATUS_CODE","SERVER_TIME_OUT","PACKAGE_EXIST","BAD_AUTH_HEADER","WEB_DISABLED","DEPRECATED_BASIC_HEADER","BAD_FORMAT_USER_GROUP","RESOURCE_UNAVAILABLE","BAD_PACKAGE_DATA","USERNAME_PASSWORD_REQUIRED","USERNAME_ALREADY_REGISTERED","USERNAME_MISMATCH","SESSION_ID_REQUIRED","SESSION_ID_INVALID","SESSION_TOKEN_EXPIRED","SUPPORT_ERRORS","PLUGIN_MISSING_INTERFACE","TFA_DISABLED","STORAGE_NOT_IMPLEMENT","PARAMETERS_NOT_VALID","APP_ERROR","CONFIG_NOT_VALID","PROFILE_ERROR","PASSWORD_VALIDATION","getError","code","message","httpError","createError","getConflict","HTTP_STATUS","CONFLICT","getBadData","customMessage","getBadRequest","BAD_REQUEST","getInternalError","INTERNAL_ERROR","getUnauthorized","UNAUTHORIZED","getForbidden","FORBIDDEN","getServiceUnavailable","SERVICE_UNAVAILABLE","getNotFound","NOT_FOUND","getCode","statusCode"],"sources":["../src/error-utils.ts"],"sourcesContent":["import createError, { HttpError } from 'http-errors';\n\nimport { HTTP_STATUS } from './constants';\n\nexport const API_ERROR = {\n PASSWORD_SHORT: 'The provided password does not pass the validation',\n MUST_BE_LOGGED: 'You must be logged in to publish packages.',\n PLUGIN_ERROR: 'bug in the auth plugin system',\n CONFIG_BAD_FORMAT: 'config file must be an object',\n BAD_USERNAME_PASSWORD: 'bad username/password, access denied',\n NO_PACKAGE: 'no such package available',\n PACKAGE_CANNOT_BE_ADDED: 'this package cannot be added',\n BAD_DATA: 'bad data',\n NOT_ALLOWED: 'not allowed to access package',\n NOT_ALLOWED_PUBLISH: 'not allowed to publish package',\n INTERNAL_SERVER_ERROR: 'internal server error',\n UNKNOWN_ERROR: 'unknown error',\n NOT_PACKAGE_UPLINK: 'package does not exist on uplink',\n UPLINK_OFFLINE_PUBLISH: 'one of the uplinks is down, refuse to publish',\n UPLINK_OFFLINE: 'uplink is offline',\n NOT_MODIFIED_NO_DATA: 'no data',\n CONTENT_MISMATCH: 'content length mismatch',\n NOT_FILE_UPLINK: \"file doesn't exist on uplink\",\n MAX_USERS_REACHED: 'maximum amount of users reached',\n VERSION_NOT_EXIST: \"this version doesn't exist\",\n NO_SUCH_FILE: 'no such file available',\n UNSUPORTED_REGISTRY_CALL: 'unsupported registry call',\n FILE_NOT_FOUND: 'File not found',\n REGISTRATION_DISABLED: 'user registration disabled',\n UNAUTHORIZED_ACCESS: 'unauthorized access',\n BAD_STATUS_CODE: 'bad status code',\n SERVER_TIME_OUT: 'looks like the server is taking to long to respond',\n PACKAGE_EXIST: 'this package is already present',\n BAD_AUTH_HEADER: 'bad authorization header',\n WEB_DISABLED: 'Web interface is disabled in the config file',\n DEPRECATED_BASIC_HEADER: 'basic authentication is deprecated, please use JWT instead',\n BAD_FORMAT_USER_GROUP: 'user groups is different than an array',\n RESOURCE_UNAVAILABLE: 'resource unavailable',\n BAD_PACKAGE_DATA: 'bad incoming package data',\n USERNAME_PASSWORD_REQUIRED: 'username and password is required',\n USERNAME_ALREADY_REGISTERED: 'username is already registered',\n USERNAME_MISMATCH: 'username does not match logged in user',\n SESSION_ID_REQUIRED: 'session id is required',\n SESSION_ID_INVALID: 'session id is invalid',\n SESSION_TOKEN_EXPIRED: 'session token expired',\n};\n\nexport const SUPPORT_ERRORS = {\n PLUGIN_MISSING_INTERFACE: 'the plugin does not provide implementation of the requested feature',\n TFA_DISABLED: 'the two-factor authentication is not yet supported',\n STORAGE_NOT_IMPLEMENT: 'the storage does not support token saving',\n PARAMETERS_NOT_VALID: 'the parameters are not valid',\n};\n\nexport const APP_ERROR = {\n CONFIG_NOT_VALID: 'CONFIG: it does not look like a valid config file',\n PROFILE_ERROR: 'profile unexpected error',\n PASSWORD_VALIDATION: 'not valid password',\n};\n\nexport type VerdaccioError = HttpError & { code: number };\n\nfunction getError(code: number, message: string): VerdaccioError {\n const httpError = createError(code, message);\n\n httpError.code = code;\n\n return httpError as VerdaccioError;\n}\n\nexport function getConflict(message: string = API_ERROR.PACKAGE_EXIST): VerdaccioError {\n return getError(HTTP_STATUS.CONFLICT, message);\n}\n\nexport function getBadData(customMessage?: string): VerdaccioError {\n return getError(HTTP_STATUS.BAD_DATA, customMessage || API_ERROR.BAD_DATA);\n}\n\nexport function getBadRequest(customMessage: string): VerdaccioError {\n return getError(HTTP_STATUS.BAD_REQUEST, customMessage);\n}\n\nexport function getInternalError(customMessage?: string): VerdaccioError {\n return customMessage\n ? getError(HTTP_STATUS.INTERNAL_ERROR, customMessage)\n : getError(HTTP_STATUS.INTERNAL_ERROR, API_ERROR.UNKNOWN_ERROR);\n}\n\nexport function getUnauthorized(message = 'no credentials provided'): VerdaccioError {\n return getError(HTTP_STATUS.UNAUTHORIZED, message);\n}\n\nexport function getForbidden(message = \"can't use this filename\"): VerdaccioError {\n return getError(HTTP_STATUS.FORBIDDEN, message);\n}\n\nexport function getServiceUnavailable(\n message: string = API_ERROR.RESOURCE_UNAVAILABLE\n): VerdaccioError {\n return getError(HTTP_STATUS.SERVICE_UNAVAILABLE, message);\n}\n\nexport function getNotFound(customMessage?: string): VerdaccioError {\n return getError(HTTP_STATUS.NOT_FOUND, customMessage || API_ERROR.NO_PACKAGE);\n}\n\nexport function getCode(statusCode: number, customMessage: string): VerdaccioError {\n return getError(statusCode, customMessage);\n}\n"],"mappings":"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","ignoreList":[]}
package/build/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
+ import * as authUtils from './auth-utils';
1
2
  import * as constants from './constants';
3
+ import * as cryptoUtils from './crypto-utils';
2
4
  import * as errorUtils from './error-utils';
3
5
  import * as fileUtils from './file-utils';
4
6
  import * as pkgUtils from './pkg-utils';
@@ -10,5 +12,5 @@ import * as tarballUtils from './tarball-utils';
10
12
  import * as validationUtils from './validation-utils';
11
13
  import * as warningUtils from './warning-utils';
12
14
  export { VerdaccioError, API_ERROR, SUPPORT_ERRORS, APP_ERROR } from './error-utils';
13
- export { TOKEN_BASIC, TOKEN_BEARER, HTTP_STATUS, API_MESSAGE, HEADERS, DIST_TAGS, CHARACTER_ENCODING, HEADER_TYPE, LATEST, DEFAULT_PASSWORD_VALIDATION, DEFAULT_USER, USERS, MAINTAINERS, PLUGIN_CATEGORY, HtpasswdHashAlgorithm, } from './constants';
14
- export { fileUtils, pkgUtils, searchUtils, streamUtils, errorUtils, validationUtils, stringUtils, constants, pluginUtils, warningUtils, tarballUtils, };
15
+ export { TOKEN_BASIC, TOKEN_BEARER, HTTP_STATUS, API_MESSAGE, HEADERS, DIST_TAGS, CHARACTER_ENCODING, HEADER_TYPE, LATEST, DEFAULT_PASSWORD_VALIDATION, DEFAULT_USER, USERS, MAINTAINERS, PLUGIN_CATEGORY, PLUGIN_PREFIX, PLUGIN_UI_PREFIX, HtpasswdHashAlgorithm, } from './constants';
16
+ export { authUtils, cryptoUtils, fileUtils, pkgUtils, searchUtils, streamUtils, errorUtils, validationUtils, stringUtils, constants, pluginUtils, warningUtils, tarballUtils, };
package/build/index.js CHANGED
@@ -87,6 +87,18 @@ Object.defineProperty(exports, "PLUGIN_CATEGORY", {
87
87
  return constants.PLUGIN_CATEGORY;
88
88
  }
89
89
  });
90
+ Object.defineProperty(exports, "PLUGIN_PREFIX", {
91
+ enumerable: true,
92
+ get: function () {
93
+ return constants.PLUGIN_PREFIX;
94
+ }
95
+ });
96
+ Object.defineProperty(exports, "PLUGIN_UI_PREFIX", {
97
+ enumerable: true,
98
+ get: function () {
99
+ return constants.PLUGIN_UI_PREFIX;
100
+ }
101
+ });
90
102
  Object.defineProperty(exports, "SUPPORT_ERRORS", {
91
103
  enumerable: true,
92
104
  get: function () {
@@ -117,9 +129,13 @@ Object.defineProperty(exports, "VerdaccioError", {
117
129
  return errorUtils.VerdaccioError;
118
130
  }
119
131
  });
120
- exports.warningUtils = exports.validationUtils = exports.tarballUtils = exports.stringUtils = exports.streamUtils = exports.searchUtils = exports.pluginUtils = exports.pkgUtils = exports.fileUtils = exports.errorUtils = exports.constants = void 0;
132
+ exports.warningUtils = exports.validationUtils = exports.tarballUtils = exports.stringUtils = exports.streamUtils = exports.searchUtils = exports.pluginUtils = exports.pkgUtils = exports.fileUtils = exports.errorUtils = exports.cryptoUtils = exports.constants = exports.authUtils = void 0;
133
+ var authUtils = _interopRequireWildcard(require("./auth-utils"));
134
+ exports.authUtils = authUtils;
121
135
  var constants = _interopRequireWildcard(require("./constants"));
122
136
  exports.constants = constants;
137
+ var cryptoUtils = _interopRequireWildcard(require("./crypto-utils"));
138
+ exports.cryptoUtils = cryptoUtils;
123
139
  var errorUtils = _interopRequireWildcard(require("./error-utils"));
124
140
  exports.errorUtils = errorUtils;
125
141
  var fileUtils = _interopRequireWildcard(require("./file-utils"));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["constants","_interopRequireWildcard","require","exports","errorUtils","fileUtils","pkgUtils","pluginUtils","searchUtils","streamUtils","stringUtils","tarballUtils","validationUtils","warningUtils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set"],"sources":["../src/index.ts"],"sourcesContent":["import * as constants from './constants';\nimport * as errorUtils from './error-utils';\nimport * as fileUtils from './file-utils';\nimport * as pkgUtils from './pkg-utils';\nimport * as pluginUtils from './plugin-utils';\nimport * as searchUtils from './search-utils';\nimport * as streamUtils from './stream-utils';\nimport * as stringUtils from './string-utils';\nimport * as tarballUtils from './tarball-utils';\nimport * as validationUtils from './validation-utils';\nimport * as warningUtils from './warning-utils';\n\nexport { VerdaccioError, API_ERROR, SUPPORT_ERRORS, APP_ERROR } from './error-utils';\nexport {\n TOKEN_BASIC,\n TOKEN_BEARER,\n HTTP_STATUS,\n API_MESSAGE,\n HEADERS,\n DIST_TAGS,\n CHARACTER_ENCODING,\n HEADER_TYPE,\n LATEST,\n DEFAULT_PASSWORD_VALIDATION,\n DEFAULT_USER,\n USERS,\n MAINTAINERS,\n PLUGIN_CATEGORY,\n HtpasswdHashAlgorithm,\n} from './constants';\nexport {\n fileUtils,\n pkgUtils,\n searchUtils,\n streamUtils,\n errorUtils,\n validationUtils,\n stringUtils,\n constants,\n pluginUtils,\n warningUtils,\n tarballUtils,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAyCC,OAAA,CAAAH,SAAA,GAAAA,SAAA;AACzC,IAAAI,UAAA,GAAAH,uBAAA,CAAAC,OAAA;AAA4CC,OAAA,CAAAC,UAAA,GAAAA,UAAA;AAC5C,IAAAC,SAAA,GAAAJ,uBAAA,CAAAC,OAAA;AAA0CC,OAAA,CAAAE,SAAA,GAAAA,SAAA;AAC1C,IAAAC,QAAA,GAAAL,uBAAA,CAAAC,OAAA;AAAwCC,OAAA,CAAAG,QAAA,GAAAA,QAAA;AACxC,IAAAC,WAAA,GAAAN,uBAAA,CAAAC,OAAA;AAA8CC,OAAA,CAAAI,WAAA,GAAAA,WAAA;AAC9C,IAAAC,WAAA,GAAAP,uBAAA,CAAAC,OAAA;AAA8CC,OAAA,CAAAK,WAAA,GAAAA,WAAA;AAC9C,IAAAC,WAAA,GAAAR,uBAAA,CAAAC,OAAA;AAA8CC,OAAA,CAAAM,WAAA,GAAAA,WAAA;AAC9C,IAAAC,WAAA,GAAAT,uBAAA,CAAAC,OAAA;AAA8CC,OAAA,CAAAO,WAAA,GAAAA,WAAA;AAC9C,IAAAC,YAAA,GAAAV,uBAAA,CAAAC,OAAA;AAAgDC,OAAA,CAAAQ,YAAA,GAAAA,YAAA;AAChD,IAAAC,eAAA,GAAAX,uBAAA,CAAAC,OAAA;AAAsDC,OAAA,CAAAS,eAAA,GAAAA,eAAA;AACtD,IAAAC,YAAA,GAAAZ,uBAAA,CAAAC,OAAA;AAAgDC,OAAA,CAAAU,YAAA,GAAAA,YAAA;AAAA,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAd,wBAAAc,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["authUtils","_interopRequireWildcard","require","exports","constants","cryptoUtils","errorUtils","fileUtils","pkgUtils","pluginUtils","searchUtils","streamUtils","stringUtils","tarballUtils","validationUtils","warningUtils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set"],"sources":["../src/index.ts"],"sourcesContent":["import * as authUtils from './auth-utils';\nimport * as constants from './constants';\nimport * as cryptoUtils from './crypto-utils';\nimport * as errorUtils from './error-utils';\nimport * as fileUtils from './file-utils';\nimport * as pkgUtils from './pkg-utils';\nimport * as pluginUtils from './plugin-utils';\nimport * as searchUtils from './search-utils';\nimport * as streamUtils from './stream-utils';\nimport * as stringUtils from './string-utils';\nimport * as tarballUtils from './tarball-utils';\nimport * as validationUtils from './validation-utils';\nimport * as warningUtils from './warning-utils';\n\nexport { VerdaccioError, API_ERROR, SUPPORT_ERRORS, APP_ERROR } from './error-utils';\nexport {\n TOKEN_BASIC,\n TOKEN_BEARER,\n HTTP_STATUS,\n API_MESSAGE,\n HEADERS,\n DIST_TAGS,\n CHARACTER_ENCODING,\n HEADER_TYPE,\n LATEST,\n DEFAULT_PASSWORD_VALIDATION,\n DEFAULT_USER,\n USERS,\n MAINTAINERS,\n PLUGIN_CATEGORY,\n PLUGIN_PREFIX,\n PLUGIN_UI_PREFIX,\n HtpasswdHashAlgorithm,\n} from './constants';\nexport {\n authUtils,\n cryptoUtils,\n fileUtils,\n pkgUtils,\n searchUtils,\n streamUtils,\n errorUtils,\n validationUtils,\n stringUtils,\n constants,\n pluginUtils,\n warningUtils,\n tarballUtils,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,uBAAA,CAAAC,OAAA;AAA0CC,OAAA,CAAAH,SAAA,GAAAA,SAAA;AAC1C,IAAAI,SAAA,GAAAH,uBAAA,CAAAC,OAAA;AAAyCC,OAAA,CAAAC,SAAA,GAAAA,SAAA;AACzC,IAAAC,WAAA,GAAAJ,uBAAA,CAAAC,OAAA;AAA8CC,OAAA,CAAAE,WAAA,GAAAA,WAAA;AAC9C,IAAAC,UAAA,GAAAL,uBAAA,CAAAC,OAAA;AAA4CC,OAAA,CAAAG,UAAA,GAAAA,UAAA;AAC5C,IAAAC,SAAA,GAAAN,uBAAA,CAAAC,OAAA;AAA0CC,OAAA,CAAAI,SAAA,GAAAA,SAAA;AAC1C,IAAAC,QAAA,GAAAP,uBAAA,CAAAC,OAAA;AAAwCC,OAAA,CAAAK,QAAA,GAAAA,QAAA;AACxC,IAAAC,WAAA,GAAAR,uBAAA,CAAAC,OAAA;AAA8CC,OAAA,CAAAM,WAAA,GAAAA,WAAA;AAC9C,IAAAC,WAAA,GAAAT,uBAAA,CAAAC,OAAA;AAA8CC,OAAA,CAAAO,WAAA,GAAAA,WAAA;AAC9C,IAAAC,WAAA,GAAAV,uBAAA,CAAAC,OAAA;AAA8CC,OAAA,CAAAQ,WAAA,GAAAA,WAAA;AAC9C,IAAAC,WAAA,GAAAX,uBAAA,CAAAC,OAAA;AAA8CC,OAAA,CAAAS,WAAA,GAAAA,WAAA;AAC9C,IAAAC,YAAA,GAAAZ,uBAAA,CAAAC,OAAA;AAAgDC,OAAA,CAAAU,YAAA,GAAAA,YAAA;AAChD,IAAAC,eAAA,GAAAb,uBAAA,CAAAC,OAAA;AAAsDC,OAAA,CAAAW,eAAA,GAAAA,eAAA;AACtD,IAAAC,YAAA,GAAAd,uBAAA,CAAAC,OAAA;AAAgDC,OAAA,CAAAY,YAAA,GAAAA,YAAA;AAAA,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAhB,wBAAAgB,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA","ignoreList":[]}
@@ -4,6 +4,12 @@ import { Manifest } from '@verdaccio/types';
4
4
  * @return {Array} sorted Array
5
5
  */
6
6
  export declare function semverSort(listVersions: string[]): string[];
7
+ /**
8
+ * Sanitize a version string to a valid semver version.
9
+ * @param version - The version string to sanitize.
10
+ * @returns The sanitized version string.
11
+ */
12
+ export declare function semverSanitize(version: string): string;
7
13
  /**
8
14
  * Get the latest publihsed version of a package.
9
15
  * @param package metadata
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getLatest = getLatest;
7
7
  exports.mergeVersions = mergeVersions;
8
+ exports.semverSanitize = semverSanitize;
8
9
  exports.semverSort = semverSort;
9
10
  var _semver = _interopRequireDefault(require("semver"));
10
11
  var _constants = require("./constants");
@@ -22,6 +23,17 @@ function semverSort(listVersions) {
22
23
  }).sort(_semver.default.compareLoose).map(String);
23
24
  }
24
25
 
26
+ /**
27
+ * Sanitize a version string to a valid semver version.
28
+ * @param version - The version string to sanitize.
29
+ * @returns The sanitized version string.
30
+ */
31
+ function semverSanitize(version) {
32
+ return _semver.default.valid(version) || _semver.default.coerce(version, {
33
+ includePrerelease: true
34
+ })?.version || '';
35
+ }
36
+
25
37
  /**
26
38
  * Get the latest publihsed version of a package.
27
39
  * @param package metadata
@@ -1 +1 @@
1
- {"version":3,"file":"pkg-utils.js","names":["_semver","_interopRequireDefault","require","_constants","e","__esModule","default","semverSort","listVersions","filter","x","semver","parse","sort","compareLoose","map","String","getLatest","pkg","Object","keys","versions","length","Error","latest","DIST_TAGS","mergeVersions","local","upstream","i","lte","readme"],"sources":["../src/pkg-utils.ts"],"sourcesContent":["import semver from 'semver';\n\nimport { Manifest } from '@verdaccio/types';\n\nimport { DIST_TAGS } from './constants';\n\n/**\n * Function filters out bad semver versions and sorts the array.\n * @return {Array} sorted Array\n */\nexport function semverSort(listVersions: string[]): string[] {\n return listVersions\n .filter(function (x): boolean {\n if (!semver.parse(x, true)) {\n return false;\n }\n return true;\n })\n .sort(semver.compareLoose)\n .map(String);\n}\n\n/**\n * Get the latest publihsed version of a package.\n * @param package metadata\n **/\nexport function getLatest(pkg: Manifest): string {\n const listVersions: string[] = Object.keys(pkg.versions);\n if (listVersions.length < 1) {\n throw Error('cannot get lastest version of none');\n }\n\n const versions: string[] = semverSort(listVersions);\n const latest: string | undefined = pkg[DIST_TAGS]?.latest ? pkg[DIST_TAGS].latest : versions[0];\n\n return latest;\n}\n\n/**\n * Function gets a local info and an info from uplinks and tries to merge it\n exported for unit tests only.\n * @param {*} local\n * @param {*} upstream\n * @param {*} config sds\n * @deprecated use @verdaccio/storage mergeVersions method\n */\n// @deprecated\nexport function mergeVersions(local: Manifest, upstream: Manifest) {\n // copy new versions to a cache\n // NOTE: if a certain version was updated, we can't refresh it reliably\n for (const i in upstream.versions) {\n if (typeof local.versions[i] === 'undefined') {\n local.versions[i] = upstream.versions[i];\n }\n }\n\n for (const i in upstream[DIST_TAGS]) {\n if (local[DIST_TAGS][i] !== upstream[DIST_TAGS][i]) {\n if (!local[DIST_TAGS][i] || semver.lte(local[DIST_TAGS][i], upstream[DIST_TAGS][i])) {\n local[DIST_TAGS][i] = upstream[DIST_TAGS][i];\n }\n if (i === 'latest' && local[DIST_TAGS][i] === upstream[DIST_TAGS][i]) {\n // if remote has more fresh package, we should borrow its readme\n local.readme = upstream.readme;\n }\n }\n }\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,UAAA,GAAAD,OAAA;AAAwC,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAExC;AACA;AACA;AACA;AACO,SAASG,UAAUA,CAACC,YAAsB,EAAY;EAC3D,OAAOA,YAAY,CAChBC,MAAM,CAAC,UAAUC,CAAC,EAAW;IAC5B,IAAI,CAACC,eAAM,CAACC,KAAK,CAACF,CAAC,EAAE,IAAI,CAAC,EAAE;MAC1B,OAAO,KAAK;IACd;IACA,OAAO,IAAI;EACb,CAAC,CAAC,CACDG,IAAI,CAACF,eAAM,CAACG,YAAY,CAAC,CACzBC,GAAG,CAACC,MAAM,CAAC;AAChB;;AAEA;AACA;AACA;AACA;AACO,SAASC,SAASA,CAACC,GAAa,EAAU;EAC/C,MAAMV,YAAsB,GAAGW,MAAM,CAACC,IAAI,CAACF,GAAG,CAACG,QAAQ,CAAC;EACxD,IAAIb,YAAY,CAACc,MAAM,GAAG,CAAC,EAAE;IAC3B,MAAMC,KAAK,CAAC,oCAAoC,CAAC;EACnD;EAEA,MAAMF,QAAkB,GAAGd,UAAU,CAACC,YAAY,CAAC;EACnD,MAAMgB,MAA0B,GAAGN,GAAG,CAACO,oBAAS,CAAC,EAAED,MAAM,GAAGN,GAAG,CAACO,oBAAS,CAAC,CAACD,MAAM,GAAGH,QAAQ,CAAC,CAAC,CAAC;EAE/F,OAAOG,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,aAAaA,CAACC,KAAe,EAAEC,QAAkB,EAAE;EACjE;EACA;EACA,KAAK,MAAMC,CAAC,IAAID,QAAQ,CAACP,QAAQ,EAAE;IACjC,IAAI,OAAOM,KAAK,CAACN,QAAQ,CAACQ,CAAC,CAAC,KAAK,WAAW,EAAE;MAC5CF,KAAK,CAACN,QAAQ,CAACQ,CAAC,CAAC,GAAGD,QAAQ,CAACP,QAAQ,CAACQ,CAAC,CAAC;IAC1C;EACF;EAEA,KAAK,MAAMA,CAAC,IAAID,QAAQ,CAACH,oBAAS,CAAC,EAAE;IACnC,IAAIE,KAAK,CAACF,oBAAS,CAAC,CAACI,CAAC,CAAC,KAAKD,QAAQ,CAACH,oBAAS,CAAC,CAACI,CAAC,CAAC,EAAE;MAClD,IAAI,CAACF,KAAK,CAACF,oBAAS,CAAC,CAACI,CAAC,CAAC,IAAIlB,eAAM,CAACmB,GAAG,CAACH,KAAK,CAACF,oBAAS,CAAC,CAACI,CAAC,CAAC,EAAED,QAAQ,CAACH,oBAAS,CAAC,CAACI,CAAC,CAAC,CAAC,EAAE;QACnFF,KAAK,CAACF,oBAAS,CAAC,CAACI,CAAC,CAAC,GAAGD,QAAQ,CAACH,oBAAS,CAAC,CAACI,CAAC,CAAC;MAC9C;MACA,IAAIA,CAAC,KAAK,QAAQ,IAAIF,KAAK,CAACF,oBAAS,CAAC,CAACI,CAAC,CAAC,KAAKD,QAAQ,CAACH,oBAAS,CAAC,CAACI,CAAC,CAAC,EAAE;QACpE;QACAF,KAAK,CAACI,MAAM,GAAGH,QAAQ,CAACG,MAAM;MAChC;IACF;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"file":"pkg-utils.js","names":["_semver","_interopRequireDefault","require","_constants","e","__esModule","default","semverSort","listVersions","filter","x","semver","parse","sort","compareLoose","map","String","semverSanitize","version","valid","coerce","includePrerelease","getLatest","pkg","Object","keys","versions","length","Error","latest","DIST_TAGS","mergeVersions","local","upstream","i","lte","readme"],"sources":["../src/pkg-utils.ts"],"sourcesContent":["import semver from 'semver';\n\nimport { Manifest } from '@verdaccio/types';\n\nimport { DIST_TAGS } from './constants';\n\n/**\n * Function filters out bad semver versions and sorts the array.\n * @return {Array} sorted Array\n */\nexport function semverSort(listVersions: string[]): string[] {\n return listVersions\n .filter(function (x): boolean {\n if (!semver.parse(x, true)) {\n return false;\n }\n return true;\n })\n .sort(semver.compareLoose)\n .map(String);\n}\n\n/**\n * Sanitize a version string to a valid semver version.\n * @param version - The version string to sanitize.\n * @returns The sanitized version string.\n */\nexport function semverSanitize(version: string): string {\n return (\n semver.valid(version) || semver.coerce(version, { includePrerelease: true })?.version || ''\n );\n}\n\n/**\n * Get the latest publihsed version of a package.\n * @param package metadata\n **/\nexport function getLatest(pkg: Manifest): string {\n const listVersions: string[] = Object.keys(pkg.versions);\n if (listVersions.length < 1) {\n throw Error('cannot get lastest version of none');\n }\n\n const versions: string[] = semverSort(listVersions);\n const latest: string | undefined = pkg[DIST_TAGS]?.latest ? pkg[DIST_TAGS].latest : versions[0];\n\n return latest;\n}\n\n/**\n * Function gets a local info and an info from uplinks and tries to merge it\n exported for unit tests only.\n * @param {*} local\n * @param {*} upstream\n * @param {*} config sds\n * @deprecated use @verdaccio/storage mergeVersions method\n */\n// @deprecated\nexport function mergeVersions(local: Manifest, upstream: Manifest) {\n // copy new versions to a cache\n // NOTE: if a certain version was updated, we can't refresh it reliably\n for (const i in upstream.versions) {\n if (typeof local.versions[i] === 'undefined') {\n local.versions[i] = upstream.versions[i];\n }\n }\n\n for (const i in upstream[DIST_TAGS]) {\n if (local[DIST_TAGS][i] !== upstream[DIST_TAGS][i]) {\n if (!local[DIST_TAGS][i] || semver.lte(local[DIST_TAGS][i], upstream[DIST_TAGS][i])) {\n local[DIST_TAGS][i] = upstream[DIST_TAGS][i];\n }\n if (i === 'latest' && local[DIST_TAGS][i] === upstream[DIST_TAGS][i]) {\n // if remote has more fresh package, we should borrow its readme\n local.readme = upstream.readme;\n }\n }\n }\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,UAAA,GAAAD,OAAA;AAAwC,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAExC;AACA;AACA;AACA;AACO,SAASG,UAAUA,CAACC,YAAsB,EAAY;EAC3D,OAAOA,YAAY,CAChBC,MAAM,CAAC,UAAUC,CAAC,EAAW;IAC5B,IAAI,CAACC,eAAM,CAACC,KAAK,CAACF,CAAC,EAAE,IAAI,CAAC,EAAE;MAC1B,OAAO,KAAK;IACd;IACA,OAAO,IAAI;EACb,CAAC,CAAC,CACDG,IAAI,CAACF,eAAM,CAACG,YAAY,CAAC,CACzBC,GAAG,CAACC,MAAM,CAAC;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAACC,OAAe,EAAU;EACtD,OACEP,eAAM,CAACQ,KAAK,CAACD,OAAO,CAAC,IAAIP,eAAM,CAACS,MAAM,CAACF,OAAO,EAAE;IAAEG,iBAAiB,EAAE;EAAK,CAAC,CAAC,EAAEH,OAAO,IAAI,EAAE;AAE/F;;AAEA;AACA;AACA;AACA;AACO,SAASI,SAASA,CAACC,GAAa,EAAU;EAC/C,MAAMf,YAAsB,GAAGgB,MAAM,CAACC,IAAI,CAACF,GAAG,CAACG,QAAQ,CAAC;EACxD,IAAIlB,YAAY,CAACmB,MAAM,GAAG,CAAC,EAAE;IAC3B,MAAMC,KAAK,CAAC,oCAAoC,CAAC;EACnD;EAEA,MAAMF,QAAkB,GAAGnB,UAAU,CAACC,YAAY,CAAC;EACnD,MAAMqB,MAA0B,GAAGN,GAAG,CAACO,oBAAS,CAAC,EAAED,MAAM,GAAGN,GAAG,CAACO,oBAAS,CAAC,CAACD,MAAM,GAAGH,QAAQ,CAAC,CAAC,CAAC;EAE/F,OAAOG,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,aAAaA,CAACC,KAAe,EAAEC,QAAkB,EAAE;EACjE;EACA;EACA,KAAK,MAAMC,CAAC,IAAID,QAAQ,CAACP,QAAQ,EAAE;IACjC,IAAI,OAAOM,KAAK,CAACN,QAAQ,CAACQ,CAAC,CAAC,KAAK,WAAW,EAAE;MAC5CF,KAAK,CAACN,QAAQ,CAACQ,CAAC,CAAC,GAAGD,QAAQ,CAACP,QAAQ,CAACQ,CAAC,CAAC;IAC1C;EACF;EAEA,KAAK,MAAMA,CAAC,IAAID,QAAQ,CAACH,oBAAS,CAAC,EAAE;IACnC,IAAIE,KAAK,CAACF,oBAAS,CAAC,CAACI,CAAC,CAAC,KAAKD,QAAQ,CAACH,oBAAS,CAAC,CAACI,CAAC,CAAC,EAAE;MAClD,IAAI,CAACF,KAAK,CAACF,oBAAS,CAAC,CAACI,CAAC,CAAC,IAAIvB,eAAM,CAACwB,GAAG,CAACH,KAAK,CAACF,oBAAS,CAAC,CAACI,CAAC,CAAC,EAAED,QAAQ,CAACH,oBAAS,CAAC,CAACI,CAAC,CAAC,CAAC,EAAE;QACnFF,KAAK,CAACF,oBAAS,CAAC,CAACI,CAAC,CAAC,GAAGD,QAAQ,CAACH,oBAAS,CAAC,CAACI,CAAC,CAAC;MAC9C;MACA,IAAIA,CAAC,KAAK,QAAQ,IAAIF,KAAK,CAACF,oBAAS,CAAC,CAACI,CAAC,CAAC,KAAKD,QAAQ,CAACH,oBAAS,CAAC,CAACI,CAAC,CAAC,EAAE;QACpE;QACAF,KAAK,CAACI,MAAM,GAAGH,QAAQ,CAACG,MAAM;MAChC;IACF;EACF;AACF","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdaccio/core",
3
- "version": "8.0.0-next-8.15",
3
+ "version": "8.0.0-next-8.16",
4
4
  "description": "Verdaccio Core Components",
5
5
  "keywords": [
6
6
  "private",
@@ -37,11 +37,12 @@
37
37
  "core-js": "3.40.0",
38
38
  "http-errors": "2.0.0",
39
39
  "http-status-codes": "2.3.0",
40
+ "minimatch": "10.0.1",
40
41
  "process-warning": "1.0.0",
41
42
  "semver": "7.7.1"
42
43
  },
43
44
  "devDependencies": {
44
- "@verdaccio/types": "13.0.0-next-8.5",
45
+ "@verdaccio/types": "13.0.0-next-8.6",
45
46
  "lodash": "4.17.21",
46
47
  "typedoc": "0.23.25",
47
48
  "typedoc-plugin-missing-exports": "latest"