@verdaccio/core 6.0.0-6-next.3 → 6.0.0-6-next.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @verdaccio/core
2
2
 
3
+ ## 6.0.0-6-next.4
4
+
5
+ ### Minor Changes
6
+
7
+ - 24b9be02: refactor: improve docker image build with strict dependencies and prod build
8
+
3
9
  ## 6.0.0-6-next.3
4
10
 
5
11
  ### Minor Changes
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/error-utils.ts"],"names":["API_ERROR","PASSWORD_SHORT","passLength","DEFAULT_MIN_LIMIT_PASSWORD","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","CONTENT_MISMATCH","NOT_FILE_UPLINK","MAX_USERS_REACHED","VERSION_NOT_EXIST","UNSUPORTED_REGISTRY_CALL","FILE_NOT_FOUND","REGISTRATION_DISABLED","UNAUTHORIZED_ACCESS","BAD_STATUS_CODE","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","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","getConflict","HTTP_STATUS","CONFLICT","getBadData","customMessage","getBadRequest","BAD_REQUEST","getInternalError","INTERNAL_ERROR","getUnauthorized","UNAUTHORIZED","getForbidden","FORBIDDEN","getServiceUnavailable","SERVICE_UNAVAILABLE","getNotFound","NOT_FOUND","getCode","statusCode"],"mappings":"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","sourcesContent":["import createError, { HttpError } from 'http-errors';\nimport { DEFAULT_MIN_LIMIT_PASSWORD, HTTP_STATUS } from './constants';\n\nexport const API_ERROR = {\n PASSWORD_SHORT: (passLength = DEFAULT_MIN_LIMIT_PASSWORD): string =>\n `The provided password is too short. Please pick a password longer than ` +\n `${passLength} characters.`,\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 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 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 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};\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"],"file":"error-utils.js"}
1
+ {"version":3,"sources":["../src/error-utils.ts"],"names":["API_ERROR","PASSWORD_SHORT","passLength","DEFAULT_MIN_LIMIT_PASSWORD","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","CONTENT_MISMATCH","NOT_FILE_UPLINK","MAX_USERS_REACHED","VERSION_NOT_EXIST","UNSUPORTED_REGISTRY_CALL","FILE_NOT_FOUND","REGISTRATION_DISABLED","UNAUTHORIZED_ACCESS","BAD_STATUS_CODE","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","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","getConflict","HTTP_STATUS","CONFLICT","getBadData","customMessage","getBadRequest","BAD_REQUEST","getInternalError","INTERNAL_ERROR","getUnauthorized","UNAUTHORIZED","getForbidden","FORBIDDEN","getServiceUnavailable","SERVICE_UNAVAILABLE","getNotFound","NOT_FOUND","getCode","statusCode"],"mappings":"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","sourcesContent":["import createError, { HttpError } from 'http-errors';\n\nimport { DEFAULT_MIN_LIMIT_PASSWORD, HTTP_STATUS } from './constants';\n\nexport const API_ERROR = {\n PASSWORD_SHORT: (passLength = DEFAULT_MIN_LIMIT_PASSWORD): string =>\n `The provided password is too short. Please pick a password longer than ` +\n `${passLength} characters.`,\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 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 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 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};\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"],"file":"error-utils.js"}
package/build/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- import * as searchUtils from './search-utils';
2
- import * as streamUtils from './stream-utils';
3
- import * as errorUtils from './error-utils';
4
- import * as validatioUtils from './validation-utils';
5
1
  import * as constants from './constants';
6
- import * as pluginUtils from './plugin-utils';
2
+ import * as errorUtils from './error-utils';
7
3
  import * as fileUtils from './file-utils';
8
4
  import * as pkgUtils from './pkg-utils';
5
+ import * as pluginUtils from './plugin-utils';
6
+ import * as searchUtils from './search-utils';
7
+ import * as streamUtils from './stream-utils';
8
+ import * as validatioUtils from './validation-utils';
9
9
  import * as warningUtils from './warning-utils';
10
10
  export { VerdaccioError, API_ERROR, SUPPORT_ERRORS, APP_ERROR } from './error-utils';
11
11
  export { TOKEN_BASIC, TOKEN_BEARER, HTTP_STATUS, API_MESSAGE, HEADERS, DIST_TAGS, CHARACTER_ENCODING, HEADER_TYPE, LATEST, DEFAULT_MIN_LIMIT_PASSWORD, DEFAULT_USER, USERS, } from './constants';
package/build/index.js CHANGED
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- require("core-js/modules/esnext.weak-map.delete-all.js");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
@@ -103,37 +101,37 @@ Object.defineProperty(exports, "VerdaccioError", {
103
101
  });
104
102
  exports.warningUtils = exports.validatioUtils = exports.streamUtils = exports.searchUtils = exports.pluginUtils = exports.pkgUtils = exports.fileUtils = exports.errorUtils = exports.constants = void 0;
105
103
 
106
- var searchUtils = _interopRequireWildcard(require("./search-utils"));
107
-
108
- exports.searchUtils = searchUtils;
109
-
110
- var streamUtils = _interopRequireWildcard(require("./stream-utils"));
104
+ var constants = _interopRequireWildcard(require("./constants"));
111
105
 
112
- exports.streamUtils = streamUtils;
106
+ exports.constants = constants;
113
107
 
114
108
  var errorUtils = _interopRequireWildcard(require("./error-utils"));
115
109
 
116
110
  exports.errorUtils = errorUtils;
117
111
 
118
- var validatioUtils = _interopRequireWildcard(require("./validation-utils"));
112
+ var fileUtils = _interopRequireWildcard(require("./file-utils"));
119
113
 
120
- exports.validatioUtils = validatioUtils;
114
+ exports.fileUtils = fileUtils;
121
115
 
122
- var constants = _interopRequireWildcard(require("./constants"));
116
+ var pkgUtils = _interopRequireWildcard(require("./pkg-utils"));
123
117
 
124
- exports.constants = constants;
118
+ exports.pkgUtils = pkgUtils;
125
119
 
126
120
  var pluginUtils = _interopRequireWildcard(require("./plugin-utils"));
127
121
 
128
122
  exports.pluginUtils = pluginUtils;
129
123
 
130
- var fileUtils = _interopRequireWildcard(require("./file-utils"));
124
+ var searchUtils = _interopRequireWildcard(require("./search-utils"));
131
125
 
132
- exports.fileUtils = fileUtils;
126
+ exports.searchUtils = searchUtils;
133
127
 
