@verdaccio/store 7.0.0-next.6 → 8.0.0-next-8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +340 -0
- package/README.md +24 -57
- package/build/index.d.ts +0 -1
- package/build/index.js +0 -12
- package/build/index.js.map +1 -1
- package/build/lib/star-utils.js.map +1 -1
- package/build/lib/storage-utils.d.ts +3 -0
- package/build/lib/storage-utils.js +35 -2
- package/build/lib/storage-utils.js.map +1 -1
- package/build/lib/versions-utils.d.ts +14 -0
- package/build/lib/versions-utils.js +52 -1
- package/build/lib/versions-utils.js.map +1 -1
- package/build/local-storage.js +3 -3
- package/build/local-storage.js.map +1 -1
- package/build/storage.d.ts +14 -15
- package/build/storage.js +198 -161
- package/build/storage.js.map +1 -1
- package/build/type.d.ts +5 -0
- package/build/type.js.map +1 -1
- package/jest.config.js +2 -2
- package/package.json +17 -16
- package/src/index.ts +0 -1
- package/src/lib/storage-utils.ts +40 -2
- package/src/lib/versions-utils.ts +50 -1
- package/src/local-storage.ts +3 -2
- package/src/storage.ts +228 -149
- package/src/type.ts +6 -0
- package/test/fixtures/config/publishWithOwnerAndCheck.yaml +18 -0
- package/test/fixtures/config/publishWithOwnerDefault.yaml +15 -0
- package/test/fixtures/config/syncDoubleUplinksMetadata.yaml +2 -18
- package/test/search.spec.ts +28 -7
- package/test/storage-utils.spec.ts +1 -0
- package/test/storage.spec.ts +466 -80
- package/test/versions.spec.ts +58 -1
- package/build/lib/TransFormResults.d.ts +0 -15
- package/build/lib/TransFormResults.js +0 -51
- package/build/lib/TransFormResults.js.map +0 -1
- package/build/lib/search-utils.d.ts +0 -4
- package/build/lib/search-utils.js +0 -50
- package/build/lib/search-utils.js.map +0 -1
- package/build/lib/uplink-util.d.ts +0 -10
- package/build/lib/uplink-util.js +0 -43
- package/build/lib/uplink-util.js.map +0 -1
- package/src/lib/TransFormResults.ts +0 -42
- package/src/lib/search-utils.ts +0 -50
- package/src/lib/uplink-util.ts +0 -42
- /package/test/fixtures/config/{getTarballNext-getupstream.yaml → getTarball-getupstream.yaml} +0 -0
package/test/versions.spec.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import assert from 'assert';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
getVersion,
|
|
5
|
+
removeLowerVersions,
|
|
6
|
+
sortVersionsAndFilterInvalid,
|
|
7
|
+
tagVersion,
|
|
8
|
+
} from '../src/index';
|
|
4
9
|
|
|
5
10
|
describe('versions-utils', () => {
|
|
6
11
|
const dist = (version) => ({
|
|
@@ -36,12 +41,16 @@ describe('versions-utils', () => {
|
|
|
36
41
|
});
|
|
37
42
|
|
|
38
43
|
test('should return nothing on get invalid versions', () => {
|
|
44
|
+
// @ts-ignore
|
|
39
45
|
expect(getVersion({ ...metadata } as any, undefined)).toBeUndefined();
|
|
46
|
+
// @ts-ignore
|
|
40
47
|
expect(getVersion({ ...metadata } as any, null)).toBeUndefined();
|
|
48
|
+
// @ts-ignore
|
|
41
49
|
expect(getVersion({ ...metadata } as any, 8)).toBeUndefined();
|
|
42
50
|
});
|
|
43
51
|
|
|
44
52
|
test('should handle no versions', () => {
|
|
53
|
+
// @ts-ignore
|
|
45
54
|
expect(getVersion(undefined, undefined)).toBeUndefined();
|
|
46
55
|
});
|
|
47
56
|
});
|
|
@@ -55,6 +64,7 @@ describe('versions-utils', () => {
|
|
|
55
64
|
]);
|
|
56
65
|
});
|
|
57
66
|
test('should sort versions and filter out invalid', () => {
|
|
67
|
+
// @ts-ignore
|
|
58
68
|
expect(sortVersionsAndFilterInvalid(['1.0.0', '5.0.0', '2.0.0', '', null])).toEqual([
|
|
59
69
|
'1.0.0',
|
|
60
70
|
'2.0.0',
|
|
@@ -106,4 +116,51 @@ describe('versions-utils', () => {
|
|
|
106
116
|
});
|
|
107
117
|
});
|
|
108
118
|
});
|
|
119
|
+
|
|
120
|
+
describe('removeLowerVersions', () => {
|
|
121
|
+
it('should remove lower semantic versions', () => {
|
|
122
|
+
const inputArray = [
|
|
123
|
+
{ package: { name: 'object1', version: '1.0.0' } },
|
|
124
|
+
{ package: { name: 'object1', version: '2.0.0' } }, // Duplicate name 'object1'
|
|
125
|
+
{ package: { name: 'object2', version: '2.0.0' } }, // Duplicate name 'object2'
|
|
126
|
+
{ package: { name: 'object2', version: '2.0.0' } },
|
|
127
|
+
{ package: { name: 'object3', version: '3.0.0' } },
|
|
128
|
+
{ package: { name: 'object4', version: '1.0.0' } },
|
|
129
|
+
];
|
|
130
|
+
|
|
131
|
+
const expectedOutput = [
|
|
132
|
+
{ package: { name: 'object1', version: '2.0.0' } },
|
|
133
|
+
{ package: { name: 'object2', version: '2.0.0' } },
|
|
134
|
+
{ package: { name: 'object3', version: '3.0.0' } },
|
|
135
|
+
{ package: { name: 'object4', version: '1.0.0' } },
|
|
136
|
+
];
|
|
137
|
+
|
|
138
|
+
// @ts-expect-error
|
|
139
|
+
const result = removeLowerVersions(inputArray);
|
|
140
|
+
expect(result).toEqual(expectedOutput);
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
it('should remove lower semantic versions 2', () => {
|
|
144
|
+
const inputArray = [
|
|
145
|
+
{ package: { name: 'object1', version: '1.0.0' } },
|
|
146
|
+
{ package: { name: 'object1', version: '2.0.0' } }, // Duplicate name 'object1'
|
|
147
|
+
{ package: { name: 'object2', version: '2.0.3' } }, // Duplicate name 'object2'
|
|
148
|
+
{ package: { name: 'object2', version: '2.0.0' } },
|
|
149
|
+
{ package: { name: 'object3', version: '3.0.0' } },
|
|
150
|
+
{ package: { name: 'object4', version: '1.0.0' } },
|
|
151
|
+
];
|
|
152
|
+
|
|
153
|
+
const expectedOutput = [
|
|
154
|
+
{ package: { name: 'object1', version: '2.0.0' } },
|
|
155
|
+
{ package: { name: 'object2', version: '2.0.3' } },
|
|
156
|
+
{ package: { name: 'object3', version: '3.0.0' } },
|
|
157
|
+
{ package: { name: 'object4', version: '1.0.0' } },
|
|
158
|
+
];
|
|
159
|
+
|
|
160
|
+
// @ts-expect-error
|
|
161
|
+
const result = removeLowerVersions(inputArray);
|
|
162
|
+
|
|
163
|
+
expect(result).toEqual(expectedOutput);
|
|
164
|
+
});
|
|
165
|
+
});
|
|
109
166
|
});
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { Transform } from 'stream';
|
|
3
|
-
export declare class TransFormResults extends Transform {
|
|
4
|
-
constructor(options: any);
|
|
5
|
-
/**
|
|
6
|
-
* Transform either array of packages or a single package into a stream of packages.
|
|
7
|
-
* From uplinks the chunks are array but from local packages are objects.
|
|
8
|
-
* @param {string} chunk
|
|
9
|
-
* @param {string} encoding
|
|
10
|
-
* @param {function} done
|
|
11
|
-
* @returns {void}
|
|
12
|
-
* @override
|
|
13
|
-
*/
|
|
14
|
-
_transform(chunk: any, _encoding: any, callback: any): any;
|
|
15
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.TransFormResults = void 0;
|
|
7
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
8
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
|
-
var _stream = require("stream");
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
const debug = (0, _debug.default)('verdaccio:storage:search:transform');
|
|
12
|
-
class TransFormResults extends _stream.Transform {
|
|
13
|
-
constructor(options) {
|
|
14
|
-
super(options);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Transform either array of packages or a single package into a stream of packages.
|
|
19
|
-
* From uplinks the chunks are array but from local packages are objects.
|
|
20
|
-
* @param {string} chunk
|
|
21
|
-
* @param {string} encoding
|
|
22
|
-
* @param {function} done
|
|
23
|
-
* @returns {void}
|
|
24
|
-
* @override
|
|
25
|
-
*/
|
|
26
|
-
_transform(chunk, _encoding, callback) {
|
|
27
|
-
if (_lodash.default.isArray(chunk)) {
|
|
28
|
-
// from remotes we should expect chunks as arrays
|
|
29
|
-
chunk.filter(pkgItem => {
|
|
30
|
-
var _pkgItem$package;
|
|
31
|
-
debug(`streaming remote pkg name ${pkgItem === null || pkgItem === void 0 ? void 0 : (_pkgItem$package = pkgItem.package) === null || _pkgItem$package === void 0 ? void 0 : _pkgItem$package.name}`);
|
|
32
|
-
return true;
|
|
33
|
-
}).forEach(pkgItem => {
|
|
34
|
-
this.push({
|
|
35
|
-
...pkgItem,
|
|
36
|
-
verdaccioPkgCached: false,
|
|
37
|
-
verdaccioPrivate: false
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
return callback();
|
|
41
|
-
} else {
|
|
42
|
-
var _chunk$package;
|
|
43
|
-
// local we expect objects
|
|
44
|
-
debug(`streaming local pkg name ${chunk === null || chunk === void 0 ? void 0 : (_chunk$package = chunk.package) === null || _chunk$package === void 0 ? void 0 : _chunk$package.name}`);
|
|
45
|
-
this.push(chunk);
|
|
46
|
-
return callback();
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
exports.TransFormResults = TransFormResults;
|
|
51
|
-
//# sourceMappingURL=TransFormResults.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TransFormResults.js","names":["_debug","_interopRequireDefault","require","_lodash","_stream","obj","__esModule","default","debug","buildDebug","TransFormResults","Transform","constructor","options","_transform","chunk","_encoding","callback","_","isArray","filter","pkgItem","_pkgItem$package","package","name","forEach","push","verdaccioPkgCached","verdaccioPrivate","_chunk$package","exports"],"sources":["../../src/lib/TransFormResults.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\nimport { Transform } from 'stream';\n\nimport { searchUtils } from '@verdaccio/core';\n\nconst debug = buildDebug('verdaccio:storage:search:transform');\n\nexport class TransFormResults extends Transform {\n public constructor(options) {\n super(options);\n }\n\n /**\n * Transform either array of packages or a single package into a stream of packages.\n * From uplinks the chunks are array but from local packages are objects.\n * @param {string} chunk\n * @param {string} encoding\n * @param {function} done\n * @returns {void}\n * @override\n */\n public _transform(chunk, _encoding, callback) {\n if (_.isArray(chunk)) {\n // from remotes we should expect chunks as arrays\n (chunk as searchUtils.SearchItem[])\n .filter((pkgItem) => {\n debug(`streaming remote pkg name ${pkgItem?.package?.name}`);\n return true;\n })\n .forEach((pkgItem) => {\n this.push({ ...pkgItem, verdaccioPkgCached: false, verdaccioPrivate: false });\n });\n return callback();\n } else {\n // local we expect objects\n debug(`streaming local pkg name ${chunk?.package?.name}`);\n this.push(chunk);\n return callback();\n }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAAmC,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAInC,MAAMG,KAAK,GAAG,IAAAC,cAAU,EAAC,oCAAoC,CAAC;AAEvD,MAAMC,gBAAgB,SAASC,iBAAS,CAAC;EACvCC,WAAWA,CAACC,OAAO,EAAE;IAC1B,KAAK,CAACA,OAAO,CAAC;EAChB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACSC,UAAUA,CAACC,KAAK,EAAEC,SAAS,EAAEC,QAAQ,EAAE;IAC5C,IAAIC,eAAC,CAACC,OAAO,CAACJ,KAAK,CAAC,EAAE;MACpB;MACCA,KAAK,CACHK,MAAM,CAAEC,OAAO,IAAK;QAAA,IAAAC,gBAAA;QACnBd,KAAK,CAAE,6BAA4Ba,OAAO,aAAPA,OAAO,wBAAAC,gBAAA,GAAPD,OAAO,CAAEE,OAAO,cAAAD,gBAAA,uBAAhBA,gBAAA,CAAkBE,IAAK,EAAC,CAAC;QAC5D,OAAO,IAAI;MACb,CAAC,CAAC,CACDC,OAAO,CAAEJ,OAAO,IAAK;QACpB,IAAI,CAACK,IAAI,CAAC;UAAE,GAAGL,OAAO;UAAEM,kBAAkB,EAAE,KAAK;UAAEC,gBAAgB,EAAE;QAAM,CAAC,CAAC;MAC/E,CAAC,CAAC;MACJ,OAAOX,QAAQ,CAAC,CAAC;IACnB,CAAC,MAAM;MAAA,IAAAY,cAAA;MACL;MACArB,KAAK,CAAE,4BAA2BO,KAAK,aAALA,KAAK,wBAAAc,cAAA,GAALd,KAAK,CAAEQ,OAAO,cAAAM,cAAA,uBAAdA,cAAA,CAAgBL,IAAK,EAAC,CAAC;MACzD,IAAI,CAACE,IAAI,CAACX,KAAK,CAAC;MAChB,OAAOE,QAAQ,CAAC,CAAC;IACnB;EACF;AACF;AAACa,OAAA,CAAApB,gBAAA,GAAAA,gBAAA"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { searchUtils } from '@verdaccio/core';
|
|
2
|
-
import { Manifest } from '@verdaccio/types';
|
|
3
|
-
export declare function removeDuplicates(results: searchUtils.SearchPackageItem[]): searchUtils.SearchPackageItem[];
|
|
4
|
-
export declare function mapManifestToSearchPackageBody(pkg: Manifest, searchItem: searchUtils.SearchItem): searchUtils.SearchPackageBody;
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.mapManifestToSearchPackageBody = mapManifestToSearchPackageBody;
|
|
7
|
-
exports.removeDuplicates = removeDuplicates;
|
|
8
|
-
var _lodash = require("lodash");
|
|
9
|
-
var _core = require("@verdaccio/core");
|
|
10
|
-
function removeDuplicates(results) {
|
|
11
|
-
const pkgNames = [];
|
|
12
|
-
const orderByResults = (0, _lodash.orderBy)(results, ['verdaccioPrivate', 'asc']);
|
|
13
|
-
return orderByResults.filter(pkg => {
|
|
14
|
-
var _pkg$package, _pkg$package2;
|
|
15
|
-
if (pkgNames.includes(pkg === null || pkg === void 0 ? void 0 : (_pkg$package = pkg.package) === null || _pkg$package === void 0 ? void 0 : _pkg$package.name)) {
|
|
16
|
-
return false;
|
|
17
|
-
}
|
|
18
|
-
pkgNames.push(pkg === null || pkg === void 0 ? void 0 : (_pkg$package2 = pkg.package) === null || _pkg$package2 === void 0 ? void 0 : _pkg$package2.name);
|
|
19
|
-
return true;
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
function mapManifestToSearchPackageBody(pkg, searchItem) {
|
|
23
|
-
const latest = _core.pkgUtils.getLatest(pkg);
|
|
24
|
-
const version = pkg.versions[latest];
|
|
25
|
-
const result = {
|
|
26
|
-
name: version.name,
|
|
27
|
-
scope: '',
|
|
28
|
-
description: version.description,
|
|
29
|
-
version: latest,
|
|
30
|
-
keywords: version.keywords,
|
|
31
|
-
date: pkg.time[latest],
|
|
32
|
-
// FIXME: type
|
|
33
|
-
author: version.author,
|
|
34
|
-
// FIXME: not possible fill this out from a private package
|
|
35
|
-
publisher: {},
|
|
36
|
-
// FIXME: type
|
|
37
|
-
maintainers: version.maintainers,
|
|
38
|
-
links: {
|
|
39
|
-
npm: '',
|
|
40
|
-
homepage: version.homepage,
|
|
41
|
-
repository: version.repository,
|
|
42
|
-
bugs: version.bugs
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
if (typeof searchItem.package.scoped === 'string') {
|
|
46
|
-
result.scope = searchItem.package.scoped;
|
|
47
|
-
}
|
|
48
|
-
return result;
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=search-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search-utils.js","names":["_lodash","require","_core","removeDuplicates","results","pkgNames","orderByResults","orderBy","filter","pkg","_pkg$package","_pkg$package2","includes","package","name","push","mapManifestToSearchPackageBody","searchItem","latest","pkgUtils","getLatest","version","versions","result","scope","description","keywords","date","time","author","publisher","maintainers","links","npm","homepage","repository","bugs","scoped"],"sources":["../../src/lib/search-utils.ts"],"sourcesContent":["import { orderBy } from 'lodash';\n\nimport { pkgUtils, searchUtils } from '@verdaccio/core';\nimport { Manifest, Version } from '@verdaccio/types';\n\nexport function removeDuplicates(results: searchUtils.SearchPackageItem[]) {\n const pkgNames: any[] = [];\n const orderByResults = orderBy(results, ['verdaccioPrivate', 'asc']);\n return orderByResults.filter((pkg) => {\n if (pkgNames.includes(pkg?.package?.name)) {\n return false;\n }\n pkgNames.push(pkg?.package?.name);\n return true;\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"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AAGO,SAASE,gBAAgBA,CAACC,OAAwC,EAAE;EACzE,MAAMC,QAAe,GAAG,EAAE;EAC1B,MAAMC,cAAc,GAAG,IAAAC,eAAO,EAACH,OAAO,EAAE,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;EACpE,OAAOE,cAAc,CAACE,MAAM,CAAEC,GAAG,IAAK;IAAA,IAAAC,YAAA,EAAAC,aAAA;IACpC,IAAIN,QAAQ,CAACO,QAAQ,CAACH,GAAG,aAAHA,GAAG,wBAAAC,YAAA,GAAHD,GAAG,CAAEI,OAAO,cAAAH,YAAA,uBAAZA,YAAA,CAAcI,IAAI,CAAC,EAAE;MACzC,OAAO,KAAK;IACd;IACAT,QAAQ,CAACU,IAAI,CAACN,GAAG,aAAHA,GAAG,wBAAAE,aAAA,GAAHF,GAAG,CAAEI,OAAO,cAAAF,aAAA,uBAAZA,aAAA,CAAcG,IAAI,CAAC;IACjC,OAAO,IAAI;EACb,CAAC,CAAC;AACJ;AAEO,SAASE,8BAA8BA,CAC5CP,GAAa,EACbQ,UAAkC,EACH;EAC/B,MAAMC,MAAM,GAAGC,cAAQ,CAACC,SAAS,CAACX,GAAG,CAAC;EACtC,MAAMY,OAAgB,GAAGZ,GAAG,CAACa,QAAQ,CAACJ,MAAM,CAAC;EAC7C,MAAMK,MAAqC,GAAG;IAC5CT,IAAI,EAAEO,OAAO,CAACP,IAAI;IAClBU,KAAK,EAAE,EAAE;IACTC,WAAW,EAAEJ,OAAO,CAACI,WAAW;IAChCJ,OAAO,EAAEH,MAAM;IACfQ,QAAQ,EAAEL,OAAO,CAACK,QAAQ;IAC1BC,IAAI,EAAElB,GAAG,CAACmB,IAAI,CAACV,MAAM,CAAC;IACtB;IACAW,MAAM,EAAER,OAAO,CAACQ,MAAa;IAC7B;IACAC,SAAS,EAAE,CAAC,CAAC;IACb;IACAC,WAAW,EAAEV,OAAO,CAACU,WAAkB;IACvCC,KAAK,EAAE;MACLC,GAAG,EAAE,EAAE;MACPC,QAAQ,EAAEb,OAAO,CAACa,QAAQ;MAC1BC,UAAU,EAAEd,OAAO,CAACc,UAAU;MAC9BC,IAAI,EAAEf,OAAO,CAACe;IAChB;EACF,CAAC;EAED,IAAI,OAAOnB,UAAU,CAACJ,OAAO,CAACwB,MAAM,KAAK,QAAQ,EAAE;IACjDd,MAAM,CAACC,KAAK,GAAGP,UAAU,CAACJ,OAAO,CAACwB,MAAM;EAC1C;EAEA,OAAOd,MAAM;AACf"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { IProxy } from '@verdaccio/proxy';
|
|
2
|
-
import { Config, Manifest } from '@verdaccio/types';
|
|
3
|
-
export interface ProxyInstanceList {
|
|
4
|
-
[key: string]: IProxy;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Set up the Up Storage for each link.
|
|
8
|
-
*/
|
|
9
|
-
export declare function setupUpLinks(config: Config): ProxyInstanceList;
|
|
10
|
-
export declare function updateVersionsHiddenUpLinkNext(manifest: Manifest, upLink: IProxy): Manifest;
|
package/build/lib/uplink-util.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.setupUpLinks = setupUpLinks;
|
|
7
|
-
exports.updateVersionsHiddenUpLinkNext = updateVersionsHiddenUpLinkNext;
|
|
8
|
-
var _logger = require("@verdaccio/logger");
|
|
9
|
-
var _proxy = require("@verdaccio/proxy");
|
|
10
|
-
/**
|
|
11
|
-
* Set up the Up Storage for each link.
|
|
12
|
-
*/
|
|
13
|
-
function setupUpLinks(config) {
|
|
14
|
-
const uplinks = {};
|
|
15
|
-
for (const uplinkName in config.uplinks) {
|
|
16
|
-
if (Object.prototype.hasOwnProperty.call(config.uplinks, uplinkName)) {
|
|
17
|
-
// instance for each up-link definition
|
|
18
|
-
const proxy = new _proxy.ProxyStorage(config.uplinks[uplinkName], config, _logger.logger);
|
|
19
|
-
// TODO: review this can be inside ProxyStorage
|
|
20
|
-
proxy.upname = uplinkName;
|
|
21
|
-
uplinks[uplinkName] = proxy;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return uplinks;
|
|
25
|
-
}
|
|
26
|
-
function updateVersionsHiddenUpLinkNext(manifest, upLink) {
|
|
27
|
-
const {
|
|
28
|
-
versions
|
|
29
|
-
} = manifest;
|
|
30
|
-
const versionsList = Object.keys(versions);
|
|
31
|
-
if (versionsList.length === 0) {
|
|
32
|
-
return manifest;
|
|
33
|
-
}
|
|
34
|
-
for (const version of versionsList) {
|
|
35
|
-
// holds a "hidden" value to be used by the package storage.
|
|
36
|
-
versions[version][Symbol.for('__verdaccio_uplink')] = upLink.upname;
|
|
37
|
-
}
|
|
38
|
-
return {
|
|
39
|
-
...manifest,
|
|
40
|
-
versions: versions
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=uplink-util.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uplink-util.js","names":["_logger","require","_proxy","setupUpLinks","config","uplinks","uplinkName","Object","prototype","hasOwnProperty","call","proxy","ProxyStorage","logger","upname","updateVersionsHiddenUpLinkNext","manifest","upLink","versions","versionsList","keys","length","version","Symbol","for"],"sources":["../../src/lib/uplink-util.ts"],"sourcesContent":["import { logger } from '@verdaccio/logger';\nimport { IProxy, ProxyStorage } from '@verdaccio/proxy';\nimport { Config, Manifest } from '@verdaccio/types';\n\nexport interface ProxyInstanceList {\n [key: string]: IProxy;\n}\n\n/**\n * Set up the Up Storage for each link.\n */\nexport function setupUpLinks(config: Config): ProxyInstanceList {\n const uplinks: ProxyInstanceList = {};\n\n for (const uplinkName in config.uplinks) {\n if (Object.prototype.hasOwnProperty.call(config.uplinks, uplinkName)) {\n // instance for each up-link definition\n const proxy: IProxy = new ProxyStorage(config.uplinks[uplinkName], config, logger);\n // TODO: review this can be inside ProxyStorage\n proxy.upname = uplinkName;\n\n uplinks[uplinkName] = proxy;\n }\n }\n\n return uplinks;\n}\n\nexport function updateVersionsHiddenUpLinkNext(manifest: Manifest, upLink: IProxy): Manifest {\n const { versions } = manifest;\n const versionsList = Object.keys(versions);\n if (versionsList.length === 0) {\n return manifest;\n }\n\n for (const version of versionsList) {\n // holds a \"hidden\" value to be used by the package storage.\n versions[version][Symbol.for('__verdaccio_uplink')] = upLink.upname;\n }\n\n return { ...manifest, versions: versions };\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAOA;AACA;AACA;AACO,SAASE,YAAYA,CAACC,MAAc,EAAqB;EAC9D,MAAMC,OAA0B,GAAG,CAAC,CAAC;EAErC,KAAK,MAAMC,UAAU,IAAIF,MAAM,CAACC,OAAO,EAAE;IACvC,IAAIE,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACN,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,EAAE;MACpE;MACA,MAAMK,KAAa,GAAG,IAAIC,mBAAY,CAACR,MAAM,CAACC,OAAO,CAACC,UAAU,CAAC,EAAEF,MAAM,EAAES,cAAM,CAAC;MAClF;MACAF,KAAK,CAACG,MAAM,GAAGR,UAAU;MAEzBD,OAAO,CAACC,UAAU,CAAC,GAAGK,KAAK;IAC7B;EACF;EAEA,OAAON,OAAO;AAChB;AAEO,SAASU,8BAA8BA,CAACC,QAAkB,EAAEC,MAAc,EAAY;EAC3F,MAAM;IAAEC;EAAS,CAAC,GAAGF,QAAQ;EAC7B,MAAMG,YAAY,GAAGZ,MAAM,CAACa,IAAI,CAACF,QAAQ,CAAC;EAC1C,IAAIC,YAAY,CAACE,MAAM,KAAK,CAAC,EAAE;IAC7B,OAAOL,QAAQ;EACjB;EAEA,KAAK,MAAMM,OAAO,IAAIH,YAAY,EAAE;IAClC;IACAD,QAAQ,CAACI,OAAO,CAAC,CAACC,MAAM,CAACC,GAAG,CAAC,oBAAoB,CAAC,CAAC,GAAGP,MAAM,CAACH,MAAM;EACrE;EAEA,OAAO;IAAE,GAAGE,QAAQ;IAAEE,QAAQ,EAAEA;EAAS,CAAC;AAC5C"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import buildDebug from 'debug';
|
|
2
|
-
import _ from 'lodash';
|
|
3
|
-
import { Transform } from 'stream';
|
|
4
|
-
|
|
5
|
-
import { searchUtils } from '@verdaccio/core';
|
|
6
|
-
|
|
7
|
-
const debug = buildDebug('verdaccio:storage:search:transform');
|
|
8
|
-
|
|
9
|
-
export class TransFormResults extends Transform {
|
|
10
|
-
public constructor(options) {
|
|
11
|
-
super(options);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Transform either array of packages or a single package into a stream of packages.
|
|
16
|
-
* From uplinks the chunks are array but from local packages are objects.
|
|
17
|
-
* @param {string} chunk
|
|
18
|
-
* @param {string} encoding
|
|
19
|
-
* @param {function} done
|
|
20
|
-
* @returns {void}
|
|
21
|
-
* @override
|
|
22
|
-
*/
|
|
23
|
-
public _transform(chunk, _encoding, callback) {
|
|
24
|
-
if (_.isArray(chunk)) {
|
|
25
|
-
// from remotes we should expect chunks as arrays
|
|
26
|
-
(chunk as searchUtils.SearchItem[])
|
|
27
|
-
.filter((pkgItem) => {
|
|
28
|
-
debug(`streaming remote pkg name ${pkgItem?.package?.name}`);
|
|
29
|
-
return true;
|
|
30
|
-
})
|
|
31
|
-
.forEach((pkgItem) => {
|
|
32
|
-
this.push({ ...pkgItem, verdaccioPkgCached: false, verdaccioPrivate: false });
|
|
33
|
-
});
|
|
34
|
-
return callback();
|
|
35
|
-
} else {
|
|
36
|
-
// local we expect objects
|
|
37
|
-
debug(`streaming local pkg name ${chunk?.package?.name}`);
|
|
38
|
-
this.push(chunk);
|
|
39
|
-
return callback();
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
package/src/lib/search-utils.ts
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { orderBy } from 'lodash';
|
|
2
|
-
|
|
3
|
-
import { pkgUtils, searchUtils } from '@verdaccio/core';
|
|
4
|
-
import { Manifest, Version } from '@verdaccio/types';
|
|
5
|
-
|
|
6
|
-
export function removeDuplicates(results: searchUtils.SearchPackageItem[]) {
|
|
7
|
-
const pkgNames: any[] = [];
|
|
8
|
-
const orderByResults = orderBy(results, ['verdaccioPrivate', 'asc']);
|
|
9
|
-
return orderByResults.filter((pkg) => {
|
|
10
|
-
if (pkgNames.includes(pkg?.package?.name)) {
|
|
11
|
-
return false;
|
|
12
|
-
}
|
|
13
|
-
pkgNames.push(pkg?.package?.name);
|
|
14
|
-
return true;
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export function mapManifestToSearchPackageBody(
|
|
19
|
-
pkg: Manifest,
|
|
20
|
-
searchItem: searchUtils.SearchItem
|
|
21
|
-
): searchUtils.SearchPackageBody {
|
|
22
|
-
const latest = pkgUtils.getLatest(pkg);
|
|
23
|
-
const version: Version = pkg.versions[latest];
|
|
24
|
-
const result: searchUtils.SearchPackageBody = {
|
|
25
|
-
name: version.name,
|
|
26
|
-
scope: '',
|
|
27
|
-
description: version.description,
|
|
28
|
-
version: latest,
|
|
29
|
-
keywords: version.keywords,
|
|
30
|
-
date: pkg.time[latest],
|
|
31
|
-
// FIXME: type
|
|
32
|
-
author: version.author as any,
|
|
33
|
-
// FIXME: not possible fill this out from a private package
|
|
34
|
-
publisher: {},
|
|
35
|
-
// FIXME: type
|
|
36
|
-
maintainers: version.maintainers as any,
|
|
37
|
-
links: {
|
|
38
|
-
npm: '',
|
|
39
|
-
homepage: version.homepage,
|
|
40
|
-
repository: version.repository,
|
|
41
|
-
bugs: version.bugs,
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
if (typeof searchItem.package.scoped === 'string') {
|
|
46
|
-
result.scope = searchItem.package.scoped;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return result;
|
|
50
|
-
}
|
package/src/lib/uplink-util.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { logger } from '@verdaccio/logger';
|
|
2
|
-
import { IProxy, ProxyStorage } from '@verdaccio/proxy';
|
|
3
|
-
import { Config, Manifest } from '@verdaccio/types';
|
|
4
|
-
|
|
5
|
-
export interface ProxyInstanceList {
|
|
6
|
-
[key: string]: IProxy;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Set up the Up Storage for each link.
|
|
11
|
-
*/
|
|
12
|
-
export function setupUpLinks(config: Config): ProxyInstanceList {
|
|
13
|
-
const uplinks: ProxyInstanceList = {};
|
|
14
|
-
|
|
15
|
-
for (const uplinkName in config.uplinks) {
|
|
16
|
-
if (Object.prototype.hasOwnProperty.call(config.uplinks, uplinkName)) {
|
|
17
|
-
// instance for each up-link definition
|
|
18
|
-
const proxy: IProxy = new ProxyStorage(config.uplinks[uplinkName], config, logger);
|
|
19
|
-
// TODO: review this can be inside ProxyStorage
|
|
20
|
-
proxy.upname = uplinkName;
|
|
21
|
-
|
|
22
|
-
uplinks[uplinkName] = proxy;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
return uplinks;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export function updateVersionsHiddenUpLinkNext(manifest: Manifest, upLink: IProxy): Manifest {
|
|
30
|
-
const { versions } = manifest;
|
|
31
|
-
const versionsList = Object.keys(versions);
|
|
32
|
-
if (versionsList.length === 0) {
|
|
33
|
-
return manifest;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
for (const version of versionsList) {
|
|
37
|
-
// holds a "hidden" value to be used by the package storage.
|
|
38
|
-
versions[version][Symbol.for('__verdaccio_uplink')] = upLink.upname;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return { ...manifest, versions: versions };
|
|
42
|
-
}
|
/package/test/fixtures/config/{getTarballNext-getupstream.yaml → getTarball-getupstream.yaml}
RENAMED
|
File without changes
|