@verdaccio/core 8.0.0-next-8.5 → 8.0.0-next-8.7
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 +8 -0
- package/build/index.d.ts +2 -1
- package/build/index.js +3 -1
- package/build/index.js.map +1 -1
- package/build/pkg-utils.d.ts +0 -7
- package/build/pkg-utils.js +0 -14
- package/build/pkg-utils.js.map +1 -1
- package/build/tarball-utils.d.ts +26 -0
- package/build/tarball-utils.js +50 -0
- package/build/tarball-utils.js.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +2 -0
- package/src/pkg-utils.ts +0 -13
- package/src/tarball-utils.ts +43 -0
- package/test/pkg-utils.spec.ts +0 -16
- package/test/tarball-utils.spec.ts +81 -0
package/CHANGELOG.md
CHANGED
package/build/index.d.ts
CHANGED
|
@@ -6,9 +6,10 @@ import * as pluginUtils from './plugin-utils';
|
|
|
6
6
|
import * as searchUtils from './search-utils';
|
|
7
7
|
import * as streamUtils from './stream-utils';
|
|
8
8
|
import * as stringUtils from './string-utils';
|
|
9
|
+
import * as tarballUtils from './tarball-utils';
|
|
9
10
|
import * as validatioUtils from './validation-utils';
|
|
10
11
|
import * as warningUtils from './warning-utils';
|
|
11
12
|
export { VerdaccioError, API_ERROR, SUPPORT_ERRORS, APP_ERROR } from './error-utils';
|
|
12
13
|
export { TOKEN_BASIC, TOKEN_BEARER, HTTP_STATUS, API_MESSAGE, HEADERS, DIST_TAGS, CHARACTER_ENCODING, HEADER_TYPE, LATEST, DEFAULT_PASSWORD_VALIDATION, DEFAULT_USER, USERS, MAINTAINERS, PLUGIN_CATEGORY, HtpasswdHashAlgorithm, } from './constants';
|
|
13
14
|
declare const validationUtils: typeof validatioUtils;
|
|
14
|
-
export { fileUtils, pkgUtils, searchUtils, streamUtils, errorUtils, validatioUtils, validationUtils, stringUtils, constants, pluginUtils, warningUtils, };
|
|
15
|
+
export { fileUtils, pkgUtils, searchUtils, streamUtils, errorUtils, validatioUtils, validationUtils, stringUtils, constants, pluginUtils, warningUtils, tarballUtils, };
|
package/build/index.js
CHANGED
|
@@ -117,7 +117,7 @@ Object.defineProperty(exports, "VerdaccioError", {
|
|
|
117
117
|
return errorUtils.VerdaccioError;
|
|
118
118
|
}
|
|
119
119
|
});
|
|
120
|
-
exports.warningUtils = exports.validationUtils = exports.validatioUtils = exports.stringUtils = exports.streamUtils = exports.searchUtils = exports.pluginUtils = exports.pkgUtils = exports.fileUtils = exports.errorUtils = exports.constants = void 0;
|
|
120
|
+
exports.warningUtils = exports.validationUtils = exports.validatioUtils = exports.tarballUtils = exports.stringUtils = exports.streamUtils = exports.searchUtils = exports.pluginUtils = exports.pkgUtils = exports.fileUtils = exports.errorUtils = exports.constants = void 0;
|
|
121
121
|
var constants = _interopRequireWildcard(require("./constants"));
|
|
122
122
|
exports.constants = constants;
|
|
123
123
|
var errorUtils = _interopRequireWildcard(require("./error-utils"));
|
|
@@ -134,6 +134,8 @@ var streamUtils = _interopRequireWildcard(require("./stream-utils"));
|
|
|
134
134
|
exports.streamUtils = streamUtils;
|
|
135
135
|
var stringUtils = _interopRequireWildcard(require("./string-utils"));
|
|
136
136
|
exports.stringUtils = stringUtils;
|
|
137
|
+
var tarballUtils = _interopRequireWildcard(require("./tarball-utils"));
|
|
138
|
+
exports.tarballUtils = tarballUtils;
|
|
137
139
|
var validatioUtils = _interopRequireWildcard(require("./validation-utils"));
|
|
138
140
|
exports.validatioUtils = validatioUtils;
|
|
139
141
|
var warningUtils = _interopRequireWildcard(require("./warning-utils"));
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["constants","_interopRequireWildcard","require","exports","errorUtils","fileUtils","pkgUtils","pluginUtils","searchUtils","streamUtils","stringUtils","validatioUtils","warningUtils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","validationUtils"],"sources":["../src/index.ts"],"sourcesContent":["import * as constants from './constants';\nimport * as errorUtils from './error-utils';\nimport * as fileUtils from './file-utils';\nimport * as pkgUtils from './pkg-utils';\nimport * as pluginUtils from './plugin-utils';\nimport * as searchUtils from './search-utils';\nimport * as streamUtils from './stream-utils';\nimport * as stringUtils from './string-utils';\nimport * as 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_PASSWORD_VALIDATION,\n DEFAULT_USER,\n USERS,\n MAINTAINERS,\n PLUGIN_CATEGORY,\n HtpasswdHashAlgorithm,\n} from './constants';\nconst validationUtils = validatioUtils;\nexport {\n fileUtils,\n pkgUtils,\n searchUtils,\n streamUtils,\n errorUtils,\n // TODO: remove this typo\n validatioUtils,\n validationUtils,\n stringUtils,\n constants,\n pluginUtils,\n warningUtils,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAyCC,OAAA,CAAAH,SAAA,GAAAA,SAAA;AACzC,IAAAI,UAAA,GAAAH,uBAAA,CAAAC,OAAA;AAA4CC,OAAA,CAAAC,UAAA,GAAAA,UAAA;AAC5C,IAAAC,SAAA,GAAAJ,uBAAA,CAAAC,OAAA;AAA0CC,OAAA,CAAAE,SAAA,GAAAA,SAAA;AAC1C,IAAAC,QAAA,GAAAL,uBAAA,CAAAC,OAAA;AAAwCC,OAAA,CAAAG,QAAA,GAAAA,QAAA;AACxC,IAAAC,WAAA,GAAAN,uBAAA,CAAAC,OAAA;AAA8CC,OAAA,CAAAI,WAAA,GAAAA,WAAA;AAC9C,IAAAC,WAAA,GAAAP,uBAAA,CAAAC,OAAA;AAA8CC,OAAA,CAAAK,WAAA,GAAAA,WAAA;AAC9C,IAAAC,WAAA,GAAAR,uBAAA,CAAAC,OAAA;AAA8CC,OAAA,CAAAM,WAAA,GAAAA,WAAA;AAC9C,IAAAC,WAAA,GAAAT,uBAAA,CAAAC,OAAA;AAA8CC,OAAA,CAAAO,WAAA,GAAAA,WAAA;AAC9C,IAAAC,
|
|
1
|
+
{"version":3,"file":"index.js","names":["constants","_interopRequireWildcard","require","exports","errorUtils","fileUtils","pkgUtils","pluginUtils","searchUtils","streamUtils","stringUtils","tarballUtils","validatioUtils","warningUtils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","validationUtils"],"sources":["../src/index.ts"],"sourcesContent":["import * as constants from './constants';\nimport * as errorUtils from './error-utils';\nimport * as fileUtils from './file-utils';\nimport * as pkgUtils from './pkg-utils';\nimport * as pluginUtils from './plugin-utils';\nimport * as searchUtils from './search-utils';\nimport * as streamUtils from './stream-utils';\nimport * as stringUtils from './string-utils';\nimport * as tarballUtils from './tarball-utils';\nimport * as 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_PASSWORD_VALIDATION,\n DEFAULT_USER,\n USERS,\n MAINTAINERS,\n PLUGIN_CATEGORY,\n HtpasswdHashAlgorithm,\n} from './constants';\nconst validationUtils = validatioUtils;\nexport {\n fileUtils,\n pkgUtils,\n searchUtils,\n streamUtils,\n errorUtils,\n // TODO: remove this typo\n validatioUtils,\n validationUtils,\n stringUtils,\n constants,\n pluginUtils,\n warningUtils,\n tarballUtils,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAyCC,OAAA,CAAAH,SAAA,GAAAA,SAAA;AACzC,IAAAI,UAAA,GAAAH,uBAAA,CAAAC,OAAA;AAA4CC,OAAA,CAAAC,UAAA,GAAAA,UAAA;AAC5C,IAAAC,SAAA,GAAAJ,uBAAA,CAAAC,OAAA;AAA0CC,OAAA,CAAAE,SAAA,GAAAA,SAAA;AAC1C,IAAAC,QAAA,GAAAL,uBAAA,CAAAC,OAAA;AAAwCC,OAAA,CAAAG,QAAA,GAAAA,QAAA;AACxC,IAAAC,WAAA,GAAAN,uBAAA,CAAAC,OAAA;AAA8CC,OAAA,CAAAI,WAAA,GAAAA,WAAA;AAC9C,IAAAC,WAAA,GAAAP,uBAAA,CAAAC,OAAA;AAA8CC,OAAA,CAAAK,WAAA,GAAAA,WAAA;AAC9C,IAAAC,WAAA,GAAAR,uBAAA,CAAAC,OAAA;AAA8CC,OAAA,CAAAM,WAAA,GAAAA,WAAA;AAC9C,IAAAC,WAAA,GAAAT,uBAAA,CAAAC,OAAA;AAA8CC,OAAA,CAAAO,WAAA,GAAAA,WAAA;AAC9C,IAAAC,YAAA,GAAAV,uBAAA,CAAAC,OAAA;AAAgDC,OAAA,CAAAQ,YAAA,GAAAA,YAAA;AAChD,IAAAC,cAAA,GAAAX,uBAAA,CAAAC,OAAA;AAAqDC,OAAA,CAAAS,cAAA,GAAAA,cAAA;AACrD,IAAAC,YAAA,GAAAZ,uBAAA,CAAAC,OAAA;AAAgDC,OAAA,CAAAU,YAAA,GAAAA,YAAA;AAAA,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAd,wBAAAc,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAoBhD,MAAMW,eAAe,GAAA/B,OAAA,CAAA+B,eAAA,GAAGtB,cAAc","ignoreList":[]}
|
package/build/pkg-utils.d.ts
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
1
|
import { Manifest } from '@verdaccio/types';
|
|
2
|
-
/**
|
|
3
|
-
* Extract the tarball name from a registry dist url
|
|
4
|
-
* 'https://registry.npmjs.org/test/-/test-0.0.2.tgz'
|
|
5
|
-
* @param tarball tarball url
|
|
6
|
-
* @returns tarball filename
|
|
7
|
-
*/
|
|
8
|
-
export declare function extractTarballName(tarball: string): any;
|
|
9
2
|
/**
|
|
10
3
|
* Function filters out bad semver versions and sorts the array.
|
|
11
4
|
* @return {Array} sorted Array
|
package/build/pkg-utils.js
CHANGED
|
@@ -3,26 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.extractTarballName = extractTarballName;
|
|
7
6
|
exports.getLatest = getLatest;
|
|
8
7
|
exports.mergeVersions = mergeVersions;
|
|
9
8
|
exports.semverSort = semverSort;
|
|
10
9
|
var _semver = _interopRequireDefault(require("semver"));
|
|
11
|
-
var _url = require("url");
|
|
12
10
|
var _constants = require("./constants");
|
|
13
11
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
-
/**
|
|
15
|
-
* Extract the tarball name from a registry dist url
|
|
16
|
-
* 'https://registry.npmjs.org/test/-/test-0.0.2.tgz'
|
|
17
|
-
* @param tarball tarball url
|
|
18
|
-
* @returns tarball filename
|
|
19
|
-
*/
|
|
20
|
-
function extractTarballName(tarball) {
|
|
21
|
-
const urlObject = new _url.URL(tarball);
|
|
22
|
-
const filename = urlObject.pathname.replace(/^.*\//, '');
|
|
23
|
-
return filename;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
12
|
/**
|
|
27
13
|
* Function filters out bad semver versions and sorts the array.
|
|
28
14
|
* @return {Array} sorted Array
|
package/build/pkg-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkg-utils.js","names":["_semver","_interopRequireDefault","require","
|
|
1
|
+
{"version":3,"file":"pkg-utils.js","names":["_semver","_interopRequireDefault","require","_constants","e","__esModule","default","semverSort","listVersions","filter","x","semver","parse","sort","compareLoose","map","String","getLatest","pkg","Object","keys","versions","length","Error","latest","DIST_TAGS","mergeVersions","local","upstream","i","lte","readme"],"sources":["../src/pkg-utils.ts"],"sourcesContent":["import semver from 'semver';\n\nimport { Manifest } from '@verdaccio/types';\n\nimport { DIST_TAGS } from './constants';\n\n/**\n * Function filters out bad semver versions and sorts the array.\n * @return {Array} sorted Array\n */\nexport function semverSort(listVersions: string[]): string[] {\n return listVersions\n .filter(function (x): boolean {\n if (!semver.parse(x, true)) {\n return false;\n }\n return true;\n })\n .sort(semver.compareLoose)\n .map(String);\n}\n\n/**\n * Get the latest publihsed version of a package.\n * @param package metadata\n **/\nexport function getLatest(pkg: Manifest): string {\n const listVersions: string[] = Object.keys(pkg.versions);\n if (listVersions.length < 1) {\n throw Error('cannot get lastest version of none');\n }\n\n const versions: string[] = semverSort(listVersions);\n const latest: string | undefined = pkg[DIST_TAGS]?.latest ? pkg[DIST_TAGS].latest : versions[0];\n\n return latest;\n}\n\n/**\n * Function gets a local info and an info from uplinks and tries to merge it\n exported for unit tests only.\n * @param {*} local\n * @param {*} upstream\n * @param {*} config sds\n * @deprecated use @verdaccio/storage mergeVersions method\n */\n// @deprecated\nexport function mergeVersions(local: Manifest, upstream: Manifest) {\n // copy new versions to a cache\n // NOTE: if a certain version was updated, we can't refresh it reliably\n for (const i in upstream.versions) {\n if (typeof local.versions[i] === 'undefined') {\n local.versions[i] = upstream.versions[i];\n }\n }\n\n for (const i in upstream[DIST_TAGS]) {\n if (local[DIST_TAGS][i] !== upstream[DIST_TAGS][i]) {\n if (!local[DIST_TAGS][i] || semver.lte(local[DIST_TAGS][i], upstream[DIST_TAGS][i])) {\n local[DIST_TAGS][i] = upstream[DIST_TAGS][i];\n }\n if (i === 'latest' && local[DIST_TAGS][i] === upstream[DIST_TAGS][i]) {\n // if remote has more fresh package, we should borrow its readme\n local.readme = upstream.readme;\n }\n }\n }\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,UAAA,GAAAD,OAAA;AAAwC,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAExC;AACA;AACA;AACA;AACO,SAASG,UAAUA,CAACC,YAAsB,EAAY;EAC3D,OAAOA,YAAY,CAChBC,MAAM,CAAC,UAAUC,CAAC,EAAW;IAC5B,IAAI,CAACC,eAAM,CAACC,KAAK,CAACF,CAAC,EAAE,IAAI,CAAC,EAAE;MAC1B,OAAO,KAAK;IACd;IACA,OAAO,IAAI;EACb,CAAC,CAAC,CACDG,IAAI,CAACF,eAAM,CAACG,YAAY,CAAC,CACzBC,GAAG,CAACC,MAAM,CAAC;AAChB;;AAEA;AACA;AACA;AACA;AACO,SAASC,SAASA,CAACC,GAAa,EAAU;EAC/C,MAAMV,YAAsB,GAAGW,MAAM,CAACC,IAAI,CAACF,GAAG,CAACG,QAAQ,CAAC;EACxD,IAAIb,YAAY,CAACc,MAAM,GAAG,CAAC,EAAE;IAC3B,MAAMC,KAAK,CAAC,oCAAoC,CAAC;EACnD;EAEA,MAAMF,QAAkB,GAAGd,UAAU,CAACC,YAAY,CAAC;EACnD,MAAMgB,MAA0B,GAAGN,GAAG,CAACO,oBAAS,CAAC,EAAED,MAAM,GAAGN,GAAG,CAACO,oBAAS,CAAC,CAACD,MAAM,GAAGH,QAAQ,CAAC,CAAC,CAAC;EAE/F,OAAOG,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,aAAaA,CAACC,KAAe,EAAEC,QAAkB,EAAE;EACjE;EACA;EACA,KAAK,MAAMC,CAAC,IAAID,QAAQ,CAACP,QAAQ,EAAE;IACjC,IAAI,OAAOM,KAAK,CAACN,QAAQ,CAACQ,CAAC,CAAC,KAAK,WAAW,EAAE;MAC5CF,KAAK,CAACN,QAAQ,CAACQ,CAAC,CAAC,GAAGD,QAAQ,CAACP,QAAQ,CAACQ,CAAC,CAAC;IAC1C;EACF;EAEA,KAAK,MAAMA,CAAC,IAAID,QAAQ,CAACH,oBAAS,CAAC,EAAE;IACnC,IAAIE,KAAK,CAACF,oBAAS,CAAC,CAACI,CAAC,CAAC,KAAKD,QAAQ,CAACH,oBAAS,CAAC,CAACI,CAAC,CAAC,EAAE;MAClD,IAAI,CAACF,KAAK,CAACF,oBAAS,CAAC,CAACI,CAAC,CAAC,IAAIlB,eAAM,CAACmB,GAAG,CAACH,KAAK,CAACF,oBAAS,CAAC,CAACI,CAAC,CAAC,EAAED,QAAQ,CAACH,oBAAS,CAAC,CAACI,CAAC,CAAC,CAAC,EAAE;QACnFF,KAAK,CAACF,oBAAS,CAAC,CAACI,CAAC,CAAC,GAAGD,QAAQ,CAACH,oBAAS,CAAC,CAACI,CAAC,CAAC;MAC9C;MACA,IAAIA,CAAC,KAAK,QAAQ,IAAIF,KAAK,CAACF,oBAAS,CAAC,CAACI,CAAC,CAAC,KAAKD,QAAQ,CAACH,oBAAS,CAAC,CAACI,CAAC,CAAC,EAAE;QACpE;QACAF,KAAK,CAACI,MAAM,GAAGH,QAAQ,CAACG,MAAM;MAChC;IACF;EACF;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Return package version from tarball name
|
|
3
|
+
*
|
|
4
|
+
* test-1.2.4.tgz -> 1.2.4
|
|
5
|
+
* @param {String} fileName
|
|
6
|
+
* @returns {String}
|
|
7
|
+
*/
|
|
8
|
+
export declare function getVersionFromTarball(fileName: string): string | void;
|
|
9
|
+
/**
|
|
10
|
+
* Extract the tarball name from a registry dist url
|
|
11
|
+
*
|
|
12
|
+
* https://registry.npmjs.org/test/-/test-0.0.2.tgz -> test-0.0.2.tgz
|
|
13
|
+
* @param tarball tarball url
|
|
14
|
+
* @returns tarball filename
|
|
15
|
+
*/
|
|
16
|
+
export declare function extractTarballFromUrl(url: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Build the tarball filename from paackage name and version
|
|
19
|
+
*
|
|
20
|
+
* test, 1.2.4 -> test-1.2.4.tgz
|
|
21
|
+
* @scope/name, 1.2.4 -> name-1.2.4.tgz
|
|
22
|
+
* @param name package name
|
|
23
|
+
* @param version package version
|
|
24
|
+
* @returns tarball filename
|
|
25
|
+
*/
|
|
26
|
+
export declare function composeTarballFromPackage(name: string, version: string): string;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.composeTarballFromPackage = composeTarballFromPackage;
|
|
7
|
+
exports.extractTarballFromUrl = extractTarballFromUrl;
|
|
8
|
+
exports.getVersionFromTarball = getVersionFromTarball;
|
|
9
|
+
var _url = require("url");
|
|
10
|
+
/**
|
|
11
|
+
* Return package version from tarball name
|
|
12
|
+
*
|
|
13
|
+
* test-1.2.4.tgz -> 1.2.4
|
|
14
|
+
* @param {String} fileName
|
|
15
|
+
* @returns {String}
|
|
16
|
+
*/
|
|
17
|
+
function getVersionFromTarball(fileName) {
|
|
18
|
+
const groups = fileName.replace(/\.tgz$/, '').match(/^[^/]+-(\d+\.\d+\.\d+.*)/);
|
|
19
|
+
return groups !== null ? groups[1] : undefined;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Extract the tarball name from a registry dist url
|
|
24
|
+
*
|
|
25
|
+
* https://registry.npmjs.org/test/-/test-0.0.2.tgz -> test-0.0.2.tgz
|
|
26
|
+
* @param tarball tarball url
|
|
27
|
+
* @returns tarball filename
|
|
28
|
+
*/
|
|
29
|
+
function extractTarballFromUrl(url) {
|
|
30
|
+
const urlObject = new _url.URL(url);
|
|
31
|
+
return urlObject.pathname.replace(/^.*\//, '');
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Build the tarball filename from paackage name and version
|
|
36
|
+
*
|
|
37
|
+
* test, 1.2.4 -> test-1.2.4.tgz
|
|
38
|
+
* @scope/name, 1.2.4 -> name-1.2.4.tgz
|
|
39
|
+
* @param name package name
|
|
40
|
+
* @param version package version
|
|
41
|
+
* @returns tarball filename
|
|
42
|
+
*/
|
|
43
|
+
function composeTarballFromPackage(name, version) {
|
|
44
|
+
if (name.includes('/')) {
|
|
45
|
+
return `${name.split('/')[1]}-${version}.tgz`;
|
|
46
|
+
} else {
|
|
47
|
+
return `${name}-${version}.tgz`;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=tarball-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tarball-utils.js","names":["_url","require","getVersionFromTarball","fileName","groups","replace","match","undefined","extractTarballFromUrl","url","urlObject","URL","pathname","composeTarballFromPackage","name","version","includes","split"],"sources":["../src/tarball-utils.ts"],"sourcesContent":["import { URL } from 'url';\n\n/**\n * Return package version from tarball name\n *\n * test-1.2.4.tgz -> 1.2.4\n * @param {String} fileName\n * @returns {String}\n */\nexport function getVersionFromTarball(fileName: string): string | void {\n const groups = fileName.replace(/\\.tgz$/, '').match(/^[^/]+-(\\d+\\.\\d+\\.\\d+.*)/);\n\n return groups !== null ? groups[1] : undefined;\n}\n\n/**\n * Extract the tarball name from a registry dist url\n *\n * https://registry.npmjs.org/test/-/test-0.0.2.tgz -> test-0.0.2.tgz\n * @param tarball tarball url\n * @returns tarball filename\n */\nexport function extractTarballFromUrl(url: string): string {\n const urlObject = new URL(url);\n return urlObject.pathname.replace(/^.*\\//, '');\n}\n\n/**\n * Build the tarball filename from paackage name and version\n *\n * test, 1.2.4 -> test-1.2.4.tgz\n * @scope/name, 1.2.4 -> name-1.2.4.tgz\n * @param name package name\n * @param version package version\n * @returns tarball filename\n */\nexport function composeTarballFromPackage(name: string, version: string): string {\n if (name.includes('/')) {\n return `${name.split('/')[1]}-${version}.tgz`;\n } else {\n return `${name}-${version}.tgz`;\n }\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,qBAAqBA,CAACC,QAAgB,EAAiB;EACrE,MAAMC,MAAM,GAAGD,QAAQ,CAACE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAACC,KAAK,CAAC,0BAA0B,CAAC;EAE/E,OAAOF,MAAM,KAAK,IAAI,GAAGA,MAAM,CAAC,CAAC,CAAC,GAAGG,SAAS;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,qBAAqBA,CAACC,GAAW,EAAU;EACzD,MAAMC,SAAS,GAAG,IAAIC,QAAG,CAACF,GAAG,CAAC;EAC9B,OAAOC,SAAS,CAACE,QAAQ,CAACP,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASQ,yBAAyBA,CAACC,IAAY,EAAEC,OAAe,EAAU;EAC/E,IAAID,IAAI,CAACE,QAAQ,CAAC,GAAG,CAAC,EAAE;IACtB,OAAO,GAAGF,IAAI,CAACG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAIF,OAAO,MAAM;EAC/C,CAAC,MAAM;IACL,OAAO,GAAGD,IAAI,IAAIC,OAAO,MAAM;EACjC;AACF","ignoreList":[]}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -6,6 +6,7 @@ import * as pluginUtils from './plugin-utils';
|
|
|
6
6
|
import * as searchUtils from './search-utils';
|
|
7
7
|
import * as streamUtils from './stream-utils';
|
|
8
8
|
import * as stringUtils from './string-utils';
|
|
9
|
+
import * as tarballUtils from './tarball-utils';
|
|
9
10
|
import * as validatioUtils from './validation-utils';
|
|
10
11
|
import * as warningUtils from './warning-utils';
|
|
11
12
|
|
|
@@ -41,4 +42,5 @@ export {
|
|
|
41
42
|
constants,
|
|
42
43
|
pluginUtils,
|
|
43
44
|
warningUtils,
|
|
45
|
+
tarballUtils,
|
|
44
46
|
};
|
package/src/pkg-utils.ts
CHANGED
|
@@ -1,22 +1,9 @@
|
|
|
1
1
|
import semver from 'semver';
|
|
2
|
-
import { URL } from 'url';
|
|
3
2
|
|
|
4
3
|
import { Manifest } from '@verdaccio/types';
|
|
5
4
|
|
|
6
5
|
import { DIST_TAGS } from './constants';
|
|
7
6
|
|
|
8
|
-
/**
|
|
9
|
-
* Extract the tarball name from a registry dist url
|
|
10
|
-
* 'https://registry.npmjs.org/test/-/test-0.0.2.tgz'
|
|
11
|
-
* @param tarball tarball url
|
|
12
|
-
* @returns tarball filename
|
|
13
|
-
*/
|
|
14
|
-
export function extractTarballName(tarball: string) {
|
|
15
|
-
const urlObject: any = new URL(tarball);
|
|
16
|
-
const filename = urlObject.pathname.replace(/^.*\//, '');
|
|
17
|
-
return filename;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
7
|
/**
|
|
21
8
|
* Function filters out bad semver versions and sorts the array.
|
|
22
9
|
* @return {Array} sorted Array
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { URL } from 'url';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Return package version from tarball name
|
|
5
|
+
*
|
|
6
|
+
* test-1.2.4.tgz -> 1.2.4
|
|
7
|
+
* @param {String} fileName
|
|
8
|
+
* @returns {String}
|
|
9
|
+
*/
|
|
10
|
+
export function getVersionFromTarball(fileName: string): string | void {
|
|
11
|
+
const groups = fileName.replace(/\.tgz$/, '').match(/^[^/]+-(\d+\.\d+\.\d+.*)/);
|
|
12
|
+
|
|
13
|
+
return groups !== null ? groups[1] : undefined;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Extract the tarball name from a registry dist url
|
|
18
|
+
*
|
|
19
|
+
* https://registry.npmjs.org/test/-/test-0.0.2.tgz -> test-0.0.2.tgz
|
|
20
|
+
* @param tarball tarball url
|
|
21
|
+
* @returns tarball filename
|
|
22
|
+
*/
|
|
23
|
+
export function extractTarballFromUrl(url: string): string {
|
|
24
|
+
const urlObject = new URL(url);
|
|
25
|
+
return urlObject.pathname.replace(/^.*\//, '');
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Build the tarball filename from paackage name and version
|
|
30
|
+
*
|
|
31
|
+
* test, 1.2.4 -> test-1.2.4.tgz
|
|
32
|
+
* @scope/name, 1.2.4 -> name-1.2.4.tgz
|
|
33
|
+
* @param name package name
|
|
34
|
+
* @param version package version
|
|
35
|
+
* @returns tarball filename
|
|
36
|
+
*/
|
|
37
|
+
export function composeTarballFromPackage(name: string, version: string): string {
|
|
38
|
+
if (name.includes('/')) {
|
|
39
|
+
return `${name.split('/')[1]}-${version}.tgz`;
|
|
40
|
+
} else {
|
|
41
|
+
return `${name}-${version}.tgz`;
|
|
42
|
+
}
|
|
43
|
+
}
|
package/test/pkg-utils.spec.ts
CHANGED
|
@@ -3,22 +3,6 @@ import { describe, expect, test } from 'vitest';
|
|
|
3
3
|
import { DIST_TAGS, pkgUtils } from '../src';
|
|
4
4
|
|
|
5
5
|
describe('pkg-utils', () => {
|
|
6
|
-
test('extractTarballName', () => {
|
|
7
|
-
expect(pkgUtils.extractTarballName('https://registry.npmjs.org/test/-/test-0.0.2.tgz')).toBe(
|
|
8
|
-
'test-0.0.2.tgz'
|
|
9
|
-
);
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
test('extractTarballName with no tarball should not fails', () => {
|
|
13
|
-
expect(pkgUtils.extractTarballName('https://registry.npmjs.org/')).toBe('');
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
test('extractTarballName fails', () => {
|
|
17
|
-
expect(() =>
|
|
18
|
-
pkgUtils.extractTarballName('xxxxregistry.npmjs.org/test/-/test-0.0.2.tgz')
|
|
19
|
-
).toThrow();
|
|
20
|
-
});
|
|
21
|
-
|
|
22
6
|
test('getLatest fails if no versions', () => {
|
|
23
7
|
expect(() =>
|
|
24
8
|
// @ts-expect-error
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { describe, expect, test } from 'vitest';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
composeTarballFromPackage,
|
|
5
|
+
extractTarballFromUrl,
|
|
6
|
+
getVersionFromTarball,
|
|
7
|
+
} from '../src/tarball-utils';
|
|
8
|
+
|
|
9
|
+
describe('Utilities', () => {
|
|
10
|
+
describe('getVersionFromTarball', () => {
|
|
11
|
+
test('should get the right version', () => {
|
|
12
|
+
const simpleName = 'test-name-4.2.12.tgz';
|
|
13
|
+
const complexName = 'test-5.6.4-beta.2.tgz';
|
|
14
|
+
const otherComplexName = 'test-3.5.0-6.tgz';
|
|
15
|
+
expect(getVersionFromTarball(simpleName)).toEqual('4.2.12');
|
|
16
|
+
expect(getVersionFromTarball(complexName)).toEqual('5.6.4-beta.2');
|
|
17
|
+
expect(getVersionFromTarball(otherComplexName)).toEqual('3.5.0-6');
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
test('should fail at incorrect tarball name', () => {
|
|
21
|
+
expect(getVersionFromTarball('incorrectName')).toBeUndefined();
|
|
22
|
+
expect(getVersionFromTarball('test-1.2.tgz')).toBeUndefined();
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
describe('extractTarballFromUrl', () => {
|
|
28
|
+
const metadata: any = {
|
|
29
|
+
name: 'npm_test',
|
|
30
|
+
versions: {
|
|
31
|
+
'1.0.0': {
|
|
32
|
+
dist: {
|
|
33
|
+
tarball: 'http://registry.org/npm_test/-/npm_test-1.0.0.tgz',
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
'1.0.1': {
|
|
37
|
+
dist: {
|
|
38
|
+
tarball: 'https://localhost:4873/npm_test/-/npm_test-1.0.1.tgz',
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
'1.0.2': {
|
|
42
|
+
dist: {
|
|
43
|
+
tarball: 'https://localhost/npm_test-1.0.2.tgz',
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
'1.0.3': {
|
|
47
|
+
dist: {
|
|
48
|
+
tarball: 'http://registry.org/@org/npm_test/-/npm_test-1.0.3.tgz',
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
test('should return only name of tarball', () => {
|
|
55
|
+
expect(extractTarballFromUrl(metadata.versions['1.0.0'].dist.tarball)).toEqual(
|
|
56
|
+
'npm_test-1.0.0.tgz'
|
|
57
|
+
);
|
|
58
|
+
expect(extractTarballFromUrl(metadata.versions['1.0.1'].dist.tarball)).toEqual(
|
|
59
|
+
'npm_test-1.0.1.tgz'
|
|
60
|
+
);
|
|
61
|
+
expect(extractTarballFromUrl(metadata.versions['1.0.2'].dist.tarball)).toEqual(
|
|
62
|
+
'npm_test-1.0.2.tgz'
|
|
63
|
+
);
|
|
64
|
+
expect(extractTarballFromUrl(metadata.versions['1.0.3'].dist.tarball)).toEqual(
|
|
65
|
+
'npm_test-1.0.3.tgz'
|
|
66
|
+
);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
test('without tarball should not fails', () => {
|
|
70
|
+
expect(extractTarballFromUrl('https://registry.npmjs.org/')).toBe('');
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
test('fails with incomplete URL', () => {
|
|
74
|
+
expect(() => extractTarballFromUrl('xxxxregistry.npmjs.org/test/-/test-0.0.2.tgz')).toThrow();
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
test('composeTarballFromPackage - should return filename of tarball', () => {
|
|
79
|
+
expect(composeTarballFromPackage('npm_test', '1.0.0')).toEqual('npm_test-1.0.0.tgz');
|
|
80
|
+
expect(composeTarballFromPackage('@mbtools/npm_test', '1.0.1')).toEqual('npm_test-1.0.1.tgz');
|
|
81
|
+
});
|