134
- var pkgUtils = _interopRequireWildcard(require("./pkg-utils"));
128
+ var streamUtils = _interopRequireWildcard(require("./stream-utils"));
135
129
 
136
- exports.pkgUtils = pkgUtils;
130
+ exports.streamUtils = streamUtils;
131
+
132
+ var validatioUtils = _interopRequireWildcard(require("./validation-utils"));
133
+
134
+ exports.validatioUtils = validatioUtils;
137
135
 
138
136
  var warningUtils = _interopRequireWildcard(require("./warning-utils"));
139
137
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA","sourcesContent":["import * as searchUtils from './search-utils';\nimport * as streamUtils from './stream-utils';\nimport * as errorUtils from './error-utils';\nimport * as validatioUtils from './validation-utils';\nimport * as constants from './constants';\nimport * as pluginUtils from './plugin-utils';\nimport * as fileUtils from './file-utils';\nimport * as pkgUtils from './pkg-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_MIN_LIMIT_PASSWORD,\n DEFAULT_USER,\n USERS,\n} from './constants';\n\nexport {\n fileUtils,\n pkgUtils,\n searchUtils,\n streamUtils,\n errorUtils,\n validatioUtils,\n constants,\n pluginUtils,\n warningUtils,\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA","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 validatioUtils 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_MIN_LIMIT_PASSWORD,\n DEFAULT_USER,\n USERS,\n} from './constants';\n\nexport {\n fileUtils,\n pkgUtils,\n searchUtils,\n streamUtils,\n errorUtils,\n validatioUtils,\n constants,\n pluginUtils,\n warningUtils,\n};\n"],"file":"index.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/pkg-utils.ts"],"names":["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"],"mappings":";;;;;;;;;AACA;;AACA;;;;AAEA;AACA;AACA;AACA;AACO,SAASA,UAAT,CAAoBC,YAApB,EAAsD;AAC3D,SAAOA,YAAY,CAChBC,MADI,CACG,UAAUC,CAAV,EAAsB;AAC5B,QAAI,CAACC,gBAAOC,KAAP,CAAaF,CAAb,EAAgB,IAAhB,CAAL,EAA4B;AAC1B,aAAO,KAAP;AACD;;AACD,WAAO,IAAP;AACD,GANI,EAOJG,IAPI,CAOCF,gBAAOG,YAPR,EAQJC,GARI,CAQAC,MARA,CAAP;AASD;AAED;AACA;AACA;AACA;;;AACO,SAASC,SAAT,CAAmBC,GAAnB,EAAyC;AAAA;;AAC9C,QAAMV,YAAsB,GAAGW,MAAM,CAACC,IAAP,CAAYF,GAAG,CAACG,QAAhB,CAA/B;;AACA,MAAIb,YAAY,CAACc,MAAb,GAAsB,CAA1B,EAA6B;AAC3B,UAAMC,KAAK,CAAC,oCAAD,CAAX;AACD;;AAED,QAAMF,QAAkB,GAAGd,UAAU,CAACC,YAAD,CAArC;AACA,QAAMgB,MAA0B,GAAG,kBAAAN,GAAG,CAACO,oBAAD,CAAH,0DAAgBD,MAAhB,GAAyBN,GAAG,CAACO,oBAAD,CAAH,CAAeD,MAAxC,GAAiDH,QAAQ,CAAC,CAAD,CAA5F;AAEA,SAAOG,MAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASE,aAAT,CAAuBC,KAAvB,EAAuCC,QAAvC,EAA0D;AAC/D;AACA;AACA,OAAK,MAAMC,CAAX,IAAgBD,QAAQ,CAACP,QAAzB,EAAmC;AACjC,QAAI,OAAOM,KAAK,CAACN,QAAN,CAAeQ,CAAf,CAAP,KAA6B,WAAjC,EAA8C;AAC5CF,MAAAA,KAAK,CAACN,QAAN,CAAeQ,CAAf,IAAoBD,QAAQ,CAACP,QAAT,CAAkBQ,CAAlB,CAApB;AACD;AACF;;AAED,OAAK,MAAMA,CAAX,IAAgBD,QAAQ,CAACH,oBAAD,CAAxB,EAAqC;AACnC,QAAIE,KAAK,CAACF,oBAAD,CAAL,CAAiBI,CAAjB,MAAwBD,QAAQ,CAACH,oBAAD,CAAR,CAAoBI,CAApB,CAA5B,EAAoD;AAClD,UAAI,CAACF,KAAK,CAACF,oBAAD,CAAL,CAAiBI,CAAjB,CAAD,IAAwBlB,gBAAOmB,GAAP,CAAWH,KAAK,CAACF,oBAAD,CAAL,CAAiBI,CAAjB,CAAX,EAAgCD,QAAQ,CAACH,oBAAD,CAAR,CAAoBI,CAApB,CAAhC,CAA5B,EAAqF;AACnFF,QAAAA,KAAK,CAACF,oBAAD,CAAL,CAAiBI,CAAjB,IAAsBD,QAAQ,CAACH,oBAAD,CAAR,CAAoBI,CAApB,CAAtB;AACD;;AACD,UAAIA,CAAC,KAAK,QAAN,IAAkBF,KAAK,CAACF,oBAAD,CAAL,CAAiBI,CAAjB,MAAwBD,QAAQ,CAACH,oBAAD,CAAR,CAAoBI,CAApB,CAA9C,EAAsE;AACpE;AACAF,QAAAA,KAAK,CAACI,MAAN,GAAeH,QAAQ,CAACG,MAAxB;AACD;AACF;AACF;AACF","sourcesContent":["import { Package } from '@verdaccio/types';\nimport semver from 'semver';\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: Package): 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 */\nexport function mergeVersions(local: Package, upstream: Package) {\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"],"file":"pkg-utils.js"}
1
+ {"version":3,"sources":["../src/pkg-utils.ts"],"names":["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"],"mappings":";;;;;;;;;AAAA;;AAIA;;;;AAEA;AACA;AACA;AACA;AACO,SAASA,UAAT,CAAoBC,YAApB,EAAsD;AAC3D,SAAOA,YAAY,CAChBC,MADI,CACG,UAAUC,CAAV,EAAsB;AAC5B,QAAI,CAACC,gBAAOC,KAAP,CAAaF,CAAb,EAAgB,IAAhB,CAAL,EAA4B;AAC1B,aAAO,KAAP;AACD;;AACD,WAAO,IAAP;AACD,GANI,EAOJG,IAPI,CAOCF,gBAAOG,YAPR,EAQJC,GARI,CAQAC,MARA,CAAP;AASD;AAED;AACA;AACA;AACA;;;AACO,SAASC,SAAT,CAAmBC,GAAnB,EAAyC;AAAA;;AAC9C,QAAMV,YAAsB,GAAGW,MAAM,CAACC,IAAP,CAAYF,GAAG,CAACG,QAAhB,CAA/B;;AACA,MAAIb,YAAY,CAACc,MAAb,GAAsB,CAA1B,EAA6B;AAC3B,UAAMC,KAAK,CAAC,oCAAD,CAAX;AACD;;AAED,QAAMF,QAAkB,GAAGd,UAAU,CAACC,YAAD,CAArC;AACA,QAAMgB,MAA0B,GAAG,kBAAAN,GAAG,CAACO,oBAAD,CAAH,0DAAgBD,MAAhB,GAAyBN,GAAG,CAACO,oBAAD,CAAH,CAAeD,MAAxC,GAAiDH,QAAQ,CAAC,CAAD,CAA5F;AAEA,SAAOG,MAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASE,aAAT,CAAuBC,KAAvB,EAAuCC,QAAvC,EAA0D;AAC/D;AACA;AACA,OAAK,MAAMC,CAAX,IAAgBD,QAAQ,CAACP,QAAzB,EAAmC;AACjC,QAAI,OAAOM,KAAK,CAACN,QAAN,CAAeQ,CAAf,CAAP,KAA6B,WAAjC,EAA8C;AAC5CF,MAAAA,KAAK,CAACN,QAAN,CAAeQ,CAAf,IAAoBD,QAAQ,CAACP,QAAT,CAAkBQ,CAAlB,CAApB;AACD;AACF;;AAED,OAAK,MAAMA,CAAX,IAAgBD,QAAQ,CAACH,oBAAD,CAAxB,EAAqC;AACnC,QAAIE,KAAK,CAACF,oBAAD,CAAL,CAAiBI,CAAjB,MAAwBD,QAAQ,CAACH,oBAAD,CAAR,CAAoBI,CAApB,CAA5B,EAAoD;AAClD,UAAI,CAACF,KAAK,CAACF,oBAAD,CAAL,CAAiBI,CAAjB,CAAD,IAAwBlB,gBAAOmB,GAAP,CAAWH,KAAK,CAACF,oBAAD,CAAL,CAAiBI,CAAjB,CAAX,EAAgCD,QAAQ,CAACH,oBAAD,CAAR,CAAoBI,CAApB,CAAhC,CAA5B,EAAqF;AACnFF,QAAAA,KAAK,CAACF,oBAAD,CAAL,CAAiBI,CAAjB,IAAsBD,QAAQ,CAACH,oBAAD,CAAR,CAAoBI,CAApB,CAAtB;AACD;;AACD,UAAIA,CAAC,KAAK,QAAN,IAAkBF,KAAK,CAACF,oBAAD,CAAL,CAAiBI,CAAjB,MAAwBD,QAAQ,CAACH,oBAAD,CAAR,CAAoBI,CAApB,CAA9C,EAAsE;AACpE;AACAF,QAAAA,KAAK,CAACI,MAAN,GAAeH,QAAQ,CAACG,MAAxB;AACD;AACF;AACF;AACF","sourcesContent":["import semver from 'semver';\n\nimport { Package } 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: Package): 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 */\nexport function mergeVersions(local: Package, upstream: Package) {\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"],"file":"pkg-utils.js"}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- import { PassThrough, TransformOptions, Transform } from 'stream';
2
+ import { PassThrough, Transform, TransformOptions } from 'stream';
3
3
  export interface IReadTarball {
4
4
  abort?: () => void;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/stream-utils.ts"],"names":["ReadTarball","PassThrough","constructor","options","addAbstractMethods","abort","UploadTarball","done","self","name","_called_methods","__defineGetter__","__defineSetter__","fn","readableToString","stream","chunks","chunk","push","Buffer","from","buffer","concat","str","toString","transformObjectToString","Transform","objectMode","transform","encoding","callback","JSON","stringify"],"mappings":";;;;;;;AAAA;;AAWA;AACA;AACA;AACA;AACA;AACA,MAAMA,WAAN,SAA0BC,mBAA1B,CAA8D;AAC5D;AACF;AACA;AACA;AACSC,EAAAA,WAAW,CAACC,OAAD,EAA4B;AAC5C,UAAMA,OAAN,EAD4C,CAE5C;;AACAC,IAAAA,kBAAkB,CAAC,IAAD,EAAO,OAAP,CAAlB;AACD;;AAEMC,EAAAA,KAAK,GAAS,CAAE;;AAXqC;AAc9D;AACA;AACA;AACA;AACA;;;;;AACA,MAAMC,aAAN,SAA4BL,mBAA5B,CAAkE;AAChE;AACF;AACA;AACA;AACSC,EAAAA,WAAW,CAACC,OAAD,EAAe;AAC/B,UAAMA,OAAN,EAD+B,CAE/B;;AACAC,IAAAA,kBAAkB,CAAC,IAAD,EAAO,OAAP,CAAlB,CAH+B,CAK/B;;AACAA,IAAAA,kBAAkB,CAAC,IAAD,EAAO,MAAP,CAAlB;AACD;;AAEMC,EAAAA,KAAK,GAAS,CAAE;;AAChBE,EAAAA,IAAI,GAAS,CAAE;;AAf0C;AAkBlE;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACA,SAASH,kBAAT,CAA4BI,IAA5B,EAAuCC,IAAvC,EAAwD;AACtDD,EAAAA,IAAI,CAACE,eAAL,GAAuBF,IAAI,CAACE,eAAL,IAAwB,EAA/C;;AAEAF,EAAAA,IAAI,CAACG,gBAAL,CAAsBF,IAAtB,EAA4B,YAAY;AACtC,WAAO,YAAkB;AACvBD,MAAAA,IAAI,CAACE,eAAL,CAAqBD,IAArB,IAA6B,IAA7B;AACD,KAFD;AAGD,GAJD;;AAMAD,EAAAA,IAAI,CAACI,gBAAL,CAAsBH,IAAtB,EAA4B,UAAUI,EAAV,EAAmB;AAC7C,WAAOL,IAAI,CAACC,IAAD,CAAX;AAEAD,IAAAA,IAAI,CAACC,IAAD,CAAJ,GAAaI,EAAb,CAH6C,CAK7C;;AACA,QAAIL,IAAI,CAACE,eAAL,IAAwBF,IAAI,CAACE,eAAL,CAAqBD,IAArB,CAA5B,EAAwD;AACtD,aAAOD,IAAI,CAACE,eAAL,CAAqBD,IAArB,CAAP;AAEAD,MAAAA,IAAI,CAACC,IAAD,CAAJ;AACD;AACF,GAXD;AAYD;AAED;AACA;AACA;;;AACA,MAAMK,gBAAgB,GAAG,MAAOC,MAAP,IAAkB;AACzC,QAAMC,MAAgB,GAAG,EAAzB;;AACA,aAAW,IAAIC,KAAf,IAAwBF,MAAxB,EAAgC;AAC9BC,IAAAA,MAAM,CAACE,IAAP,CAAYC,MAAM,CAACC,IAAP,CAAYH,KAAZ,CAAZ;AACD;;AACD,QAAMI,MAAM,GAAGF,MAAM,CAACG,MAAP,CAAcN,MAAd,CAAf;AACA,QAAMO,GAAG,GAAGF,MAAM,CAACG,QAAP,CAAgB,OAAhB,CAAZ;AACA,SAAOD,GAAP;AACD,CARD;AAUA;AACA;AACA;;;;;AACA,MAAME,uBAAuB,GAAG,MAAM;AACpC,SAAO,IAAIC,iBAAJ,CAAc;AACnBC,IAAAA,UAAU,EAAE,IADO;AAEnBC,IAAAA,SAAS,EAAE,CAACX,KAAD,EAAQY,QAAR,EAAkBC,QAAlB,KAA+B;AACxCA,MAAAA,QAAQ,CAAC,IAAD,EAAOC,IAAI,CAACC,SAAL,CAAef,KAAf,CAAP,CAAR;AACD;AAJkB,GAAd,CAAP;AAMD,CAPD","sourcesContent":["import { PassThrough, TransformOptions, Transform } from 'stream';\n\nexport interface IReadTarball {\n abort?: () => void;\n}\n\nexport interface IUploadTarball {\n done?: () => void;\n abort?: () => void;\n}\n\n/**\n * This stream is used to read tarballs from repository.\n * @param {*} options\n * @return {Stream}\n */\nclass ReadTarball extends PassThrough implements IReadTarball {\n /**\n *\n * @param {Object} options\n */\n public constructor(options: TransformOptions) {\n super(options);\n // called when data is not needed anymore\n addAbstractMethods(this, 'abort');\n }\n\n public abort(): void {}\n}\n\n/**\n * This stream is used to upload tarballs to a repository.\n * @param {*} options\n * @return {Stream}\n */\nclass UploadTarball extends PassThrough implements IUploadTarball {\n /**\n *\n * @param {Object} options\n */\n public constructor(options: any) {\n super(options);\n // called when user closes connection before upload finishes\n addAbstractMethods(this, 'abort');\n\n // called when upload finishes successfully\n addAbstractMethods(this, 'done');\n }\n\n public abort(): void {}\n public done(): void {}\n}\n\n/**\n * This function intercepts abstract calls and replays them allowing.\n * us to attach those functions after we are ready to do so\n * @param {*} self\n * @param {*} name\n */\n// Perhaps someone knows a better way to write this\nfunction addAbstractMethods(self: any, name: any): void {\n self._called_methods = self._called_methods || {};\n\n self.__defineGetter__(name, function () {\n return function (): void {\n self._called_methods[name] = true;\n };\n });\n\n self.__defineSetter__(name, function (fn: any) {\n delete self[name];\n\n self[name] = fn;\n\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (self._called_methods && self._called_methods[name]) {\n delete self._called_methods[name];\n\n self[name]();\n }\n });\n}\n\n/**\n * Converts a buffer stream to a string.\n */\nconst readableToString = async (stream) => {\n const chunks: Buffer[] = [];\n for await (let chunk of stream) {\n chunks.push(Buffer.from(chunk));\n }\n const buffer = Buffer.concat(chunks);\n const str = buffer.toString('utf-8');\n return str;\n};\n\n/**\n * Transform stream object mode to string\n **/\nconst transformObjectToString = () => {\n return new Transform({\n objectMode: true,\n transform: (chunk, encoding, callback) => {\n callback(null, JSON.stringify(chunk));\n },\n });\n};\n\nexport { ReadTarball, UploadTarball, readableToString, transformObjectToString };\n"],"file":"stream-utils.js"}
1
+ {"version":3,"sources":["../src/stream-utils.ts"],"names":["ReadTarball","PassThrough","constructor","options","addAbstractMethods","abort","UploadTarball","done","self","name","_called_methods","__defineGetter__","__defineSetter__","fn","readableToString","stream","chunks","chunk","push","Buffer","from","buffer","concat","str","toString","transformObjectToString","Transform","objectMode","transform","encoding","callback","JSON","stringify"],"mappings":";;;;;;;AAAA;;AAWA;AACA;AACA;AACA;AACA;AACA,MAAMA,WAAN,SAA0BC,mBAA1B,CAA8D;AAC5D;AACF;AACA;AACA;AACSC,EAAAA,WAAW,CAACC,OAAD,EAA4B;AAC5C,UAAMA,OAAN,EAD4C,CAE5C;;AACAC,IAAAA,kBAAkB,CAAC,IAAD,EAAO,OAAP,CAAlB;AACD;;AAEMC,EAAAA,KAAK,GAAS,CAAE;;AAXqC;AAc9D;AACA;AACA;AACA;AACA;;;;;AACA,MAAMC,aAAN,SAA4BL,mBAA5B,CAAkE;AAChE;AACF;AACA;AACA;AACSC,EAAAA,WAAW,CAACC,OAAD,EAAe;AAC/B,UAAMA,OAAN,EAD+B,CAE/B;;AACAC,IAAAA,kBAAkB,CAAC,IAAD,EAAO,OAAP,CAAlB,CAH+B,CAK/B;;AACAA,IAAAA,kBAAkB,CAAC,IAAD,EAAO,MAAP,CAAlB;AACD;;AAEMC,EAAAA,KAAK,GAAS,CAAE;;AAChBE,EAAAA,IAAI,GAAS,CAAE;;AAf0C;AAkBlE;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACA,SAASH,kBAAT,CAA4BI,IAA5B,EAAuCC,IAAvC,EAAwD;AACtDD,EAAAA,IAAI,CAACE,eAAL,GAAuBF,IAAI,CAACE,eAAL,IAAwB,EAA/C;;AAEAF,EAAAA,IAAI,CAACG,gBAAL,CAAsBF,IAAtB,EAA4B,YAAY;AACtC,WAAO,YAAkB;AACvBD,MAAAA,IAAI,CAACE,eAAL,CAAqBD,IAArB,IAA6B,IAA7B;AACD,KAFD;AAGD,GAJD;;AAMAD,EAAAA,IAAI,CAACI,gBAAL,CAAsBH,IAAtB,EAA4B,UAAUI,EAAV,EAAmB;AAC7C,WAAOL,IAAI,CAACC,IAAD,CAAX;AAEAD,IAAAA,IAAI,CAACC,IAAD,CAAJ,GAAaI,EAAb,CAH6C,CAK7C;;AACA,QAAIL,IAAI,CAACE,eAAL,IAAwBF,IAAI,CAACE,eAAL,CAAqBD,IAArB,CAA5B,EAAwD;AACtD,aAAOD,IAAI,CAACE,eAAL,CAAqBD,IAArB,CAAP;AAEAD,MAAAA,IAAI,CAACC,IAAD,CAAJ;AACD;AACF,GAXD;AAYD;AAED;AACA;AACA;;;AACA,MAAMK,gBAAgB,GAAG,MAAOC,MAAP,IAAkB;AACzC,QAAMC,MAAgB,GAAG,EAAzB;;AACA,aAAW,IAAIC,KAAf,IAAwBF,MAAxB,EAAgC;AAC9BC,IAAAA,MAAM,CAACE,IAAP,CAAYC,MAAM,CAACC,IAAP,CAAYH,KAAZ,CAAZ;AACD;;AACD,QAAMI,MAAM,GAAGF,MAAM,CAACG,MAAP,CAAcN,MAAd,CAAf;AACA,QAAMO,GAAG,GAAGF,MAAM,CAACG,QAAP,CAAgB,OAAhB,CAAZ;AACA,SAAOD,GAAP;AACD,CARD;AAUA;AACA;AACA;;;;;AACA,MAAME,uBAAuB,GAAG,MAAM;AACpC,SAAO,IAAIC,iBAAJ,CAAc;AACnBC,IAAAA,UAAU,EAAE,IADO;AAEnBC,IAAAA,SAAS,EAAE,CAACX,KAAD,EAAQY,QAAR,EAAkBC,QAAlB,KAA+B;AACxCA,MAAAA,QAAQ,CAAC,IAAD,EAAOC,IAAI,CAACC,SAAL,CAAef,KAAf,CAAP,CAAR;AACD;AAJkB,GAAd,CAAP;AAMD,CAPD","sourcesContent":["import { PassThrough, Transform, TransformOptions } from 'stream';\n\nexport interface IReadTarball {\n abort?: () => void;\n}\n\nexport interface IUploadTarball {\n done?: () => void;\n abort?: () => void;\n}\n\n/**\n * This stream is used to read tarballs from repository.\n * @param {*} options\n * @return {Stream}\n */\nclass ReadTarball extends PassThrough implements IReadTarball {\n /**\n *\n * @param {Object} options\n */\n public constructor(options: TransformOptions) {\n super(options);\n // called when data is not needed anymore\n addAbstractMethods(this, 'abort');\n }\n\n public abort(): void {}\n}\n\n/**\n * This stream is used to upload tarballs to a repository.\n * @param {*} options\n * @return {Stream}\n */\nclass UploadTarball extends PassThrough implements IUploadTarball {\n /**\n *\n * @param {Object} options\n */\n public constructor(options: any) {\n super(options);\n // called when user closes connection before upload finishes\n addAbstractMethods(this, 'abort');\n\n // called when upload finishes successfully\n addAbstractMethods(this, 'done');\n }\n\n public abort(): void {}\n public done(): void {}\n}\n\n/**\n * This function intercepts abstract calls and replays them allowing.\n * us to attach those functions after we are ready to do so\n * @param {*} self\n * @param {*} name\n */\n// Perhaps someone knows a better way to write this\nfunction addAbstractMethods(self: any, name: any): void {\n self._called_methods = self._called_methods || {};\n\n self.__defineGetter__(name, function () {\n return function (): void {\n self._called_methods[name] = true;\n };\n });\n\n self.__defineSetter__(name, function (fn: any) {\n delete self[name];\n\n self[name] = fn;\n\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (self._called_methods && self._called_methods[name]) {\n delete self._called_methods[name];\n\n self[name]();\n }\n });\n}\n\n/**\n * Converts a buffer stream to a string.\n */\nconst readableToString = async (stream) => {\n const chunks: Buffer[] = [];\n for await (let chunk of stream) {\n chunks.push(Buffer.from(chunk));\n }\n const buffer = Buffer.concat(chunks);\n const str = buffer.toString('utf-8');\n return str;\n};\n\n/**\n * Transform stream object mode to string\n **/\nconst transformObjectToString = () => {\n return new Transform({\n objectMode: true,\n transform: (chunk, encoding, callback) => {\n callback(null, JSON.stringify(chunk));\n },\n });\n};\n\nexport { ReadTarball, UploadTarball, readableToString, transformObjectToString };\n"],"file":"stream-utils.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/validation-utils.ts"],"names":["isPackageNameScoped","name","startsWith","validateName","normalizedName","toLowerCase","isScoped","scopedName","split","match","includes","validatePackage","nameList","length","slice","validateMetadata","object","isObject","assert","strictEqual","DIST_TAGS","obj","prototype","Array","isArray"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;;;AAEO,SAASA,mBAAT,CAA6BC,IAA7B,EAAoD;AACzD,SAAOA,IAAI,CAACC,UAAL,CAAgB,GAAhB,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASC,YAAT,CAAsBF,IAAtB,EAA6C;AAClD,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5B,WAAO,KAAP;AACD;;AAED,MAAIG,cAAsB,GAAGH,IAAI,CAACI,WAAL,EAA7B;AAEA,QAAMC,QAAiB,GAAGN,mBAAmB,CAACC,IAAD,CAA7C;AACA,QAAMM,UAAU,GAAGN,IAAI,CAACO,KAAL,CAAW,GAAX,EAAgB,CAAhB,EAAmB,CAAnB,CAAnB;;AAEA,MAAIF,QAAQ,IAAI,OAAOC,UAAP,KAAsB,WAAtC,EAAmD;AACjDH,IAAAA,cAAc,GAAGG,UAAU,CAACF,WAAX,EAAjB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,SAAO,EACL,CAACD,cAAc,CAACK,KAAf,CAAqB,0BAArB,CAAD,IACAL,cAAc,CAACF,UAAf,CAA0B,GAA1B,CADA,IACkC;AAClC,GAAC,cAAD,EAAiB,WAAjB,EAA8B,aAA9B,EAA6CQ,QAA7C,CAAsDN,cAAtD,CAHK,CAAP;AAKD;AAED;AACA;AACA;AACA;;;AACO,SAASO,eAAT,CAAyBV,IAAzB,EAAgD;AACrD,QAAMW,QAAQ,GAAGX,IAAI,CAACO,KAAL,CAAW,GAAX,EAAgB,CAAhB,CAAjB;;AACA,MAAII,QAAQ,CAACC,MAAT,KAAoB,CAAxB,EAA2B;AACzB;AACA,WAAOV,YAAY,CAACS,QAAQ,CAAC,CAAD,CAAT,CAAnB;AACD,GALoD,CAMrD;;;AACA,SAAOA,QAAQ,CAAC,CAAD,CAAR,CAAY,CAAZ,MAAmB,GAAnB,IAA0BT,YAAY,CAACS,QAAQ,CAAC,CAAD,CAAR,CAAYE,KAAZ,CAAkB,CAAlB,CAAD,CAAtC,IAAgEX,YAAY,CAACS,QAAQ,CAAC,CAAD,CAAT,CAAnF;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASG,gBAAT,CAA0BC,MAA1B,EAA2Cf,IAA3C,EAAkE;AACvE,uBAAOgB,QAAQ,CAACD,MAAD,CAAf,EAAyB,mBAAzB;;AACAE,kBAAOC,WAAP,CAAmBH,MAAM,CAACf,IAA1B,EAAgCA,IAAhC;;AAEA,MAAI,CAACgB,QAAQ,CAACD,MAAM,CAACI,oBAAD,CAAP,CAAb,EAAkC;AAChCJ,IAAAA,MAAM,CAACI,oBAAD,CAAN,GAAoB,EAApB;AACD;;AAED,MAAI,CAACH,QAAQ,CAACD,MAAM,CAAC,UAAD,CAAP,CAAb,EAAmC;AACjCA,IAAAA,MAAM,CAAC,UAAD,CAAN,GAAqB,EAArB;AACD;;AAED,MAAI,CAACC,QAAQ,CAACD,MAAM,CAAC,MAAD,CAAP,CAAb,EAA+B;AAC7BA,IAAAA,MAAM,CAAC,MAAD,CAAN,GAAiB,EAAjB;AACD;;AAED,SAAOA,MAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASC,QAAT,CAAkBI,GAAlB,EAAqC;AAC1C,MAAIA,GAAG,KAAK,IAAR,IAAgB,OAAOA,GAAP,KAAe,WAAnC,EAAgD;AAC9C,WAAO,KAAP;AACD;;AAED,SACE,CAAC,OAAOA,GAAP,KAAe,QAAf,IAA2B,OAAOA,GAAG,CAACC,SAAX,KAAyB,WAArD,KACAC,KAAK,CAACC,OAAN,CAAcH,GAAd,MAAuB,KAFzB;AAID","sourcesContent":["import assert from 'assert';\nimport { Package } from '@verdaccio/types';\nimport { DIST_TAGS } from './constants';\n\nexport function isPackageNameScoped(name: string): boolean {\n return name.startsWith('@');\n}\n\n/**\n * From normalize-package-data/lib/fixer.js\n * @param {*} name the package name\n * @return {Boolean} whether is valid or not\n */\nexport function validateName(name: string): boolean {\n if (typeof name !== 'string') {\n return false;\n }\n\n let normalizedName: string = name.toLowerCase();\n\n const isScoped: boolean = isPackageNameScoped(name);\n const scopedName = name.split('/', 2)[1];\n\n if (isScoped && typeof scopedName !== 'undefined') {\n normalizedName = scopedName.toLowerCase();\n }\n\n /**\n * Some context about the first regex\n * - npm used to have a different tarball naming system.\n * eg: http://registry.npmjs.com/thirty-two\n * https://registry.npmjs.org/thirty-two/-/thirty-two@0.0.1.tgz\n * The file name thirty-two@0.0.1.tgz, the version and the pkg name was separated by an at (@)\n * while nowadays the naming system is based in dashes\n * https://registry.npmjs.org/verdaccio/-/verdaccio-1.4.0.tgz\n *\n * more info here: https://github.com/rlidwka/sinopia/issues/75\n */\n return !(\n !normalizedName.match(/^[-a-zA-Z0-9_.!~*'()@]+$/) ||\n normalizedName.startsWith('.') || // \".bin\", etc.\n ['node_modules', '__proto__', 'favicon.ico'].includes(normalizedName)\n );\n}\n\n/**\n * Validate a package.\n * @return {Boolean} whether the package is valid or not\n */\nexport function validatePackage(name: string): boolean {\n const nameList = name.split('/', 2);\n if (nameList.length === 1) {\n // normal package\n return validateName(nameList[0]);\n }\n // scoped package\n return nameList[0][0] === '@' && validateName(nameList[0].slice(1)) && validateName(nameList[1]);\n}\n\n/**\n * Validate the package metadata, add additional properties whether are missing within\n * the metadata properties.\n * @param {*} object\n * @param {*} name\n * @return {Object} the object with additional properties as dist-tags ad versions\n */\nexport function validateMetadata(object: Package, name: string): Package {\n assert(isObject(object), 'not a json object');\n assert.strictEqual(object.name, name);\n\n if (!isObject(object[DIST_TAGS])) {\n object[DIST_TAGS] = {};\n }\n\n if (!isObject(object['versions'])) {\n object['versions'] = {};\n }\n\n if (!isObject(object['time'])) {\n object['time'] = {};\n }\n\n return object;\n}\n\n/**\n * Check whether an element is an Object\n * @param {*} obj the element\n * @return {Boolean}\n */\nexport function isObject(obj: any): boolean {\n if (obj === null || typeof obj === 'undefined') {\n return false;\n }\n\n return (\n (typeof obj === 'object' || typeof obj.prototype === 'undefined') &&\n Array.isArray(obj) === false\n );\n}\n"],"file":"validation-utils.js"}
1
+ {"version":3,"sources":["../src/validation-utils.ts"],"names":["isPackageNameScoped","name","startsWith","validateName","normalizedName","toLowerCase","isScoped","scopedName","split","match","includes","validatePackage","nameList","length","slice","validateMetadata","object","isObject","assert","strictEqual","DIST_TAGS","obj","prototype","Array","isArray"],"mappings":";;;;;;;;;;;AAAA;;AAIA;;;;AAEO,SAASA,mBAAT,CAA6BC,IAA7B,EAAoD;AACzD,SAAOA,IAAI,CAACC,UAAL,CAAgB,GAAhB,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASC,YAAT,CAAsBF,IAAtB,EAA6C;AAClD,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5B,WAAO,KAAP;AACD;;AAED,MAAIG,cAAsB,GAAGH,IAAI,CAACI,WAAL,EAA7B;AAEA,QAAMC,QAAiB,GAAGN,mBAAmB,CAACC,IAAD,CAA7C;AACA,QAAMM,UAAU,GAAGN,IAAI,CAACO,KAAL,CAAW,GAAX,EAAgB,CAAhB,EAAmB,CAAnB,CAAnB;;AAEA,MAAIF,QAAQ,IAAI,OAAOC,UAAP,KAAsB,WAAtC,EAAmD;AACjDH,IAAAA,cAAc,GAAGG,UAAU,CAACF,WAAX,EAAjB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,SAAO,EACL,CAACD,cAAc,CAACK,KAAf,CAAqB,0BAArB,CAAD,IACAL,cAAc,CAACF,UAAf,CAA0B,GAA1B,CADA,IACkC;AAClC,GAAC,cAAD,EAAiB,WAAjB,EAA8B,aAA9B,EAA6CQ,QAA7C,CAAsDN,cAAtD,CAHK,CAAP;AAKD;AAED;AACA;AACA;AACA;;;AACO,SAASO,eAAT,CAAyBV,IAAzB,EAAgD;AACrD,QAAMW,QAAQ,GAAGX,IAAI,CAACO,KAAL,CAAW,GAAX,EAAgB,CAAhB,CAAjB;;AACA,MAAII,QAAQ,CAACC,MAAT,KAAoB,CAAxB,EAA2B;AACzB;AACA,WAAOV,YAAY,CAACS,QAAQ,CAAC,CAAD,CAAT,CAAnB;AACD,GALoD,CAMrD;;;AACA,SAAOA,QAAQ,CAAC,CAAD,CAAR,CAAY,CAAZ,MAAmB,GAAnB,IAA0BT,YAAY,CAACS,QAAQ,CAAC,CAAD,CAAR,CAAYE,KAAZ,CAAkB,CAAlB,CAAD,CAAtC,IAAgEX,YAAY,CAACS,QAAQ,CAAC,CAAD,CAAT,CAAnF;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASG,gBAAT,CAA0BC,MAA1B,EAA2Cf,IAA3C,EAAkE;AACvE,uBAAOgB,QAAQ,CAACD,MAAD,CAAf,EAAyB,mBAAzB;;AACAE,kBAAOC,WAAP,CAAmBH,MAAM,CAACf,IAA1B,EAAgCA,IAAhC;;AAEA,MAAI,CAACgB,QAAQ,CAACD,MAAM,CAACI,oBAAD,CAAP,CAAb,EAAkC;AAChCJ,IAAAA,MAAM,CAACI,oBAAD,CAAN,GAAoB,EAApB;AACD;;AAED,MAAI,CAACH,QAAQ,CAACD,MAAM,CAAC,UAAD,CAAP,CAAb,EAAmC;AACjCA,IAAAA,MAAM,CAAC,UAAD,CAAN,GAAqB,EAArB;AACD;;AAED,MAAI,CAACC,QAAQ,CAACD,MAAM,CAAC,MAAD,CAAP,CAAb,EAA+B;AAC7BA,IAAAA,MAAM,CAAC,MAAD,CAAN,GAAiB,EAAjB;AACD;;AAED,SAAOA,MAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASC,QAAT,CAAkBI,GAAlB,EAAqC;AAC1C,MAAIA,GAAG,KAAK,IAAR,IAAgB,OAAOA,GAAP,KAAe,WAAnC,EAAgD;AAC9C,WAAO,KAAP;AACD;;AAED,SACE,CAAC,OAAOA,GAAP,KAAe,QAAf,IAA2B,OAAOA,GAAG,CAACC,SAAX,KAAyB,WAArD,KACAC,KAAK,CAACC,OAAN,CAAcH,GAAd,MAAuB,KAFzB;AAID","sourcesContent":["import assert from 'assert';\n\nimport { Package } from '@verdaccio/types';\n\nimport { DIST_TAGS } from './constants';\n\nexport function isPackageNameScoped(name: string): boolean {\n return name.startsWith('@');\n}\n\n/**\n * From normalize-package-data/lib/fixer.js\n * @param {*} name the package name\n * @return {Boolean} whether is valid or not\n */\nexport function validateName(name: string): boolean {\n if (typeof name !== 'string') {\n return false;\n }\n\n let normalizedName: string = name.toLowerCase();\n\n const isScoped: boolean = isPackageNameScoped(name);\n const scopedName = name.split('/', 2)[1];\n\n if (isScoped && typeof scopedName !== 'undefined') {\n normalizedName = scopedName.toLowerCase();\n }\n\n /**\n * Some context about the first regex\n * - npm used to have a different tarball naming system.\n * eg: http://registry.npmjs.com/thirty-two\n * https://registry.npmjs.org/thirty-two/-/thirty-two@0.0.1.tgz\n * The file name thirty-two@0.0.1.tgz, the version and the pkg name was separated by an at (@)\n * while nowadays the naming system is based in dashes\n * https://registry.npmjs.org/verdaccio/-/verdaccio-1.4.0.tgz\n *\n * more info here: https://github.com/rlidwka/sinopia/issues/75\n */\n return !(\n !normalizedName.match(/^[-a-zA-Z0-9_.!~*'()@]+$/) ||\n normalizedName.startsWith('.') || // \".bin\", etc.\n ['node_modules', '__proto__', 'favicon.ico'].includes(normalizedName)\n );\n}\n\n/**\n * Validate a package.\n * @return {Boolean} whether the package is valid or not\n */\nexport function validatePackage(name: string): boolean {\n const nameList = name.split('/', 2);\n if (nameList.length === 1) {\n // normal package\n return validateName(nameList[0]);\n }\n // scoped package\n return nameList[0][0] === '@' && validateName(nameList[0].slice(1)) && validateName(nameList[1]);\n}\n\n/**\n * Validate the package metadata, add additional properties whether are missing within\n * the metadata properties.\n * @param {*} object\n * @param {*} name\n * @return {Object} the object with additional properties as dist-tags ad versions\n */\nexport function validateMetadata(object: Package, name: string): Package {\n assert(isObject(object), 'not a json object');\n assert.strictEqual(object.name, name);\n\n if (!isObject(object[DIST_TAGS])) {\n object[DIST_TAGS] = {};\n }\n\n if (!isObject(object['versions'])) {\n object['versions'] = {};\n }\n\n if (!isObject(object['time'])) {\n object['time'] = {};\n }\n\n return object;\n}\n\n/**\n * Check whether an element is an Object\n * @param {*} obj the element\n * @return {Boolean}\n */\nexport function isObject(obj: any): boolean {\n if (obj === null || typeof obj === 'undefined') {\n return false;\n }\n\n return (\n (typeof obj === 'object' || typeof obj.prototype === 'undefined') &&\n Array.isArray(obj) === false\n );\n}\n"],"file":"validation-utils.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdaccio/core",
3
- "version": "6.0.0-6-next.3",
3
+ "version": "6.0.0-6-next.4",
4
4
  "description": "core utilities",
5
5
  "keywords": [
6
6
  "private",
@@ -34,13 +34,14 @@
34
34
  "access": "public"
35
35
  },
36
36
  "dependencies": {
37
- "http-errors": "1.8.0",
37
+ "http-errors": "1.8.1",
38
38
  "http-status-codes": "2.1.4",
39
39
  "semver": "7.3.5",
40
- "fastify-warning": "0.2.0"
40
+ "fastify-warning": "0.2.0",
41
+ "core-js": "3.17.2"
41
42
  },
42
43
  "devDependencies": {
43
- "@verdaccio/types": "11.0.0-6-next.9"
44
+ "@verdaccio/types": "11.0.0-6-next.10"
44
45
  },
45
46
  "funding": {
46
47
  "type": "opencollective",
@@ -1,4 +1,5 @@
1
1
  import createError, { HttpError } from 'http-errors';
2
+
2
3
  import { DEFAULT_MIN_LIMIT_PASSWORD, HTTP_STATUS } from './constants';
3
4
 
4
5
  export const API_ERROR = {
package/src/index.ts CHANGED
@@ -1,11 +1,11 @@
1
- import * as searchUtils from './search-utils';
2
- import * as streamUtils from './stream-utils';
3
- import * as errorUtils from './error-utils';
4
- import * as validatioUtils from './validation-utils';
5
1
  import * as constants from './constants';
6
- import * as pluginUtils from './plugin-utils';
2
+ import * as errorUtils from './error-utils';
7
3
  import * as fileUtils from './file-utils';
8
4
  import * as pkgUtils from './pkg-utils';
5
+ import * as pluginUtils from './plugin-utils';
6
+ import * as searchUtils from './search-utils';
7
+ import * as streamUtils from './stream-utils';
8
+ import * as validatioUtils from './validation-utils';
9
9
  import * as warningUtils from './warning-utils';
10
10
 
11
11
  export { VerdaccioError, API_ERROR, SUPPORT_ERRORS, APP_ERROR } from './error-utils';
package/src/pkg-utils.ts CHANGED
@@ -1,5 +1,7 @@
1
- import { Package } from '@verdaccio/types';
2
1
  import semver from 'semver';
2
+
3
+ import { Package } from '@verdaccio/types';
4
+
3
5
  import { DIST_TAGS } from './constants';
4
6
 
5
7
  /**
@@ -1,4 +1,5 @@
1
1
  import { Config, IPackageStorage, Token, TokenFilter } from '@verdaccio/types';
2
+
2
3
  import { searchUtils } from '.';
3
4
 
4
5
  interface IPlugin {
@@ -1,4 +1,4 @@
1
- import { PassThrough, TransformOptions, Transform } from 'stream';
1
+ import { PassThrough, Transform, TransformOptions } from 'stream';
2
2
 
3
3
  export interface IReadTarball {
4
4
  abort?: () => void;
@@ -1,5 +1,7 @@
1
1
  import assert from 'assert';
2
+
2
3
  import { Package } from '@verdaccio/types';
4
+
3
5
  import { DIST_TAGS } from './constants';
4
6
 
5
7
  export function isPackageNameScoped(name: string): boolean {
@@ -1,17 +1,17 @@
1
1
  import _ from 'lodash';
2
- import { HTTP_STATUS } from '../src/constants';
3
2
 
3
+ import { HTTP_STATUS } from '../src/constants';
4
4
  import {
5
- getNotFound,
5
+ API_ERROR,
6
6
  VerdaccioError,
7
- getConflict,
8
7
  getBadData,
9
- getInternalError,
10
- API_ERROR,
11
- getUnauthorized,
8
+ getCode,
9
+ getConflict,
12
10
  getForbidden,
11
+ getInternalError,
12
+ getNotFound,
13
13
  getServiceUnavailable,
14
- getCode,
14
+ getUnauthorized,
15
15
  } from '../src/error-utils';
16
16
 
17
17
  describe('testing errors', () => {
@@ -1,4 +1,4 @@
1
- import { semverSort, mergeVersions } from '../src/pkg-utils';
1
+ import { mergeVersions, semverSort } from '../src/pkg-utils';
2
2
 
3
3
  describe('Storage._merge_versions versions', () => {
4
4
  test('simple', () => {
@@ -1,5 +1,6 @@
1
1
  import { Stream } from 'stream';
2
- import { readableToString, ReadTarball, UploadTarball } from '../src/stream-utils';
2
+
3
+ import { ReadTarball, UploadTarball, readableToString } from '../src/stream-utils';
3
4
 
4
5
  describe('mystreams', () => {
5
6
  test('should delay events on ReadTarball abort', (cb) => {
@@ -1,4 +1,4 @@
1
- import { validateName, validatePackage, isObject } from '../src/validation-utils';
1
+ import { isObject, validateName, validatePackage } from '../src/validation-utils';
2
2
 
3
3
  describe('validatePackage', () => {
4
4
  test('should validate package names', () => {