@verdaccio/store 8.0.0-next-8.30 → 8.0.0-next-8.32

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/build/index.js CHANGED
@@ -8,7 +8,7 @@ var _exportNames = {
8
8
  };
9
9
  Object.defineProperty(exports, "Storage", {
10
10
  enumerable: true,
11
- get: function () {
11
+ get: function get() {
12
12
  return _storage.Storage;
13
13
  }
14
14
  });
@@ -20,7 +20,7 @@ Object.keys(_storageUtils).forEach(function (key) {
20
20
  if (key in exports && exports[key] === _storageUtils[key]) return;
21
21
  Object.defineProperty(exports, key, {
22
22
  enumerable: true,
23
- get: function () {
23
+ get: function get() {
24
24
  return _storageUtils[key];
25
25
  }
26
26
  });
@@ -32,7 +32,7 @@ Object.keys(_versionsUtils).forEach(function (key) {
32
32
  if (key in exports && exports[key] === _versionsUtils[key]) return;
33
33
  Object.defineProperty(exports, key, {
34
34
  enumerable: true,
35
- get: function () {
35
+ get: function get() {
36
36
  return _versionsUtils[key];
37
37
  }
38
38
  });
@@ -44,7 +44,7 @@ Object.keys(_starUtils).forEach(function (key) {
44
44
  if (key in exports && exports[key] === _starUtils[key]) return;
45
45
  Object.defineProperty(exports, key, {
46
46
  enumerable: true,
47
- get: function () {
47
+ get: function get() {
48
48
  return _starUtils[key];
49
49
  }
50
50
  });
@@ -56,7 +56,7 @@ Object.keys(_type).forEach(function (key) {
56
56
  if (key in exports && exports[key] === _type[key]) return;
57
57
  Object.defineProperty(exports, key, {
58
58
  enumerable: true,
59
- get: function () {
59
+ get: function get() {
60
60
  return _type[key];
61
61
  }
62
62
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_storage","require","_storageUtils","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_versionsUtils","_starUtils","_type"],"sources":["../src/index.ts"],"sourcesContent":["export { Storage } from './storage';\nexport * from './lib/storage-utils';\nexport * from './lib/versions-utils';\nexport * from './lib/star-utils';\nexport * from './type';\n"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,aAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,aAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,aAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,cAAA,GAAAd,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAW,cAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,cAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,cAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,UAAA,GAAAf,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAY,UAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,UAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,UAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AACA,IAAAW,KAAA,GAAAhB,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAa,KAAA,EAAAZ,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAW,KAAA,CAAAX,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,KAAA,CAAAX,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_storage","require","_storageUtils","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_versionsUtils","_starUtils","_type"],"sources":["../src/index.ts"],"sourcesContent":["export { Storage } from './storage';\nexport * from './lib/storage-utils';\nexport * from './lib/versions-utils';\nexport * from './lib/star-utils';\nexport * from './type';\n"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,aAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,aAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAZ,aAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,cAAA,GAAAd,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAW,cAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,cAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAC,cAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,UAAA,GAAAf,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAY,UAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,UAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAE,UAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AACA,IAAAW,KAAA,GAAAhB,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAa,KAAA,EAAAZ,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAW,KAAA,CAAAX,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAG,KAAA,CAAAX,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -13,7 +13,7 @@ var _core = require("@verdaccio/core");
13
13
  */
14
14
  function isPublishablePackage(pkg) {
15
15
  // TODO: we can do better, no need get keys
16
- const keys = Object.keys(pkg);
16
+ var keys = Object.keys(pkg);
17
17
  return keys.includes('versions');
18
18
  }
19
19
 
@@ -26,7 +26,7 @@ function isPublishablePackage(pkg) {
26
26
  * @returns boolean
27
27
  */
28
28
  function isExecutingStarCommand(localUsers, username, userIsAddingStar) {
29
- const isExist = typeof localUsers[username] !== 'undefined';
29
+ var isExist = typeof localUsers[username] !== 'undefined';
30
30
  // fails if user already exist and us trying to add star.
31
31
  if (userIsAddingStar && isExist && localUsers[username]) {
32
32
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"star-utils.js","names":["_core","require","isPublishablePackage","pkg","keys","Object","includes","isExecutingStarCommand","localUsers","username","userIsAddingStar","isExist","isStarManifest","manifest","validationUtils","isObject","users"],"sources":["../../src/lib/star-utils.ts"],"sourcesContent":["import { validationUtils } from '@verdaccio/core';\nimport { Manifest, PackageUsers } from '@verdaccio/types';\n\n/**\n * Check whether the package metadata has enough data to be published\n * @param pkg metadata\n */\nexport function isPublishablePackage(pkg: Manifest): boolean {\n // TODO: we can do better, no need get keys\n const keys: string[] = Object.keys(pkg);\n\n return keys.includes('versions');\n}\n\n/**\n * Verify if the user is actually executing an action, to avoid unnecessary calls\n * to the storage.\n * @param localUsers current state at cache\n * @param username user is executing the action\n * @param userIsAddingStar whether user is removing or adding star\n * @returns boolean\n */\nexport function isExecutingStarCommand(\n localUsers: PackageUsers,\n username: string,\n userIsAddingStar: boolean\n): boolean {\n const isExist = typeof localUsers[username] !== 'undefined';\n // fails if user already exist and us trying to add star.\n if (userIsAddingStar && isExist && localUsers[username]) {\n return false;\n // if is not adding a start but user exists (removing star)\n } else if (!userIsAddingStar && isExist) {\n return true;\n // fails if user does not exist and is not adding any star\n } else if (!userIsAddingStar && !isExist) {\n return false;\n }\n return true;\n}\n\nexport function isStarManifest(manifest: Manifest): boolean {\n return isPublishablePackage(manifest) === false && validationUtils.isObject(manifest.users);\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAGA;AACA;AACA;AACA;AACO,SAASC,oBAAoBA,CAACC,GAAa,EAAW;EAC3D;EACA,MAAMC,IAAc,GAAGC,MAAM,CAACD,IAAI,CAACD,GAAG,CAAC;EAEvC,OAAOC,IAAI,CAACE,QAAQ,CAAC,UAAU,CAAC;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,sBAAsBA,CACpCC,UAAwB,EACxBC,QAAgB,EAChBC,gBAAyB,EAChB;EACT,MAAMC,OAAO,GAAG,OAAOH,UAAU,CAACC,QAAQ,CAAC,KAAK,WAAW;EAC3D;EACA,IAAIC,gBAAgB,IAAIC,OAAO,IAAIH,UAAU,CAACC,QAAQ,CAAC,EAAE;IACvD,OAAO,KAAK;IACZ;EACF,CAAC,MAAM,IAAI,CAACC,gBAAgB,IAAIC,OAAO,EAAE;IACvC,OAAO,IAAI;IACX;EACF,CAAC,MAAM,IAAI,CAACD,gBAAgB,IAAI,CAACC,OAAO,EAAE;IACxC,OAAO,KAAK;EACd;EACA,OAAO,IAAI;AACb;AAEO,SAASC,cAAcA,CAACC,QAAkB,EAAW;EAC1D,OAAOX,oBAAoB,CAACW,QAAQ,CAAC,KAAK,KAAK,IAAIC,qBAAe,CAACC,QAAQ,CAACF,QAAQ,CAACG,KAAK,CAAC;AAC7F","ignoreList":[]}
1
+ {"version":3,"file":"star-utils.js","names":["_core","require","isPublishablePackage","pkg","keys","Object","includes","isExecutingStarCommand","localUsers","username","userIsAddingStar","isExist","isStarManifest","manifest","validationUtils","isObject","users"],"sources":["../../src/lib/star-utils.ts"],"sourcesContent":["import { validationUtils } from '@verdaccio/core';\nimport { Manifest, PackageUsers } from '@verdaccio/types';\n\n/**\n * Check whether the package metadata has enough data to be published\n * @param pkg metadata\n */\nexport function isPublishablePackage(pkg: Manifest): boolean {\n // TODO: we can do better, no need get keys\n const keys: string[] = Object.keys(pkg);\n\n return keys.includes('versions');\n}\n\n/**\n * Verify if the user is actually executing an action, to avoid unnecessary calls\n * to the storage.\n * @param localUsers current state at cache\n * @param username user is executing the action\n * @param userIsAddingStar whether user is removing or adding star\n * @returns boolean\n */\nexport function isExecutingStarCommand(\n localUsers: PackageUsers,\n username: string,\n userIsAddingStar: boolean\n): boolean {\n const isExist = typeof localUsers[username] !== 'undefined';\n // fails if user already exist and us trying to add star.\n if (userIsAddingStar && isExist && localUsers[username]) {\n return false;\n // if is not adding a start but user exists (removing star)\n } else if (!userIsAddingStar && isExist) {\n return true;\n // fails if user does not exist and is not adding any star\n } else if (!userIsAddingStar && !isExist) {\n return false;\n }\n return true;\n}\n\nexport function isStarManifest(manifest: Manifest): boolean {\n return isPublishablePackage(manifest) === false && validationUtils.isObject(manifest.users);\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAGA;AACA;AACA;AACA;AACO,SAASC,oBAAoBA,CAACC,GAAa,EAAW;EAC3D;EACA,IAAMC,IAAc,GAAGC,MAAM,CAACD,IAAI,CAACD,GAAG,CAAC;EAEvC,OAAOC,IAAI,CAACE,QAAQ,CAAC,UAAU,CAAC;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,sBAAsBA,CACpCC,UAAwB,EACxBC,QAAgB,EAChBC,gBAAyB,EAChB;EACT,IAAMC,OAAO,GAAG,OAAOH,UAAU,CAACC,QAAQ,CAAC,KAAK,WAAW;EAC3D;EACA,IAAIC,gBAAgB,IAAIC,OAAO,IAAIH,UAAU,CAACC,QAAQ,CAAC,EAAE;IACvD,OAAO,KAAK;IACZ;EACF,CAAC,MAAM,IAAI,CAACC,gBAAgB,IAAIC,OAAO,EAAE;IACvC,OAAO,IAAI;IACX;EACF,CAAC,MAAM,IAAI,CAACD,gBAAgB,IAAI,CAACC,OAAO,EAAE;IACxC,OAAO,KAAK;EACd;EACA,OAAO,IAAI;AACb;AAEO,SAASC,cAAcA,CAACC,QAAkB,EAAW;EAC1D,OAAOX,oBAAoB,CAACW,QAAQ,CAAC,KAAK,KAAK,IAAIC,qBAAe,CAACC,QAAQ,CAACF,QAAQ,CAACG,KAAK,CAAC;AAC7F","ignoreList":[]}
@@ -25,8 +25,14 @@ var _lodash = _interopRequireDefault(require("lodash"));
25
25
  var _semver = _interopRequireDefault(require("semver"));
26
26
  var _core = require("@verdaccio/core");
27
27
  var _versionsUtils = require("./versions-utils");
28
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
29
- const STORAGE = exports.STORAGE = {
28
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
29
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
30
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
31
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
32
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
33
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
34
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
35
+ var STORAGE = exports.STORAGE = {
30
36
  PACKAGE_FILE_NAME: 'package.json',
31
37
  FILE_EXIST_ERROR: 'EEXISTS',
32
38
  NO_SUCH_FILE_ERROR: 'ENOENT',
@@ -39,19 +45,12 @@ const STORAGE = exports.STORAGE = {
39
45
  * @returns {Manifest}
40
46
  */
41
47
  function generatePackageTemplate(name) {
42
- return {
48
+ return _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({
43
49
  // standard things
44
- name,
50
+ name: name,
45
51
  versions: {},
46
- time: {},
47
- [_core.USERS]: {},
48
- [_core.DIST_TAGS]: {},
49
- [_core.MAINTAINERS]: [],
50
- _uplinks: {},
51
- _distfiles: {},
52
- _attachments: {},
53
- _rev: ''
54
- };
52
+ time: {}
53
+ }, _core.USERS, {}), _core.DIST_TAGS, {}), _core.MAINTAINERS, []), "_uplinks", {}), "_distfiles", {}), "_attachments", {}), "_rev", '');
55
54
  }
56
55
 
57
56
  /**
@@ -59,17 +58,17 @@ function generatePackageTemplate(name) {
59
58
  * @param {Object} pkg package reference.
60
59
  */
61
60
  function normalizePackage(pkg) {
62
- const pkgProperties = ['versions', 'dist-tags', '_distfiles', '_attachments', '_uplinks', 'time'];
63
- pkgProperties.forEach(key => {
64
- const pkgProp = pkg[key];
65
- if (_lodash.default.isNil(pkgProp) || _core.validationUtils.isObject(pkgProp) === false) {
61
+ var pkgProperties = ['versions', 'dist-tags', '_distfiles', '_attachments', '_uplinks', 'time'];
62
+ pkgProperties.forEach(function (key) {
63
+ var pkgProp = pkg[key];
64
+ if (_lodash["default"].isNil(pkgProp) || _core.validationUtils.isObject(pkgProp) === false) {
66
65
  pkg[key] = {};
67
66
  }
68
67
  });
69
- if (typeof pkg?._rev !== 'string') {
68
+ if (typeof (pkg === null || pkg === void 0 ? void 0 : pkg._rev) !== 'string') {
70
69
  pkg._rev = STORAGE.DEFAULT_REVISION;
71
70
  }
72
- if (typeof pkg?._id !== 'string') {
71
+ if (typeof (pkg === null || pkg === void 0 ? void 0 : pkg._id) !== 'string') {
73
72
  pkg._id = pkg.name;
74
73
  }
75
74
 
@@ -77,28 +76,28 @@ function normalizePackage(pkg) {
77
76
  return normalizeDistTags(pkg);
78
77
  }
79
78
  function generateRevision(rev) {
80
- const _rev = rev.split('-');
79
+ var _rev = rev.split('-');
81
80
  return (+_rev[0] || 0) + 1 + '-' + _core.cryptoUtils.generateRandomHexString();
82
81
  }
83
82
  function getLatestReadme(pkg) {
84
- const versions = pkg['versions'] || {};
85
- const distTags = pkg[_core.DIST_TAGS] || {};
83
+ var versions = pkg['versions'] || {};
84
+ var distTags = pkg[_core.DIST_TAGS] || {};
86
85
  // FIXME: here is a bit tricky add the types
87
- const latestVersion = distTags['latest'] ? versions[distTags['latest']] || {} : {};
88
- let readme = _lodash.default.trim(pkg.readme || latestVersion.readme || '');
86
+ var latestVersion = distTags['latest'] ? versions[distTags['latest']] || {} : {};
87
+ var readme = _lodash["default"].trim(pkg.readme || latestVersion.readme || '');
89
88
  if (readme) {
90
89
  return readme;
91
90
  }
92
91
 
93
92
  // In case of empty readme - trying to get ANY readme in the following order:
94
93
  // 'next','beta','alpha','test','dev','canary'
95
- const readmeDistTagsPriority = ['next', 'beta', 'alpha', 'test', 'dev', 'canary'];
94
+ var readmeDistTagsPriority = ['next', 'beta', 'alpha', 'test', 'dev', 'canary'];
96
95
  readmeDistTagsPriority.forEach(function (tag) {
97
96
  if (readme) {
98
97
  return readme;
99
98
  }
100
- const version = distTags[tag] ? versions[distTags[tag]] || {} : {};
101
- readme = _lodash.default.trim(version.readme || readme);
99
+ var version = distTags[tag] ? versions[distTags[tag]] || {} : {};
100
+ readme = _lodash["default"].trim(version.readme || readme);
102
101
  });
103
102
  return readme;
104
103
  }
@@ -118,18 +117,18 @@ function cleanUpReadme(version, distTags, keepReadmes) {
118
117
  return version;
119
118
  }
120
119
  }
121
- if (_lodash.default.isNil(version) === false) {
120
+ if (_lodash["default"].isNil(version) === false) {
122
121
  version.readme = '';
123
122
  }
124
123
  return version;
125
124
  }
126
- const WHITELIST = exports.WHITELIST = ['_rev', 'name', 'versions', 'dist-tags', 'readme', 'time', '_id', 'users', 'maintainers'];
125
+ var WHITELIST = exports.WHITELIST = ['_rev', 'name', 'versions', 'dist-tags', 'readme', 'time', '_id', 'users', 'maintainers'];
127
126
  function cleanUpLinksRef(result, keepUpLinkData) {
128
- const propertyToKeep = [...WHITELIST];
127
+ var propertyToKeep = [].concat(WHITELIST);
129
128
  if (keepUpLinkData === true) {
130
129
  propertyToKeep.push('_uplinks');
131
130
  }
132
- for (const i in result) {
131
+ for (var i in result) {
133
132
  if (propertyToKeep.indexOf(i) === -1) {
134
133
  // Remove sections like '_uplinks' from response
135
134
  delete result[i];
@@ -141,21 +140,21 @@ function cleanUpLinksRef(result, keepUpLinkData) {
141
140
  // TODO: move to abstract storage
142
141
  // @deprecated use abstract.storage.ts:checkPackageRemote
143
142
  function checkPackageRemote(name, isAllowPublishOffline, syncMetadata) {
144
- return new Promise((resolve, reject) => {
145
- syncMetadata(name, null, {}, (err, packageJsonLocal, upLinksErrors) => {
143
+ return new Promise(function (resolve, reject) {
144
+ syncMetadata(name, null, {}, function (err, packageJsonLocal, upLinksErrors) {
146
145
  // something weird
147
146
  if (err && err.status !== _core.HTTP_STATUS.NOT_FOUND) {
148
147
  return reject(err);
149
148
  }
150
149
 
151
150
  // checking package exist already
152
- if (_lodash.default.isNil(packageJsonLocal) === false) {
151
+ if (_lodash["default"].isNil(packageJsonLocal) === false) {
153
152
  return reject(_core.errorUtils.getConflict(_core.API_ERROR.PACKAGE_EXIST));
154
153
  }
155
- for (let errorItem = 0; errorItem < upLinksErrors.length; errorItem++) {
154
+ for (var errorItem = 0; errorItem < upLinksErrors.length; errorItem++) {
156
155
  // checking error
157
156
  // if uplink fails with a status other than 404, we report failure
158
- if (_lodash.default.isNil(upLinksErrors[errorItem][0]) === false) {
157
+ if (_lodash["default"].isNil(upLinksErrors[errorItem][0]) === false) {
159
158
  if (upLinksErrors[errorItem][0].status !== _core.HTTP_STATUS.NOT_FOUND) {
160
159
  if (isAllowPublishOffline) {
161
160
  return resolve();
@@ -179,55 +178,32 @@ function mergeUplinkTimeIntoLocal(localMetadata, remoteMetadata) {
179
178
  function mergeUplinkTimeIntoLocalNext(cacheManifest, remoteManifest) {
180
179
  if ('time' in remoteManifest) {
181
180
  // remote override cache time conflicts
182
- return {
183
- ...cacheManifest,
184
- time: {
185
- ...cacheManifest.time,
186
- ...remoteManifest.time
187
- }
188
- };
181
+ return _objectSpread(_objectSpread({}, cacheManifest), {}, {
182
+ time: _objectSpread(_objectSpread({}, cacheManifest.time), remoteManifest.time)
183
+ });
189
184
  }
190
185
  return cacheManifest;
191
186
  }
192
187
  function updateUpLinkMetadata(uplinkName, manifest, etag) {
193
- const _uplinks = {
194
- ...manifest._uplinks,
195
- [uplinkName]: {
196
- etag,
197
- fetched: Date.now()
198
- }
199
- };
200
- return {
201
- ...manifest,
202
- _uplinks
203
- };
188
+ var _uplinks = _objectSpread(_objectSpread({}, manifest._uplinks), {}, _defineProperty({}, uplinkName, {
189
+ etag: etag,
190
+ fetched: Date.now()
191
+ }));
192
+ return _objectSpread(_objectSpread({}, manifest), {}, {
193
+ _uplinks: _uplinks
194
+ });
204
195
  }
205
196
  function prepareSearchPackage(data) {
206
- const latest = _core.pkgUtils.getLatest(data);
197
+ var latest = _core.pkgUtils.getLatest(data);
207
198
  if (latest && data.versions[latest]) {
208
- const version = data.versions[latest];
209
- const versions = {
210
- [latest]: 'latest'
211
- };
212
- const pkg = {
199
+ var version = data.versions[latest];
200
+ var versions = _defineProperty({}, latest, 'latest');
201
+ var pkg = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({
213
202
  name: version.name,
214
- description: version.description,
215
- [_core.DIST_TAGS]: {
216
- latest
217
- },
218
- maintainers: version.maintainers || [version.author].filter(Boolean),
219
- author: version.author,
220
- repository: version.repository,
221
- readmeFilename: version.readmeFilename || '',
222
- homepage: version.homepage,
223
- keywords: version.keywords,
224
- bugs: version.bugs,
225
- license: version.license,
226
- // time: {
227
- // modified: time,
228
- // },
229
- versions
230
- };
203
+ description: version.description
204
+ }, _core.DIST_TAGS, {
205
+ latest: latest
206
+ }), "maintainers", version.maintainers || [version.author].filter(Boolean)), "author", version.author), "repository", version.repository), "readmeFilename", version.readmeFilename || ''), "homepage", version.homepage), "keywords", version.keywords), "bugs", version.bugs), "license", version.license), "versions", versions);
231
207
  return pkg;
232
208
  }
233
209
  }
@@ -239,40 +215,35 @@ function prepareSearchPackage(data) {
239
215
  * @param {*} remoteManifest
240
216
  */
241
217
  function mergeVersions(cacheManifest, remoteManifest) {
242
- let _cacheManifest = {
243
- ...cacheManifest
244
- };
245
- const {
246
- versions,
247
- time
248
- } = remoteManifest;
218
+ var _cacheManifest = _objectSpread({}, cacheManifest);
219
+ var versions = remoteManifest.versions,
220
+ time = remoteManifest.time;
249
221
  // copy new versions to a cache
250
222
  // NOTE: if a certain version was updated, we can't refresh it reliably
251
223
  // however, we can refresh the deprecated status
252
- for (const i in versions) {
224
+ for (var i in versions) {
253
225
  if (typeof _cacheManifest.versions[i] === 'undefined') {
254
226
  _cacheManifest.versions[i] = versions[i];
255
227
  } else if (versions[i].deprecated) {
256
228
  _cacheManifest.versions[i].deprecated = versions[i].deprecated;
257
229
  }
258
230
  }
259
- for (const i in time) {
260
- if (typeof _cacheManifest.time[i] === 'undefined') {
261
- _cacheManifest.time[i] = time[i];
231
+ for (var _i in time) {
232
+ if (typeof _cacheManifest.time[_i] === 'undefined') {
233
+ _cacheManifest.time[_i] = time[_i];
262
234
  }
263
235
  }
264
- for (const distTag in remoteManifest[_core.DIST_TAGS]) {
236
+ for (var distTag in remoteManifest[_core.DIST_TAGS]) {
265
237
  if (_cacheManifest[_core.DIST_TAGS][distTag] !== remoteManifest[_core.DIST_TAGS][distTag]) {
266
- if (!_cacheManifest[_core.DIST_TAGS][distTag] || _semver.default.lte(_cacheManifest[_core.DIST_TAGS][distTag], remoteManifest[_core.DIST_TAGS][distTag])) {
238
+ if (!_cacheManifest[_core.DIST_TAGS][distTag] || _semver["default"].lte(_cacheManifest[_core.DIST_TAGS][distTag], remoteManifest[_core.DIST_TAGS][distTag])) {
267
239
  _cacheManifest[_core.DIST_TAGS][distTag] = remoteManifest[_core.DIST_TAGS][distTag];
268
240
  }
269
241
  if (distTag === 'latest' && _cacheManifest[_core.DIST_TAGS][distTag] === remoteManifest[_core.DIST_TAGS][distTag]) {
270
242
  // NOTE: this override the latest publish readme from local cache with
271
243
  // the remote one
272
- _cacheManifest = {
273
- ..._cacheManifest,
244
+ _cacheManifest = _objectSpread(_objectSpread({}, _cacheManifest), {}, {
274
245
  readme: remoteManifest.readme
275
- };
246
+ });
276
247
  }
277
248
  }
278
249
  }
@@ -295,20 +266,21 @@ function mergeVersions(cacheManifest, remoteManifest) {
295
266
  * @param {*} data
296
267
  */
297
268
  function normalizeDistTags(manifest) {
298
- let sorted;
269
+ var sorted;
299
270
  // handle missing latest dist-tag
300
271
  if (!manifest[_core.DIST_TAGS].latest) {
272
+ var _sorted;
301
273
  // if there is no latest tag, set the highest known version based on semver sort
302
274
  sorted = (0, _versionsUtils.sortVersionsAndFilterInvalid)(Object.keys(manifest.versions));
303
- if (sorted?.length) {
275
+ if ((_sorted = sorted) !== null && _sorted !== void 0 && _sorted.length) {
304
276
  // get the highest published version
305
277
  manifest[_core.DIST_TAGS].latest = sorted.pop();
306
278
  }
307
279
  }
308
- for (const tag in manifest[_core.DIST_TAGS]) {
280
+ for (var tag in manifest[_core.DIST_TAGS]) {
309
281
  // deprecated (will be removed un future majors)
310
282
  // this should not happen, tags should be plain strings, legacy fallback
311
- if (_lodash.default.isArray(manifest[_core.DIST_TAGS][tag])) {
283
+ if (_lodash["default"].isArray(manifest[_core.DIST_TAGS][tag])) {
312
284
  if (manifest[_core.DIST_TAGS][tag].length) {
313
285
  // sort array
314
286
  // FIXME: this is clearly wrong, we need to research why this is like this.
@@ -321,8 +293,8 @@ function normalizeDistTags(manifest) {
321
293
  } else {
322
294
  delete manifest[_core.DIST_TAGS][tag];
323
295
  }
324
- } else if (_lodash.default.isString(manifest[_core.DIST_TAGS][tag])) {
325
- if (!_semver.default.parse(manifest[_core.DIST_TAGS][tag], true)) {
296
+ } else if (_lodash["default"].isString(manifest[_core.DIST_TAGS][tag])) {
297
+ if (!_semver["default"].parse(manifest[_core.DIST_TAGS][tag], true)) {
326
298
  // if the version is invalid, delete the dist-tag entry
327
299
  delete manifest[_core.DIST_TAGS][tag];
328
300
  }
@@ -331,10 +303,8 @@ function normalizeDistTags(manifest) {
331
303
  return manifest;
332
304
  }
333
305
  function hasDeprecatedVersions(pkgInfo) {
334
- const {
335
- versions
336
- } = pkgInfo;
337
- for (const version in versions) {
306
+ var versions = pkgInfo.versions;
307
+ for (var version in versions) {
338
308
  if (Object.prototype.hasOwnProperty.call(versions[version], 'deprecated')) {
339
309
  return true;
340
310
  }
@@ -345,9 +315,9 @@ function isDeprecatedManifest(manifest) {
345
315
  return hasDeprecatedVersions(manifest) && (typeof manifest._attachments === 'undefined' || Object.keys(manifest._attachments).length === 0);
346
316
  }
347
317
  function mapManifestToSearchPackageBody(pkg, searchItem) {
348
- const latest = _core.pkgUtils.getLatest(pkg);
349
- const version = pkg.versions[latest];
350
- const result = {
318
+ var latest = _core.pkgUtils.getLatest(pkg);
319
+ var version = pkg.versions[latest];
320
+ var result = {
351
321
  name: version.name,
352
322
  scope: '',
353
323
  description: version.description,
@@ -367,17 +337,17 @@ function mapManifestToSearchPackageBody(pkg, searchItem) {
367
337
  bugs: version.bugs
368
338
  }
369
339
  };
370
- if (typeof searchItem.package.scoped === 'string') {
371
- result.scope = searchItem.package.scoped;
340
+ if (typeof searchItem["package"].scoped === 'string') {
341
+ result.scope = searchItem["package"].scoped;
372
342
  }
373
343
  return result;
374
344
  }
375
345
  function normalizeContributors(contributors) {
376
- if (_lodash.default.isNil(contributors)) {
346
+ if (_lodash["default"].isNil(contributors)) {
377
347
  return [];
378
- } else if (contributors && _lodash.default.isArray(contributors) === false) {
348
+ } else if (contributors && _lodash["default"].isArray(contributors) === false) {
379
349
  return [contributors];
380
- } else if (_lodash.default.isString(contributors)) {
350
+ } else if (_lodash["default"].isString(contributors)) {
381
351
  return [{
382
352
  name: contributors
383
353
  }];
@@ -1 +1 @@
1
- {"version":3,"file":"storage-utils.js","names":["_lodash","_interopRequireDefault","require","_semver","_core","_versionsUtils","e","__esModule","default","STORAGE","exports","PACKAGE_FILE_NAME","FILE_EXIST_ERROR","NO_SUCH_FILE_ERROR","DEFAULT_REVISION","generatePackageTemplate","name","versions","time","USERS","DIST_TAGS","MAINTAINERS","_uplinks","_distfiles","_attachments","_rev","normalizePackage","pkg","pkgProperties","forEach","key","pkgProp","_","isNil","validationUtils","isObject","_id","normalizeDistTags","generateRevision","rev","split","cryptoUtils","generateRandomHexString","getLatestReadme","distTags","latestVersion","readme","trim","readmeDistTagsPriority","tag","version","cleanUpReadme","keepReadmes","Object","values","includes","WHITELIST","cleanUpLinksRef","result","keepUpLinkData","propertyToKeep","push","i","indexOf","checkPackageRemote","isAllowPublishOffline","syncMetadata","Promise","resolve","reject","err","packageJsonLocal","upLinksErrors","status","HTTP_STATUS","NOT_FOUND","errorUtils","getConflict","API_ERROR","PACKAGE_EXIST","errorItem","length","getServiceUnavailable","UPLINK_OFFLINE_PUBLISH","mergeUplinkTimeIntoLocal","localMetadata","remoteMetadata","assign","mergeUplinkTimeIntoLocalNext","cacheManifest","remoteManifest","updateUpLinkMetadata","uplinkName","manifest","etag","fetched","Date","now","prepareSearchPackage","data","latest","pkgUtils","getLatest","description","maintainers","author","filter","Boolean","repository","readmeFilename","homepage","keywords","bugs","license","mergeVersions","_cacheManifest","deprecated","distTag","semver","lte","sorted","sortVersionsAndFilterInvalid","keys","pop","isArray","isString","parse","hasDeprecatedVersions","pkgInfo","prototype","hasOwnProperty","call","isDeprecatedManifest","mapManifestToSearchPackageBody","searchItem","scope","date","publisher","links","npm","package","scoped","normalizeContributors","contributors"],"sources":["../../src/lib/storage-utils.ts"],"sourcesContent":["import _ from 'lodash';\nimport semver from 'semver';\n\nimport {\n API_ERROR,\n DIST_TAGS,\n HTTP_STATUS,\n MAINTAINERS,\n USERS,\n cryptoUtils,\n errorUtils,\n pkgUtils,\n searchUtils,\n validationUtils,\n} from '@verdaccio/core';\nimport { Author, GenericBody, Manifest, ReadmeOptions, Version } from '@verdaccio/types';\n\nimport { sortVersionsAndFilterInvalid } from './versions-utils';\n\nexport const STORAGE = {\n PACKAGE_FILE_NAME: 'package.json',\n FILE_EXIST_ERROR: 'EEXISTS',\n NO_SUCH_FILE_ERROR: 'ENOENT',\n DEFAULT_REVISION: '0-0000000000000000',\n};\n\n/**\n * Create a new package in the storage, return a boilerplate package\n * @param name package name\n * @returns {Manifest}\n */\nexport function generatePackageTemplate(name: string): Manifest {\n return {\n // standard things\n name,\n versions: {},\n time: {},\n [USERS]: {},\n [DIST_TAGS]: {},\n [MAINTAINERS]: [],\n _uplinks: {},\n _distfiles: {},\n _attachments: {},\n _rev: '',\n };\n}\n\n/**\n * Normalize package properties, tags, revision id.\n * @param {Object} pkg package reference.\n */\nexport function normalizePackage(pkg: Manifest): Manifest {\n const pkgProperties = ['versions', 'dist-tags', '_distfiles', '_attachments', '_uplinks', 'time'];\n\n pkgProperties.forEach((key): void => {\n const pkgProp = pkg[key];\n\n if (_.isNil(pkgProp) || validationUtils.isObject(pkgProp) === false) {\n pkg[key] = {};\n }\n });\n\n if (typeof pkg?._rev !== 'string') {\n pkg._rev = STORAGE.DEFAULT_REVISION;\n }\n\n if (typeof pkg?._id !== 'string') {\n pkg._id = pkg.name;\n }\n\n // normalize dist-tags\n return normalizeDistTags(pkg);\n}\n\nexport function generateRevision(rev: string): string {\n const _rev = rev.split('-');\n\n return (+_rev[0] || 0) + 1 + '-' + cryptoUtils.generateRandomHexString();\n}\n\nexport function getLatestReadme(pkg: Manifest): string {\n const versions = pkg['versions'] || {};\n const distTags = pkg[DIST_TAGS] || {};\n // FIXME: here is a bit tricky add the types\n const latestVersion: Version | any = distTags['latest'] ? versions[distTags['latest']] || {} : {};\n let readme = _.trim(pkg.readme || latestVersion.readme || '');\n if (readme) {\n return readme;\n }\n\n // In case of empty readme - trying to get ANY readme in the following order:\n // 'next','beta','alpha','test','dev','canary'\n const readmeDistTagsPriority = ['next', 'beta', 'alpha', 'test', 'dev', 'canary'];\n readmeDistTagsPriority.forEach(function (tag): string | void {\n if (readme) {\n return readme;\n }\n const version: Version | any = distTags[tag] ? versions[distTags[tag]] || {} : {};\n readme = _.trim(version.readme || readme);\n });\n return readme;\n}\n\n/**\n * Cleanup readme from package version\n *\n * By default, we don't keep readmes for package versions, only one readme per package.\n * Using publish.keep_readmes you can override this behavior and keep all readmes\n * or only readmes for tagged versions.\n */\nexport function cleanUpReadme(\n version: Version,\n distTags?: GenericBody,\n keepReadmes?: ReadmeOptions\n): Version {\n if (keepReadmes === 'all') {\n return version;\n } else if (keepReadmes === 'tagged') {\n if (distTags && Object.values(distTags).includes(version.version)) {\n return version;\n }\n }\n\n if (_.isNil(version) === false) {\n version.readme = '';\n }\n\n return version;\n}\n\nexport const WHITELIST = [\n '_rev',\n 'name',\n 'versions',\n 'dist-tags',\n 'readme',\n 'time',\n '_id',\n 'users',\n 'maintainers',\n];\n\nexport function cleanUpLinksRef(result: Manifest, keepUpLinkData?: boolean): Manifest {\n const propertyToKeep = [...WHITELIST];\n if (keepUpLinkData === true) {\n propertyToKeep.push('_uplinks');\n }\n\n for (const i in result) {\n if (propertyToKeep.indexOf(i) === -1) {\n // Remove sections like '_uplinks' from response\n delete result[i];\n }\n }\n\n return result;\n}\n\n// TODO: move to abstract storage\n// @deprecated use abstract.storage.ts:checkPackageRemote\nexport function checkPackageRemote(\n name: string,\n isAllowPublishOffline: boolean,\n syncMetadata: Function\n): Promise<any> {\n return new Promise<void>((resolve, reject): void => {\n syncMetadata(name, null, {}, (err, packageJsonLocal, upLinksErrors): void => {\n // something weird\n if (err && err.status !== HTTP_STATUS.NOT_FOUND) {\n return reject(err);\n }\n\n // checking package exist already\n if (_.isNil(packageJsonLocal) === false) {\n return reject(errorUtils.getConflict(API_ERROR.PACKAGE_EXIST));\n }\n\n for (let errorItem = 0; errorItem < upLinksErrors.length; errorItem++) {\n // checking error\n // if uplink fails with a status other than 404, we report failure\n if (_.isNil(upLinksErrors[errorItem][0]) === false) {\n if (upLinksErrors[errorItem][0].status !== HTTP_STATUS.NOT_FOUND) {\n if (isAllowPublishOffline) {\n return resolve();\n }\n\n return reject(errorUtils.getServiceUnavailable(API_ERROR.UPLINK_OFFLINE_PUBLISH));\n }\n }\n }\n\n return resolve();\n });\n });\n}\n\n// @deprecated use export function mergeUplinkTimeIntoLocalNext\nexport function mergeUplinkTimeIntoLocal(localMetadata: Manifest, remoteMetadata: Manifest): any {\n if ('time' in remoteMetadata) {\n return Object.assign({}, localMetadata.time, remoteMetadata.time);\n }\n\n return localMetadata.time;\n}\n\nexport function mergeUplinkTimeIntoLocalNext(\n cacheManifest: Manifest,\n remoteManifest: Manifest\n): Manifest {\n if ('time' in remoteManifest) {\n // remote override cache time conflicts\n return { ...cacheManifest, time: { ...cacheManifest.time, ...remoteManifest.time } };\n }\n\n return cacheManifest;\n}\n\nexport function updateUpLinkMetadata(uplinkName: string, manifest: Manifest, etag: string) {\n const _uplinks = {\n ...manifest._uplinks,\n [uplinkName]: {\n etag,\n fetched: Date.now(),\n },\n };\n return {\n ...manifest,\n _uplinks,\n };\n}\n\nexport function prepareSearchPackage(data: Manifest): any {\n const latest = pkgUtils.getLatest(data);\n\n if (latest && data.versions[latest]) {\n const version: Version = data.versions[latest];\n const versions: any = { [latest]: 'latest' };\n const pkg: any = {\n name: version.name,\n description: version.description,\n [DIST_TAGS]: { latest },\n maintainers: version.maintainers || [version.author].filter(Boolean),\n author: version.author,\n repository: version.repository,\n readmeFilename: version.readmeFilename || '',\n homepage: version.homepage,\n keywords: version.keywords,\n bugs: version.bugs,\n license: version.license,\n // time: {\n // modified: time,\n // },\n versions,\n };\n\n return pkg;\n }\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 {*} cacheManifest\n * @param {*} remoteManifest\n */\nexport function mergeVersions(cacheManifest: Manifest, remoteManifest: Manifest): Manifest {\n let _cacheManifest = { ...cacheManifest };\n const { versions, time } = remoteManifest;\n // copy new versions to a cache\n // NOTE: if a certain version was updated, we can't refresh it reliably\n // however, we can refresh the deprecated status\n for (const i in versions) {\n if (typeof _cacheManifest.versions[i] === 'undefined') {\n _cacheManifest.versions[i] = versions[i];\n } else if (versions[i].deprecated) {\n _cacheManifest.versions[i].deprecated = versions[i].deprecated;\n }\n }\n\n for (const i in time) {\n if (typeof _cacheManifest.time[i] === 'undefined') {\n _cacheManifest.time[i] = time[i];\n }\n }\n\n for (const distTag in remoteManifest[DIST_TAGS]) {\n if (_cacheManifest[DIST_TAGS][distTag] !== remoteManifest[DIST_TAGS][distTag]) {\n if (\n !_cacheManifest[DIST_TAGS][distTag] ||\n semver.lte(_cacheManifest[DIST_TAGS][distTag], remoteManifest[DIST_TAGS][distTag])\n ) {\n _cacheManifest[DIST_TAGS][distTag] = remoteManifest[DIST_TAGS][distTag];\n }\n if (\n distTag === 'latest' &&\n _cacheManifest[DIST_TAGS][distTag] === remoteManifest[DIST_TAGS][distTag]\n ) {\n // NOTE: this override the latest publish readme from local cache with\n // the remote one\n _cacheManifest = { ..._cacheManifest, readme: remoteManifest.readme };\n }\n }\n }\n return _cacheManifest;\n}\n\n/**\n * Normalize dist-tags.\n *\n * There is a legacy behaviour where the dist-tags could be an array, in such\n * case, the array is orderded and the highest version becames the\n * latest.\n *\n * The dist-tag tags must be plain strigs, if the latest is empty (for whatever reason) is\n * normalized to be the highest version available.\n *\n * This function cleans up every invalid version on dist-tags, but does not remove\n * invalid versions from the manifest.\n *\n * @param {*} data\n */\nexport function normalizeDistTags(manifest: Manifest): Manifest {\n let sorted;\n // handle missing latest dist-tag\n if (!manifest[DIST_TAGS].latest) {\n // if there is no latest tag, set the highest known version based on semver sort\n sorted = sortVersionsAndFilterInvalid(Object.keys(manifest.versions));\n if (sorted?.length) {\n // get the highest published version\n manifest[DIST_TAGS].latest = sorted.pop();\n }\n }\n\n for (const tag in manifest[DIST_TAGS]) {\n // deprecated (will be removed un future majors)\n // this should not happen, tags should be plain strings, legacy fallback\n if (_.isArray(manifest[DIST_TAGS][tag])) {\n if (manifest[DIST_TAGS][tag].length) {\n // sort array\n // FIXME: this is clearly wrong, we need to research why this is like this.\n // @ts-ignore\n sorted = sortVersionsAndFilterInvalid(manifest[DIST_TAGS][tag]);\n if (sorted.length) {\n // use highest version based on semver sort\n manifest[DIST_TAGS][tag] = sorted.pop();\n }\n } else {\n delete manifest[DIST_TAGS][tag];\n }\n } else if (_.isString(manifest[DIST_TAGS][tag])) {\n if (!semver.parse(manifest[DIST_TAGS][tag], true)) {\n // if the version is invalid, delete the dist-tag entry\n delete manifest[DIST_TAGS][tag];\n }\n }\n }\n\n return manifest;\n}\n\nexport function hasDeprecatedVersions(pkgInfo: Manifest): boolean {\n const { versions } = pkgInfo;\n for (const version in versions) {\n if (Object.prototype.hasOwnProperty.call(versions[version], 'deprecated')) {\n return true;\n }\n }\n return false;\n}\n\nexport function isDeprecatedManifest(manifest: Manifest): boolean {\n return (\n hasDeprecatedVersions(manifest) &&\n (typeof manifest._attachments === 'undefined' ||\n Object.keys(manifest._attachments).length === 0)\n );\n}\n\nexport function mapManifestToSearchPackageBody(\n pkg: Manifest,\n searchItem: searchUtils.SearchItem\n): searchUtils.SearchPackageBody {\n const latest = pkgUtils.getLatest(pkg);\n const version: Version = pkg.versions[latest];\n const result: searchUtils.SearchPackageBody = {\n name: version.name,\n scope: '',\n description: version.description,\n version: latest,\n keywords: version.keywords,\n date: pkg.time[latest],\n // FIXME: type\n author: version.author as any,\n // FIXME: not possible fill this out from a private package\n publisher: {},\n // FIXME: type\n maintainers: version.maintainers as any,\n links: {\n npm: '',\n homepage: version.homepage,\n repository: version.repository,\n bugs: version.bugs,\n },\n };\n\n if (typeof searchItem.package.scoped === 'string') {\n result.scope = searchItem.package.scoped;\n }\n\n return result;\n}\n\nexport function normalizeContributors(contributors: Author[]): Author[] {\n if (_.isNil(contributors)) {\n return [];\n } else if (contributors && _.isArray(contributors) === false) {\n return [contributors];\n } else if (_.isString(contributors)) {\n return [\n {\n name: contributors,\n },\n ];\n }\n\n return contributors;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"storage-utils.js","names":["_lodash","_interopRequireDefault","require","_semver","_core","_versionsUtils","e","__esModule","_typeof","o","Symbol","iterator","constructor","prototype","ownKeys","r","t","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","toPrimitive","call","TypeError","String","Number","STORAGE","exports","PACKAGE_FILE_NAME","FILE_EXIST_ERROR","NO_SUCH_FILE_ERROR","DEFAULT_REVISION","generatePackageTemplate","name","versions","time","USERS","DIST_TAGS","MAINTAINERS","normalizePackage","pkg","pkgProperties","key","pkgProp","_","isNil","validationUtils","isObject","_rev","_id","normalizeDistTags","generateRevision","rev","split","cryptoUtils","generateRandomHexString","getLatestReadme","distTags","latestVersion","readme","trim","readmeDistTagsPriority","tag","version","cleanUpReadme","keepReadmes","values","includes","WHITELIST","cleanUpLinksRef","result","keepUpLinkData","propertyToKeep","concat","indexOf","checkPackageRemote","isAllowPublishOffline","syncMetadata","Promise","resolve","reject","err","packageJsonLocal","upLinksErrors","status","HTTP_STATUS","NOT_FOUND","errorUtils","getConflict","API_ERROR","PACKAGE_EXIST","errorItem","getServiceUnavailable","UPLINK_OFFLINE_PUBLISH","mergeUplinkTimeIntoLocal","localMetadata","remoteMetadata","assign","mergeUplinkTimeIntoLocalNext","cacheManifest","remoteManifest","updateUpLinkMetadata","uplinkName","manifest","etag","_uplinks","fetched","Date","now","prepareSearchPackage","data","latest","pkgUtils","getLatest","description","maintainers","author","Boolean","repository","readmeFilename","homepage","keywords","bugs","license","mergeVersions","_cacheManifest","deprecated","distTag","semver","lte","sorted","_sorted","sortVersionsAndFilterInvalid","pop","isArray","isString","parse","hasDeprecatedVersions","pkgInfo","hasOwnProperty","isDeprecatedManifest","_attachments","mapManifestToSearchPackageBody","searchItem","scope","date","publisher","links","npm","scoped","normalizeContributors","contributors"],"sources":["../../src/lib/storage-utils.ts"],"sourcesContent":["import _ from 'lodash';\nimport semver from 'semver';\n\nimport {\n API_ERROR,\n DIST_TAGS,\n HTTP_STATUS,\n MAINTAINERS,\n USERS,\n cryptoUtils,\n errorUtils,\n pkgUtils,\n searchUtils,\n validationUtils,\n} from '@verdaccio/core';\nimport { Author, GenericBody, Manifest, ReadmeOptions, Version } from '@verdaccio/types';\n\nimport { sortVersionsAndFilterInvalid } from './versions-utils';\n\nexport const STORAGE = {\n PACKAGE_FILE_NAME: 'package.json',\n FILE_EXIST_ERROR: 'EEXISTS',\n NO_SUCH_FILE_ERROR: 'ENOENT',\n DEFAULT_REVISION: '0-0000000000000000',\n};\n\n/**\n * Create a new package in the storage, return a boilerplate package\n * @param name package name\n * @returns {Manifest}\n */\nexport function generatePackageTemplate(name: string): Manifest {\n return {\n // standard things\n name,\n versions: {},\n time: {},\n [USERS]: {},\n [DIST_TAGS]: {},\n [MAINTAINERS]: [],\n _uplinks: {},\n _distfiles: {},\n _attachments: {},\n _rev: '',\n };\n}\n\n/**\n * Normalize package properties, tags, revision id.\n * @param {Object} pkg package reference.\n */\nexport function normalizePackage(pkg: Manifest): Manifest {\n const pkgProperties = ['versions', 'dist-tags', '_distfiles', '_attachments', '_uplinks', 'time'];\n\n pkgProperties.forEach((key): void => {\n const pkgProp = pkg[key];\n\n if (_.isNil(pkgProp) || validationUtils.isObject(pkgProp) === false) {\n pkg[key] = {};\n }\n });\n\n if (typeof pkg?._rev !== 'string') {\n pkg._rev = STORAGE.DEFAULT_REVISION;\n }\n\n if (typeof pkg?._id !== 'string') {\n pkg._id = pkg.name;\n }\n\n // normalize dist-tags\n return normalizeDistTags(pkg);\n}\n\nexport function generateRevision(rev: string): string {\n const _rev = rev.split('-');\n\n return (+_rev[0] || 0) + 1 + '-' + cryptoUtils.generateRandomHexString();\n}\n\nexport function getLatestReadme(pkg: Manifest): string {\n const versions = pkg['versions'] || {};\n const distTags = pkg[DIST_TAGS] || {};\n // FIXME: here is a bit tricky add the types\n const latestVersion: Version | any = distTags['latest'] ? versions[distTags['latest']] || {} : {};\n let readme = _.trim(pkg.readme || latestVersion.readme || '');\n if (readme) {\n return readme;\n }\n\n // In case of empty readme - trying to get ANY readme in the following order:\n // 'next','beta','alpha','test','dev','canary'\n const readmeDistTagsPriority = ['next', 'beta', 'alpha', 'test', 'dev', 'canary'];\n readmeDistTagsPriority.forEach(function (tag): string | void {\n if (readme) {\n return readme;\n }\n const version: Version | any = distTags[tag] ? versions[distTags[tag]] || {} : {};\n readme = _.trim(version.readme || readme);\n });\n return readme;\n}\n\n/**\n * Cleanup readme from package version\n *\n * By default, we don't keep readmes for package versions, only one readme per package.\n * Using publish.keep_readmes you can override this behavior and keep all readmes\n * or only readmes for tagged versions.\n */\nexport function cleanUpReadme(\n version: Version,\n distTags?: GenericBody,\n keepReadmes?: ReadmeOptions\n): Version {\n if (keepReadmes === 'all') {\n return version;\n } else if (keepReadmes === 'tagged') {\n if (distTags && Object.values(distTags).includes(version.version)) {\n return version;\n }\n }\n\n if (_.isNil(version) === false) {\n version.readme = '';\n }\n\n return version;\n}\n\nexport const WHITELIST = [\n '_rev',\n 'name',\n 'versions',\n 'dist-tags',\n 'readme',\n 'time',\n '_id',\n 'users',\n 'maintainers',\n];\n\nexport function cleanUpLinksRef(result: Manifest, keepUpLinkData?: boolean): Manifest {\n const propertyToKeep = [...WHITELIST];\n if (keepUpLinkData === true) {\n propertyToKeep.push('_uplinks');\n }\n\n for (const i in result) {\n if (propertyToKeep.indexOf(i) === -1) {\n // Remove sections like '_uplinks' from response\n delete result[i];\n }\n }\n\n return result;\n}\n\n// TODO: move to abstract storage\n// @deprecated use abstract.storage.ts:checkPackageRemote\nexport function checkPackageRemote(\n name: string,\n isAllowPublishOffline: boolean,\n syncMetadata: Function\n): Promise<any> {\n return new Promise<void>((resolve, reject): void => {\n syncMetadata(name, null, {}, (err, packageJsonLocal, upLinksErrors): void => {\n // something weird\n if (err && err.status !== HTTP_STATUS.NOT_FOUND) {\n return reject(err);\n }\n\n // checking package exist already\n if (_.isNil(packageJsonLocal) === false) {\n return reject(errorUtils.getConflict(API_ERROR.PACKAGE_EXIST));\n }\n\n for (let errorItem = 0; errorItem < upLinksErrors.length; errorItem++) {\n // checking error\n // if uplink fails with a status other than 404, we report failure\n if (_.isNil(upLinksErrors[errorItem][0]) === false) {\n if (upLinksErrors[errorItem][0].status !== HTTP_STATUS.NOT_FOUND) {\n if (isAllowPublishOffline) {\n return resolve();\n }\n\n return reject(errorUtils.getServiceUnavailable(API_ERROR.UPLINK_OFFLINE_PUBLISH));\n }\n }\n }\n\n return resolve();\n });\n });\n}\n\n// @deprecated use export function mergeUplinkTimeIntoLocalNext\nexport function mergeUplinkTimeIntoLocal(localMetadata: Manifest, remoteMetadata: Manifest): any {\n if ('time' in remoteMetadata) {\n return Object.assign({}, localMetadata.time, remoteMetadata.time);\n }\n\n return localMetadata.time;\n}\n\nexport function mergeUplinkTimeIntoLocalNext(\n cacheManifest: Manifest,\n remoteManifest: Manifest\n): Manifest {\n if ('time' in remoteManifest) {\n // remote override cache time conflicts\n return { ...cacheManifest, time: { ...cacheManifest.time, ...remoteManifest.time } };\n }\n\n return cacheManifest;\n}\n\nexport function updateUpLinkMetadata(uplinkName: string, manifest: Manifest, etag: string) {\n const _uplinks = {\n ...manifest._uplinks,\n [uplinkName]: {\n etag,\n fetched: Date.now(),\n },\n };\n return {\n ...manifest,\n _uplinks,\n };\n}\n\nexport function prepareSearchPackage(data: Manifest): any {\n const latest = pkgUtils.getLatest(data);\n\n if (latest && data.versions[latest]) {\n const version: Version = data.versions[latest];\n const versions: any = { [latest]: 'latest' };\n const pkg: any = {\n name: version.name,\n description: version.description,\n [DIST_TAGS]: { latest },\n maintainers: version.maintainers || [version.author].filter(Boolean),\n author: version.author,\n repository: version.repository,\n readmeFilename: version.readmeFilename || '',\n homepage: version.homepage,\n keywords: version.keywords,\n bugs: version.bugs,\n license: version.license,\n // time: {\n // modified: time,\n // },\n versions,\n };\n\n return pkg;\n }\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 {*} cacheManifest\n * @param {*} remoteManifest\n */\nexport function mergeVersions(cacheManifest: Manifest, remoteManifest: Manifest): Manifest {\n let _cacheManifest = { ...cacheManifest };\n const { versions, time } = remoteManifest;\n // copy new versions to a cache\n // NOTE: if a certain version was updated, we can't refresh it reliably\n // however, we can refresh the deprecated status\n for (const i in versions) {\n if (typeof _cacheManifest.versions[i] === 'undefined') {\n _cacheManifest.versions[i] = versions[i];\n } else if (versions[i].deprecated) {\n _cacheManifest.versions[i].deprecated = versions[i].deprecated;\n }\n }\n\n for (const i in time) {\n if (typeof _cacheManifest.time[i] === 'undefined') {\n _cacheManifest.time[i] = time[i];\n }\n }\n\n for (const distTag in remoteManifest[DIST_TAGS]) {\n if (_cacheManifest[DIST_TAGS][distTag] !== remoteManifest[DIST_TAGS][distTag]) {\n if (\n !_cacheManifest[DIST_TAGS][distTag] ||\n semver.lte(_cacheManifest[DIST_TAGS][distTag], remoteManifest[DIST_TAGS][distTag])\n ) {\n _cacheManifest[DIST_TAGS][distTag] = remoteManifest[DIST_TAGS][distTag];\n }\n if (\n distTag === 'latest' &&\n _cacheManifest[DIST_TAGS][distTag] === remoteManifest[DIST_TAGS][distTag]\n ) {\n // NOTE: this override the latest publish readme from local cache with\n // the remote one\n _cacheManifest = { ..._cacheManifest, readme: remoteManifest.readme };\n }\n }\n }\n return _cacheManifest;\n}\n\n/**\n * Normalize dist-tags.\n *\n * There is a legacy behaviour where the dist-tags could be an array, in such\n * case, the array is orderded and the highest version becames the\n * latest.\n *\n * The dist-tag tags must be plain strigs, if the latest is empty (for whatever reason) is\n * normalized to be the highest version available.\n *\n * This function cleans up every invalid version on dist-tags, but does not remove\n * invalid versions from the manifest.\n *\n * @param {*} data\n */\nexport function normalizeDistTags(manifest: Manifest): Manifest {\n let sorted;\n // handle missing latest dist-tag\n if (!manifest[DIST_TAGS].latest) {\n // if there is no latest tag, set the highest known version based on semver sort\n sorted = sortVersionsAndFilterInvalid(Object.keys(manifest.versions));\n if (sorted?.length) {\n // get the highest published version\n manifest[DIST_TAGS].latest = sorted.pop();\n }\n }\n\n for (const tag in manifest[DIST_TAGS]) {\n // deprecated (will be removed un future majors)\n // this should not happen, tags should be plain strings, legacy fallback\n if (_.isArray(manifest[DIST_TAGS][tag])) {\n if (manifest[DIST_TAGS][tag].length) {\n // sort array\n // FIXME: this is clearly wrong, we need to research why this is like this.\n // @ts-ignore\n sorted = sortVersionsAndFilterInvalid(manifest[DIST_TAGS][tag]);\n if (sorted.length) {\n // use highest version based on semver sort\n manifest[DIST_TAGS][tag] = sorted.pop();\n }\n } else {\n delete manifest[DIST_TAGS][tag];\n }\n } else if (_.isString(manifest[DIST_TAGS][tag])) {\n if (!semver.parse(manifest[DIST_TAGS][tag], true)) {\n // if the version is invalid, delete the dist-tag entry\n delete manifest[DIST_TAGS][tag];\n }\n }\n }\n\n return manifest;\n}\n\nexport function hasDeprecatedVersions(pkgInfo: Manifest): boolean {\n const { versions } = pkgInfo;\n for (const version in versions) {\n if (Object.prototype.hasOwnProperty.call(versions[version], 'deprecated')) {\n return true;\n }\n }\n return false;\n}\n\nexport function isDeprecatedManifest(manifest: Manifest): boolean {\n return (\n hasDeprecatedVersions(manifest) &&\n (typeof manifest._attachments === 'undefined' ||\n Object.keys(manifest._attachments).length === 0)\n );\n}\n\nexport function mapManifestToSearchPackageBody(\n pkg: Manifest,\n searchItem: searchUtils.SearchItem\n): searchUtils.SearchPackageBody {\n const latest = pkgUtils.getLatest(pkg);\n const version: Version = pkg.versions[latest];\n const result: searchUtils.SearchPackageBody = {\n name: version.name,\n scope: '',\n description: version.description,\n version: latest,\n keywords: version.keywords,\n date: pkg.time[latest],\n // FIXME: type\n author: version.author as any,\n // FIXME: not possible fill this out from a private package\n publisher: {},\n // FIXME: type\n maintainers: version.maintainers as any,\n links: {\n npm: '',\n homepage: version.homepage,\n repository: version.repository,\n bugs: version.bugs,\n },\n };\n\n if (typeof searchItem.package.scoped === 'string') {\n result.scope = searchItem.package.scoped;\n }\n\n return result;\n}\n\nexport function normalizeContributors(contributors: Author[]): Author[] {\n if (_.isNil(contributors)) {\n return [];\n } else if (contributors && _.isArray(contributors) === false) {\n return [contributors];\n } else if (_.isString(contributors)) {\n return [\n {\n name: contributors,\n },\n ];\n }\n\n return contributors;\n}\n"],"mappings":"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","ignoreList":[]}