@verdaccio/canary 6.3.2-canary.404363f
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/LICENSE +21 -0
- package/README.md +38 -0
- package/bin/verdaccio +3 -0
- package/bin/verdaccio-canary +3 -0
- package/build/api/debug/index.js +28 -0
- package/build/api/endpoint/api/dist-tags.js +77 -0
- package/build/api/endpoint/api/package.js +103 -0
- package/build/api/endpoint/api/ping.js +13 -0
- package/build/api/endpoint/api/publish.js +359 -0
- package/build/api/endpoint/api/search.js +107 -0
- package/build/api/endpoint/api/star.js +73 -0
- package/build/api/endpoint/api/stars.js +42 -0
- package/build/api/endpoint/api/user.js +84 -0
- package/build/api/endpoint/api/v1/profile.js +69 -0
- package/build/api/endpoint/api/v1/search.js +181 -0
- package/build/api/endpoint/api/v1/token.js +140 -0
- package/build/api/endpoint/api/whoami.js +15 -0
- package/build/api/endpoint/index.js +58 -0
- package/build/api/index.js +105 -0
- package/build/api/middleware.js +56 -0
- package/build/api/web/api/index.js +31 -0
- package/build/api/web/api/package.js +165 -0
- package/build/api/web/api/search.js +53 -0
- package/build/api/web/api/user.js +70 -0
- package/build/api/web/api/utils.js +14 -0
- package/build/api/web/html/favicon.ico +0 -0
- package/build/api/web/index.js +96 -0
- package/build/index.js +76 -0
- package/build/lib/auth-utils.js +16 -0
- package/build/lib/bootstrap.js +167 -0
- package/build/lib/cli/cli.js +26 -0
- package/build/lib/cli/commands/info.js +26 -0
- package/build/lib/cli/commands/init.js +78 -0
- package/build/lib/cli/commands/version.js +17 -0
- package/build/lib/cli/utils.js +14 -0
- package/build/lib/cli.js +16 -0
- package/build/lib/config.js +22 -0
- package/build/lib/constants.js +121 -0
- package/build/lib/experiments.js +29 -0
- package/build/lib/local-storage.js +760 -0
- package/build/lib/logger/index.js +21 -0
- package/build/lib/metadata-utils.js +39 -0
- package/build/lib/run-server.js +122 -0
- package/build/lib/storage-utils.js +282 -0
- package/build/lib/storage.js +676 -0
- package/build/lib/up-storage.js +605 -0
- package/build/lib/uplink-util.js +36 -0
- package/build/lib/utils.js +265 -0
- package/conf/.gitkeep +0 -0
- package/index.js +1 -0
- package/package.json +156 -0
- package/security.txt +5 -0
- package/systemd/verdaccio.service +11 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.setupUpLinks = setupUpLinks;
|
|
7
|
+
exports.updateVersionsHiddenUpLink = updateVersionsHiddenUpLink;
|
|
8
|
+
var _upStorage = _interopRequireDefault(require("./up-storage"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
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 _upStorage.default(config.uplinks[uplinkName], config);
|
|
19
|
+
proxy.upname = uplinkName;
|
|
20
|
+
uplinks[uplinkName] = proxy;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return uplinks;
|
|
24
|
+
}
|
|
25
|
+
function updateVersionsHiddenUpLink(versions, upLink) {
|
|
26
|
+
for (const i in versions) {
|
|
27
|
+
if (Object.prototype.hasOwnProperty.call(versions, i)) {
|
|
28
|
+
const version = versions[i];
|
|
29
|
+
|
|
30
|
+
// holds a "hidden" value to be used by the package storage.
|
|
31
|
+
|
|
32
|
+
version[Symbol.for('__verdaccio_uplink')] = upLink.upname;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXBTdG9yYWdlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJzZXR1cFVwTGlua3MiLCJjb25maWciLCJ1cGxpbmtzIiwidXBsaW5rTmFtZSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInByb3h5IiwiUHJveHlTdG9yYWdlIiwidXBuYW1lIiwidXBkYXRlVmVyc2lvbnNIaWRkZW5VcExpbmsiLCJ2ZXJzaW9ucyIsInVwTGluayIsImkiLCJ2ZXJzaW9uIiwiU3ltYm9sIiwiZm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi91cGxpbmstdXRpbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWcsIFZlcnNpb25zIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCBQcm94eVN0b3JhZ2UgZnJvbSAnLi91cC1zdG9yYWdlJztcblxuLyoqXG4gKiBTZXQgdXAgdGhlIFVwIFN0b3JhZ2UgZm9yIGVhY2ggbGluay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldHVwVXBMaW5rcyhjb25maWc6IENvbmZpZyk6IFJlY29yZDxzdHJpbmcsIFByb3h5U3RvcmFnZT4ge1xuICBjb25zdCB1cGxpbmtzID0ge307XG5cbiAgZm9yIChjb25zdCB1cGxpbmtOYW1lIGluIGNvbmZpZy51cGxpbmtzKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcudXBsaW5rcywgdXBsaW5rTmFtZSkpIHtcbiAgICAgIC8vIGluc3RhbmNlIGZvciBlYWNoIHVwLWxpbmsgZGVmaW5pdGlvblxuICAgICAgY29uc3QgcHJveHkgPSBuZXcgUHJveHlTdG9yYWdlKGNvbmZpZy51cGxpbmtzW3VwbGlua05hbWVdLCBjb25maWcpO1xuICAgICAgcHJveHkudXBuYW1lID0gdXBsaW5rTmFtZTtcblxuICAgICAgdXBsaW5rc1t1cGxpbmtOYW1lXSA9IHByb3h5O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1cGxpbmtzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlVmVyc2lvbnNIaWRkZW5VcExpbmsodmVyc2lvbnM6IFZlcnNpb25zLCB1cExpbmspOiB2b2lkIHtcbiAgZm9yIChjb25zdCBpIGluIHZlcnNpb25zKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2ZXJzaW9ucywgaSkpIHtcbiAgICAgIGNvbnN0IHZlcnNpb24gPSB2ZXJzaW9uc1tpXTtcblxuICAgICAgLy8gaG9sZHMgYSBcImhpZGRlblwiIHZhbHVlIHRvIGJlIHVzZWQgYnkgdGhlIHBhY2thZ2Ugc3RvcmFnZS5cblxuICAgICAgdmVyc2lvbltTeW1ib2wuZm9yKCdfX3ZlcmRhY2Npb191cGxpbmsnKV0gPSB1cExpbmsudXBuYW1lO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUEsSUFBQUEsVUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQXdDLFNBQUFELHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRXhDO0FBQ0E7QUFDQTtBQUNPLFNBQVNHLFlBQVlBLENBQUNDLE1BQWMsRUFBZ0M7RUFDekUsTUFBTUMsT0FBTyxHQUFHLENBQUMsQ0FBQztFQUVsQixLQUFLLE1BQU1DLFVBQVUsSUFBSUYsTUFBTSxDQUFDQyxPQUFPLEVBQUU7SUFDdkMsSUFBSUUsTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDTixNQUFNLENBQUNDLE9BQU8sRUFBRUMsVUFBVSxDQUFDLEVBQUU7TUFDcEU7TUFDQSxNQUFNSyxLQUFLLEdBQUcsSUFBSUMsa0JBQVksQ0FBQ1IsTUFBTSxDQUFDQyxPQUFPLENBQUNDLFVBQVUsQ0FBQyxFQUFFRixNQUFNLENBQUM7TUFDbEVPLEtBQUssQ0FBQ0UsTUFBTSxHQUFHUCxVQUFVO01BRXpCRCxPQUFPLENBQUNDLFVBQVUsQ0FBQyxHQUFHSyxLQUFLO0lBQzdCO0VBQ0Y7RUFFQSxPQUFPTixPQUFPO0FBQ2hCO0FBRU8sU0FBU1MsMEJBQTBCQSxDQUFDQyxRQUFrQixFQUFFQyxNQUFNLEVBQVE7RUFDM0UsS0FBSyxNQUFNQyxDQUFDLElBQUlGLFFBQVEsRUFBRTtJQUN4QixJQUFJUixNQUFNLENBQUNDLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNLLFFBQVEsRUFBRUUsQ0FBQyxDQUFDLEVBQUU7TUFDckQsTUFBTUMsT0FBTyxHQUFHSCxRQUFRLENBQUNFLENBQUMsQ0FBQzs7TUFFM0I7O01BRUFDLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHSixNQUFNLENBQUNILE1BQU07SUFDM0Q7RUFDRjtBQUNGIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ErrorCode = void 0;
|
|
7
|
+
exports.addScope = addScope;
|
|
8
|
+
Object.defineProperty(exports, "buildToken", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function () {
|
|
11
|
+
return _utils.buildToken;
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
exports.deleteProperties = deleteProperties;
|
|
15
|
+
exports.encodeScopedUri = encodeScopedUri;
|
|
16
|
+
exports.getVersion = getVersion;
|
|
17
|
+
exports.hasDiffOneKey = hasDiffOneKey;
|
|
18
|
+
exports.hasLogin = hasLogin;
|
|
19
|
+
exports.initLogger = initLogger;
|
|
20
|
+
exports.isObject = void 0;
|
|
21
|
+
exports.isObjectOrArray = isObjectOrArray;
|
|
22
|
+
exports.isRelatedToDeprecation = isRelatedToDeprecation;
|
|
23
|
+
exports.isVersionValid = isVersionValid;
|
|
24
|
+
exports.logHTTPSWarning = logHTTPSWarning;
|
|
25
|
+
exports.normalizeDistTags = normalizeDistTags;
|
|
26
|
+
Object.defineProperty(exports, "parseConfigFile", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: function () {
|
|
29
|
+
return _config.parseConfigFile;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
exports.parseInterval = parseInterval;
|
|
33
|
+
exports.parseReadme = parseReadme;
|
|
34
|
+
exports.resolveConfigPath = void 0;
|
|
35
|
+
exports.sortByName = sortByName;
|
|
36
|
+
exports.tagVersion = tagVersion;
|
|
37
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
38
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
39
|
+
var _nodePath = _interopRequireDefault(require("node:path"));
|
|
40
|
+
var _semver = _interopRequireDefault(require("semver"));
|
|
41
|
+
var _config = require("@verdaccio/config");
|
|
42
|
+
var _core = require("@verdaccio/core");
|
|
43
|
+
var _utils = require("@verdaccio/utils");
|
|
44
|
+
var _constants = require("./constants");
|
|
45
|
+
var _logger = require("./logger");
|
|
46
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
47
|
+
const debug = (0, _debug.default)('verdaccio:lib:utils');
|
|
48
|
+
const {
|
|
49
|
+
getBadData,
|
|
50
|
+
getBadRequest,
|
|
51
|
+
getCode,
|
|
52
|
+
getConflict,
|
|
53
|
+
getForbidden,
|
|
54
|
+
getInternalError,
|
|
55
|
+
getNotFound,
|
|
56
|
+
getServiceUnavailable,
|
|
57
|
+
getUnauthorized
|
|
58
|
+
} = _core.errorUtils;
|
|
59
|
+
function initLogger(logConfig) {
|
|
60
|
+
if (logConfig.logs) {
|
|
61
|
+
logConfig.log = logConfig.logs;
|
|
62
|
+
_core.warningUtils.emit(_core.warningUtils.Codes.VERWAR002);
|
|
63
|
+
}
|
|
64
|
+
debug('initializing logger with config: %o', logConfig.log);
|
|
65
|
+
(0, _logger.setup)(logConfig.log);
|
|
66
|
+
}
|
|
67
|
+
function addScope(scope, packageName) {
|
|
68
|
+
return `@${scope}/${packageName}`;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Check whether an element is an Object
|
|
73
|
+
* @param {*} obj the element
|
|
74
|
+
* @return {Boolean}
|
|
75
|
+
*/
|
|
76
|
+
const isObject = exports.isObject = _core.validationUtils.isObject;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @deprecated not used un v6
|
|
80
|
+
*/
|
|
81
|
+
function isObjectOrArray(obj) {
|
|
82
|
+
return _lodash.default.isObject(obj) && _lodash.default.isNull(obj) === false;
|
|
83
|
+
}
|
|
84
|
+
function tagVersion(data, version, tag) {
|
|
85
|
+
if (tag && data[_constants.DIST_TAGS][tag] !== version && _semver.default.parse(version, true)) {
|
|
86
|
+
// valid version - store
|
|
87
|
+
data[_constants.DIST_TAGS][tag] = version;
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Gets version from a package object taking into account semver weirdness.
|
|
95
|
+
* @return {String} return the semantic version of a package
|
|
96
|
+
*/
|
|
97
|
+
function getVersion(pkg, version) {
|
|
98
|
+
// this condition must allow cast
|
|
99
|
+
if (_lodash.default.isNil(pkg.versions[version]) === false) {
|
|
100
|
+
return pkg.versions[version];
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
version = _semver.default.parse(version, true);
|
|
104
|
+
for (const versionItem in pkg.versions) {
|
|
105
|
+
if (version.compare(_semver.default.parse(versionItem, true)) === 0) {
|
|
106
|
+
return pkg.versions[versionItem];
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
} catch {
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Flatten arrays of tags.
|
|
116
|
+
* @param {*} data
|
|
117
|
+
*/
|
|
118
|
+
function normalizeDistTags(pkg) {
|
|
119
|
+
let sorted;
|
|
120
|
+
if (!pkg[_constants.DIST_TAGS].latest) {
|
|
121
|
+
// overwrite latest with highest known version based on semver sort
|
|
122
|
+
sorted = _core.pkgUtils.semverSort(Object.keys(pkg.versions));
|
|
123
|
+
if (sorted && sorted.length) {
|
|
124
|
+
pkg[_constants.DIST_TAGS].latest = sorted.pop();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
for (const tag in pkg[_constants.DIST_TAGS]) {
|
|
128
|
+
if (_lodash.default.isArray(pkg[_constants.DIST_TAGS][tag])) {
|
|
129
|
+
if (pkg[_constants.DIST_TAGS][tag].length) {
|
|
130
|
+
// sort array
|
|
131
|
+
// FIXME: this is clearly wrong, we need to research why this is like this.
|
|
132
|
+
sorted = _core.pkgUtils.semverSort(pkg[_constants.DIST_TAGS][tag]);
|
|
133
|
+
if (sorted.length) {
|
|
134
|
+
// use highest version based on semver sort
|
|
135
|
+
pkg[_constants.DIST_TAGS][tag] = sorted.pop();
|
|
136
|
+
}
|
|
137
|
+
} else {
|
|
138
|
+
delete pkg[_constants.DIST_TAGS][tag];
|
|
139
|
+
}
|
|
140
|
+
} else if (_lodash.default.isString(pkg[_constants.DIST_TAGS][tag])) {
|
|
141
|
+
if (!_semver.default.parse(pkg[_constants.DIST_TAGS][tag], true)) {
|
|
142
|
+
// if the version is invalid, delete the dist-tag entry
|
|
143
|
+
delete pkg[_constants.DIST_TAGS][tag];
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const parseIntervalTable = {
|
|
149
|
+
'': 1000,
|
|
150
|
+
ms: 1,
|
|
151
|
+
s: 1000,
|
|
152
|
+
m: 60 * 1000,
|
|
153
|
+
h: 60 * 60 * 1000,
|
|
154
|
+
d: 86400000,
|
|
155
|
+
w: 7 * 86400000,
|
|
156
|
+
M: 30 * 86400000,
|
|
157
|
+
y: 365 * 86400000
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Parse an internal string to number
|
|
162
|
+
* @param {*} interval
|
|
163
|
+
* @return {Number}
|
|
164
|
+
*/
|
|
165
|
+
function parseInterval(interval) {
|
|
166
|
+
if (typeof interval === 'number') {
|
|
167
|
+
return interval * 1000;
|
|
168
|
+
}
|
|
169
|
+
let result = 0;
|
|
170
|
+
let last_suffix = Infinity;
|
|
171
|
+
interval.split(/\s+/).forEach(function (x) {
|
|
172
|
+
if (!x) {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
const m = x.match(/^((0|[1-9][0-9]*)(\.[0-9]+)?)(ms|s|m|h|d|w|M|y|)$/);
|
|
176
|
+
if (!m || parseIntervalTable[m[4]] >= last_suffix || m[4] === '' && last_suffix !== Infinity) {
|
|
177
|
+
throw Error('invalid interval: ' + interval);
|
|
178
|
+
}
|
|
179
|
+
last_suffix = parseIntervalTable[m[4]];
|
|
180
|
+
result += Number(m[1]) * parseIntervalTable[m[4]];
|
|
181
|
+
});
|
|
182
|
+
return result;
|
|
183
|
+
}
|
|
184
|
+
const ErrorCode = exports.ErrorCode = {
|
|
185
|
+
getConflict,
|
|
186
|
+
getBadData,
|
|
187
|
+
getBadRequest,
|
|
188
|
+
getInternalError,
|
|
189
|
+
getUnauthorized,
|
|
190
|
+
getForbidden,
|
|
191
|
+
getServiceUnavailable,
|
|
192
|
+
getNotFound,
|
|
193
|
+
getCode
|
|
194
|
+
};
|
|
195
|
+
function sortByName(packages, orderAscending = true) {
|
|
196
|
+
return packages.slice().sort(function (a, b) {
|
|
197
|
+
const comparatorNames = a.name.toLowerCase() < b.name.toLowerCase();
|
|
198
|
+
return orderAscending ? comparatorNames ? -1 : 1 : comparatorNames ? 1 : -1;
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
function deleteProperties(propertiesToDelete, objectItem) {
|
|
202
|
+
_lodash.default.forEach(propertiesToDelete, property => {
|
|
203
|
+
delete objectItem[property];
|
|
204
|
+
});
|
|
205
|
+
return objectItem;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* parse package readme - markdown/ascii
|
|
210
|
+
* @param {String} packageName name of package
|
|
211
|
+
* @param {String} readme package readme
|
|
212
|
+
|
|
213
|
+
* @return {String} converted html template
|
|
214
|
+
*/
|
|
215
|
+
// TODO: rename, does not parse anymore
|
|
216
|
+
function parseReadme(packageName, readme) {
|
|
217
|
+
if (_lodash.default.isEmpty(readme) === false) {
|
|
218
|
+
return readme;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// logs readme not found error
|
|
222
|
+
_logger.logger.info({
|
|
223
|
+
packageName
|
|
224
|
+
}, '@{packageName}: No readme found');
|
|
225
|
+
return 'ERROR: No README data found!';
|
|
226
|
+
}
|
|
227
|
+
function encodeScopedUri(packageName) {
|
|
228
|
+
return packageName.replace(/\//g, '%2f');
|
|
229
|
+
}
|
|
230
|
+
function hasDiffOneKey(versions) {
|
|
231
|
+
return Object.keys(versions).length !== 1;
|
|
232
|
+
}
|
|
233
|
+
function isVersionValid(packageMeta, packageVersion) {
|
|
234
|
+
const hasVersion = typeof packageVersion !== 'undefined';
|
|
235
|
+
if (!hasVersion) {
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
const hasMatchVersion = Object.keys(packageMeta.versions).includes(packageVersion);
|
|
239
|
+
return hasMatchVersion;
|
|
240
|
+
}
|
|
241
|
+
function isRelatedToDeprecation(pkgInfo) {
|
|
242
|
+
const {
|
|
243
|
+
versions
|
|
244
|
+
} = pkgInfo;
|
|
245
|
+
for (const version in versions) {
|
|
246
|
+
if (Object.prototype.hasOwnProperty.call(versions[version], 'deprecated')) {
|
|
247
|
+
return true;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return false;
|
|
251
|
+
}
|
|
252
|
+
const resolveConfigPath = function (storageLocation, file) {
|
|
253
|
+
return _nodePath.default.resolve(_nodePath.default.dirname(storageLocation), file);
|
|
254
|
+
};
|
|
255
|
+
exports.resolveConfigPath = resolveConfigPath;
|
|
256
|
+
function logHTTPSWarning(storageLocation) {
|
|
257
|
+
_logger.logger.fatal(['You have enabled HTTPS and need to specify either ', ' "https.key" and "https.cert" or ', ' "https.pfx" and optionally "https.passphrase" ', 'to run https server', '',
|
|
258
|
+
// commands are borrowed from node.js docs
|
|
259
|
+
'To quickly create self-signed certificate, use:', ' $ openssl genrsa -out ' + resolveConfigPath(storageLocation, _constants.keyPem) + ' 2048', ' $ openssl req -new -sha256 -key ' + resolveConfigPath(storageLocation, _constants.keyPem) + ' -out ' + resolveConfigPath(storageLocation, _constants.csrPem), ' $ openssl x509 -req -in ' + resolveConfigPath(storageLocation, _constants.csrPem) + ' -signkey ' + resolveConfigPath(storageLocation, _constants.keyPem) + ' -out ' + resolveConfigPath(storageLocation, _constants.certPem), '', 'And then add to config file (' + storageLocation + '):', ' https:', ` key: ${resolveConfigPath(storageLocation, _constants.keyPem)}`, ` cert: ${resolveConfigPath(storageLocation, _constants.certPem)}`].join('\n'));
|
|
260
|
+
process.exit(2);
|
|
261
|
+
}
|
|
262
|
+
function hasLogin(config) {
|
|
263
|
+
return _lodash.default.isNil(config?.web?.login) || config?.web?.login === true;
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfbm9kZVBhdGgiLCJfc2VtdmVyIiwiX2NvbmZpZyIsIl9jb3JlIiwiX3V0aWxzIiwiX2NvbnN0YW50cyIsIl9sb2dnZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJkZWJ1ZyIsImNyZWF0ZURlYnVnIiwiZ2V0QmFkRGF0YSIsImdldEJhZFJlcXVlc3QiLCJnZXRDb2RlIiwiZ2V0Q29uZmxpY3QiLCJnZXRGb3JiaWRkZW4iLCJnZXRJbnRlcm5hbEVycm9yIiwiZ2V0Tm90Rm91bmQiLCJnZXRTZXJ2aWNlVW5hdmFpbGFibGUiLCJnZXRVbmF1dGhvcml6ZWQiLCJlcnJvclV0aWxzIiwiaW5pdExvZ2dlciIsImxvZ0NvbmZpZyIsImxvZ3MiLCJsb2ciLCJ3YXJuaW5nVXRpbHMiLCJlbWl0IiwiQ29kZXMiLCJWRVJXQVIwMDIiLCJzZXR1cCIsImFkZFNjb3BlIiwic2NvcGUiLCJwYWNrYWdlTmFtZSIsImlzT2JqZWN0IiwiZXhwb3J0cyIsInZhbGlkYXRpb25VdGlscyIsImlzT2JqZWN0T3JBcnJheSIsIm9iaiIsIl8iLCJpc051bGwiLCJ0YWdWZXJzaW9uIiwiZGF0YSIsInZlcnNpb24iLCJ0YWciLCJESVNUX1RBR1MiLCJzZW12ZXIiLCJwYXJzZSIsImdldFZlcnNpb24iLCJwa2ciLCJpc05pbCIsInZlcnNpb25zIiwidmVyc2lvbkl0ZW0iLCJjb21wYXJlIiwidW5kZWZpbmVkIiwibm9ybWFsaXplRGlzdFRhZ3MiLCJzb3J0ZWQiLCJsYXRlc3QiLCJwa2dVdGlscyIsInNlbXZlclNvcnQiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwicG9wIiwiaXNBcnJheSIsImlzU3RyaW5nIiwicGFyc2VJbnRlcnZhbFRhYmxlIiwibXMiLCJzIiwibSIsImgiLCJkIiwidyIsIk0iLCJ5IiwicGFyc2VJbnRlcnZhbCIsImludGVydmFsIiwicmVzdWx0IiwibGFzdF9zdWZmaXgiLCJJbmZpbml0eSIsInNwbGl0IiwiZm9yRWFjaCIsIngiLCJtYXRjaCIsIkVycm9yIiwiTnVtYmVyIiwiRXJyb3JDb2RlIiwic29ydEJ5TmFtZSIsInBhY2thZ2VzIiwib3JkZXJBc2NlbmRpbmciLCJzbGljZSIsInNvcnQiLCJhIiwiYiIsImNvbXBhcmF0b3JOYW1lcyIsIm5hbWUiLCJ0b0xvd2VyQ2FzZSIsImRlbGV0ZVByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzVG9EZWxldGUiLCJvYmplY3RJdGVtIiwicHJvcGVydHkiLCJwYXJzZVJlYWRtZSIsInJlYWRtZSIsImlzRW1wdHkiLCJsb2dnZXIiLCJpbmZvIiwiZW5jb2RlU2NvcGVkVXJpIiwicmVwbGFjZSIsImhhc0RpZmZPbmVLZXkiLCJpc1ZlcnNpb25WYWxpZCIsInBhY2thZ2VNZXRhIiwicGFja2FnZVZlcnNpb24iLCJoYXNWZXJzaW9uIiwiaGFzTWF0Y2hWZXJzaW9uIiwiaW5jbHVkZXMiLCJpc1JlbGF0ZWRUb0RlcHJlY2F0aW9uIiwicGtnSW5mbyIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInJlc29sdmVDb25maWdQYXRoIiwic3RvcmFnZUxvY2F0aW9uIiwiZmlsZSIsInBhdGgiLCJyZXNvbHZlIiwiZGlybmFtZSIsImxvZ0hUVFBTV2FybmluZyIsImZhdGFsIiwia2V5UGVtIiwiY3NyUGVtIiwiY2VydFBlbSIsImpvaW4iLCJwcm9jZXNzIiwiZXhpdCIsImhhc0xvZ2luIiwiY29uZmlnIiwid2ViIiwibG9naW4iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdGVEZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcblxuaW1wb3J0IHsgcGFyc2VDb25maWdGaWxlIH0gZnJvbSAnQHZlcmRhY2Npby9jb25maWcnO1xuaW1wb3J0IHsgZXJyb3JVdGlscywgcGtnVXRpbHMsIHZhbGlkYXRpb25VdGlscywgd2FybmluZ1V0aWxzIH0gZnJvbSAnQHZlcmRhY2Npby9jb3JlJztcbmltcG9ydCB7IENvbmZpZ1lhbWwsIExvZ2dlckNvbmZpZ0l0ZW0sIFN0cmluZ1ZhbHVlIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQgeyBDb25maWcsIE1hbmlmZXN0LCBWZXJzaW9uIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQgeyBidWlsZFRva2VuIGFzIGJ1aWxkVG9rZW5VdGlsIH0gZnJvbSAnQHZlcmRhY2Npby91dGlscyc7XG5cbmltcG9ydCB7IERJU1RfVEFHUywgY2VydFBlbSwgY3NyUGVtLCBrZXlQZW0gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBsb2dnZXIsIHNldHVwIH0gZnJvbSAnLi9sb2dnZXInO1xuXG5jb25zdCBkZWJ1ZyA9IGNyZWF0ZURlYnVnKCd2ZXJkYWNjaW86bGliOnV0aWxzJyk7XG5cbmNvbnN0IHtcbiAgZ2V0QmFkRGF0YSxcbiAgZ2V0QmFkUmVxdWVzdCxcbiAgZ2V0Q29kZSxcbiAgZ2V0Q29uZmxpY3QsXG4gIGdldEZvcmJpZGRlbixcbiAgZ2V0SW50ZXJuYWxFcnJvcixcbiAgZ2V0Tm90Rm91bmQsXG4gIGdldFNlcnZpY2VVbmF2YWlsYWJsZSxcbiAgZ2V0VW5hdXRob3JpemVkLFxufSA9IGVycm9yVXRpbHM7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0TG9nZ2VyKGxvZ0NvbmZpZzogQ29uZmlnWWFtbCkge1xuICBpZiAobG9nQ29uZmlnLmxvZ3MpIHtcbiAgICBsb2dDb25maWcubG9nID0gbG9nQ29uZmlnLmxvZ3M7XG4gICAgd2FybmluZ1V0aWxzLmVtaXQod2FybmluZ1V0aWxzLkNvZGVzLlZFUldBUjAwMik7XG4gIH1cbiAgZGVidWcoJ2luaXRpYWxpemluZyBsb2dnZXIgd2l0aCBjb25maWc6ICVvJywgbG9nQ29uZmlnLmxvZyk7XG4gIHNldHVwKGxvZ0NvbmZpZy5sb2cgYXMgTG9nZ2VyQ29uZmlnSXRlbSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRTY29wZShzY29wZTogc3RyaW5nLCBwYWNrYWdlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBAJHtzY29wZX0vJHtwYWNrYWdlTmFtZX1gO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYW4gZWxlbWVudCBpcyBhbiBPYmplY3RcbiAqIEBwYXJhbSB7Kn0gb2JqIHRoZSBlbGVtZW50XG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICovXG5leHBvcnQgY29uc3QgaXNPYmplY3QgPSB2YWxpZGF0aW9uVXRpbHMuaXNPYmplY3Q7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgbm90IHVzZWQgdW4gdjZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0T3JBcnJheShvYmo6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gXy5pc09iamVjdChvYmopICYmIF8uaXNOdWxsKG9iaikgPT09IGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFnVmVyc2lvbihkYXRhOiBNYW5pZmVzdCwgdmVyc2lvbjogc3RyaW5nLCB0YWc6IFN0cmluZ1ZhbHVlKTogYm9vbGVhbiB7XG4gIGlmICh0YWcgJiYgZGF0YVtESVNUX1RBR1NdW3RhZ10gIT09IHZlcnNpb24gJiYgc2VtdmVyLnBhcnNlKHZlcnNpb24sIHRydWUpKSB7XG4gICAgLy8gdmFsaWQgdmVyc2lvbiAtIHN0b3JlXG4gICAgZGF0YVtESVNUX1RBR1NdW3RhZ10gPSB2ZXJzaW9uO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBHZXRzIHZlcnNpb24gZnJvbSBhIHBhY2thZ2Ugb2JqZWN0IHRha2luZyBpbnRvIGFjY291bnQgc2VtdmVyIHdlaXJkbmVzcy5cbiAqIEByZXR1cm4ge1N0cmluZ30gcmV0dXJuIHRoZSBzZW1hbnRpYyB2ZXJzaW9uIG9mIGEgcGFja2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVyc2lvbihwa2c6IE1hbmlmZXN0LCB2ZXJzaW9uOiBhbnkpOiBWZXJzaW9uIHwgdm9pZCB7XG4gIC8vIHRoaXMgY29uZGl0aW9uIG11c3QgYWxsb3cgY2FzdFxuICBpZiAoXy5pc05pbChwa2cudmVyc2lvbnNbdmVyc2lvbl0pID09PSBmYWxzZSkge1xuICAgIHJldHVybiBwa2cudmVyc2lvbnNbdmVyc2lvbl07XG4gIH1cblxuICB0cnkge1xuICAgIHZlcnNpb24gPSBzZW12ZXIucGFyc2UodmVyc2lvbiwgdHJ1ZSk7XG4gICAgZm9yIChjb25zdCB2ZXJzaW9uSXRlbSBpbiBwa2cudmVyc2lvbnMpIHtcbiAgICAgIGlmICh2ZXJzaW9uLmNvbXBhcmUoc2VtdmVyLnBhcnNlKHZlcnNpb25JdGVtLCB0cnVlKSkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHBrZy52ZXJzaW9uc1t2ZXJzaW9uSXRlbV07XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogRmxhdHRlbiBhcnJheXMgb2YgdGFncy5cbiAqIEBwYXJhbSB7Kn0gZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplRGlzdFRhZ3MocGtnOiBNYW5pZmVzdCk6IHZvaWQge1xuICBsZXQgc29ydGVkO1xuICBpZiAoIXBrZ1tESVNUX1RBR1NdLmxhdGVzdCkge1xuICAgIC8vIG92ZXJ3cml0ZSBsYXRlc3Qgd2l0aCBoaWdoZXN0IGtub3duIHZlcnNpb24gYmFzZWQgb24gc2VtdmVyIHNvcnRcbiAgICBzb3J0ZWQgPSBwa2dVdGlscy5zZW12ZXJTb3J0KE9iamVjdC5rZXlzKHBrZy52ZXJzaW9ucykpO1xuICAgIGlmIChzb3J0ZWQgJiYgc29ydGVkLmxlbmd0aCkge1xuICAgICAgcGtnW0RJU1RfVEFHU10ubGF0ZXN0ID0gc29ydGVkLnBvcCgpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgdGFnIGluIHBrZ1tESVNUX1RBR1NdKSB7XG4gICAgaWYgKF8uaXNBcnJheShwa2dbRElTVF9UQUdTXVt0YWddKSkge1xuICAgICAgaWYgKHBrZ1tESVNUX1RBR1NdW3RhZ10ubGVuZ3RoKSB7XG4gICAgICAgIC8vIHNvcnQgYXJyYXlcbiAgICAgICAgLy8gRklYTUU6IHRoaXMgaXMgY2xlYXJseSB3cm9uZywgd2UgbmVlZCB0byByZXNlYXJjaCB3aHkgdGhpcyBpcyBsaWtlIHRoaXMuXG4gICAgICAgIHNvcnRlZCA9IHBrZ1V0aWxzLnNlbXZlclNvcnQocGtnW0RJU1RfVEFHU11bdGFnXSk7XG4gICAgICAgIGlmIChzb3J0ZWQubGVuZ3RoKSB7XG4gICAgICAgICAgLy8gdXNlIGhpZ2hlc3QgdmVyc2lvbiBiYXNlZCBvbiBzZW12ZXIgc29ydFxuICAgICAgICAgIHBrZ1tESVNUX1RBR1NdW3RhZ10gPSBzb3J0ZWQucG9wKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlbGV0ZSBwa2dbRElTVF9UQUdTXVt0YWddO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXy5pc1N0cmluZyhwa2dbRElTVF9UQUdTXVt0YWddKSkge1xuICAgICAgaWYgKCFzZW12ZXIucGFyc2UocGtnW0RJU1RfVEFHU11bdGFnXSwgdHJ1ZSkpIHtcbiAgICAgICAgLy8gaWYgdGhlIHZlcnNpb24gaXMgaW52YWxpZCwgZGVsZXRlIHRoZSBkaXN0LXRhZyBlbnRyeVxuICAgICAgICBkZWxldGUgcGtnW0RJU1RfVEFHU11bdGFnXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuY29uc3QgcGFyc2VJbnRlcnZhbFRhYmxlID0ge1xuICAnJzogMTAwMCxcbiAgbXM6IDEsXG4gIHM6IDEwMDAsXG4gIG06IDYwICogMTAwMCxcbiAgaDogNjAgKiA2MCAqIDEwMDAsXG4gIGQ6IDg2NDAwMDAwLFxuICB3OiA3ICogODY0MDAwMDAsXG4gIE06IDMwICogODY0MDAwMDAsXG4gIHk6IDM2NSAqIDg2NDAwMDAwLFxufTtcblxuLyoqXG4gKiBQYXJzZSBhbiBpbnRlcm5hbCBzdHJpbmcgdG8gbnVtYmVyXG4gKiBAcGFyYW0geyp9IGludGVydmFsXG4gKiBAcmV0dXJuIHtOdW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUludGVydmFsKGludGVydmFsOiBhbnkpOiBudW1iZXIge1xuICBpZiAodHlwZW9mIGludGVydmFsID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBpbnRlcnZhbCAqIDEwMDA7XG4gIH1cbiAgbGV0IHJlc3VsdCA9IDA7XG4gIGxldCBsYXN0X3N1ZmZpeCA9IEluZmluaXR5O1xuICBpbnRlcnZhbC5zcGxpdCgvXFxzKy8pLmZvckVhY2goZnVuY3Rpb24gKHgpOiB2b2lkIHtcbiAgICBpZiAoIXgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbSA9IHgubWF0Y2goL14oKDB8WzEtOV1bMC05XSopKFxcLlswLTldKyk/KShtc3xzfG18aHxkfHd8TXx5fCkkLyk7XG4gICAgaWYgKFxuICAgICAgIW0gfHxcbiAgICAgIHBhcnNlSW50ZXJ2YWxUYWJsZVttWzRdXSA+PSBsYXN0X3N1ZmZpeCB8fFxuICAgICAgKG1bNF0gPT09ICcnICYmIGxhc3Rfc3VmZml4ICE9PSBJbmZpbml0eSlcbiAgICApIHtcbiAgICAgIHRocm93IEVycm9yKCdpbnZhbGlkIGludGVydmFsOiAnICsgaW50ZXJ2YWwpO1xuICAgIH1cbiAgICBsYXN0X3N1ZmZpeCA9IHBhcnNlSW50ZXJ2YWxUYWJsZVttWzRdXTtcbiAgICByZXN1bHQgKz0gTnVtYmVyKG1bMV0pICogcGFyc2VJbnRlcnZhbFRhYmxlW21bNF1dO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGNvbnN0IEVycm9yQ29kZSA9IHtcbiAgZ2V0Q29uZmxpY3QsXG4gIGdldEJhZERhdGEsXG4gIGdldEJhZFJlcXVlc3QsXG4gIGdldEludGVybmFsRXJyb3IsXG4gIGdldFVuYXV0aG9yaXplZCxcbiAgZ2V0Rm9yYmlkZGVuLFxuICBnZXRTZXJ2aWNlVW5hdmFpbGFibGUsXG4gIGdldE5vdEZvdW5kLFxuICBnZXRDb2RlLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRCeU5hbWUocGFja2FnZXM6IGFueVtdLCBvcmRlckFzY2VuZGluZzogYm9vbGVhbiB8IHZvaWQgPSB0cnVlKTogc3RyaW5nW10ge1xuICByZXR1cm4gcGFja2FnZXMuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uIChhLCBiKTogbnVtYmVyIHtcbiAgICBjb25zdCBjb21wYXJhdG9yTmFtZXMgPSBhLm5hbWUudG9Mb3dlckNhc2UoKSA8IGIubmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIG9yZGVyQXNjZW5kaW5nID8gKGNvbXBhcmF0b3JOYW1lcyA/IC0xIDogMSkgOiBjb21wYXJhdG9yTmFtZXMgPyAxIDogLTE7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlUHJvcGVydGllcyhwcm9wZXJ0aWVzVG9EZWxldGU6IHN0cmluZ1tdLCBvYmplY3RJdGVtOiBhbnkpOiBhbnkge1xuICBfLmZvckVhY2gocHJvcGVydGllc1RvRGVsZXRlLCAocHJvcGVydHkpOiBhbnkgPT4ge1xuICAgIGRlbGV0ZSBvYmplY3RJdGVtW3Byb3BlcnR5XTtcbiAgfSk7XG5cbiAgcmV0dXJuIG9iamVjdEl0ZW07XG59XG5cbi8qKlxuICogcGFyc2UgcGFja2FnZSByZWFkbWUgLSBtYXJrZG93bi9hc2NpaVxuICogQHBhcmFtIHtTdHJpbmd9IHBhY2thZ2VOYW1lIG5hbWUgb2YgcGFja2FnZVxuICogQHBhcmFtIHtTdHJpbmd9IHJlYWRtZSBwYWNrYWdlIHJlYWRtZVxuXG4gKiBAcmV0dXJuIHtTdHJpbmd9IGNvbnZlcnRlZCBodG1sIHRlbXBsYXRlXG4gKi9cbi8vIFRPRE86IHJlbmFtZSwgZG9lcyBub3QgcGFyc2UgYW55bW9yZVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmVhZG1lKHBhY2thZ2VOYW1lOiBzdHJpbmcsIHJlYWRtZTogc3RyaW5nKTogc3RyaW5nIHwgdm9pZCB7XG4gIGlmIChfLmlzRW1wdHkocmVhZG1lKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gcmVhZG1lO1xuICB9XG5cbiAgLy8gbG9ncyByZWFkbWUgbm90IGZvdW5kIGVycm9yXG4gIGxvZ2dlci5pbmZvKHsgcGFja2FnZU5hbWUgfSwgJ0B7cGFja2FnZU5hbWV9OiBObyByZWFkbWUgZm91bmQnKTtcblxuICByZXR1cm4gJ0VSUk9SOiBObyBSRUFETUUgZGF0YSBmb3VuZCEnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlU2NvcGVkVXJpKHBhY2thZ2VOYW1lKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhY2thZ2VOYW1lLnJlcGxhY2UoL1xcLy9nLCAnJTJmJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNEaWZmT25lS2V5KHZlcnNpb25zKTogYm9vbGVhbiB7XG4gIHJldHVybiBPYmplY3Qua2V5cyh2ZXJzaW9ucykubGVuZ3RoICE9PSAxO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNWZXJzaW9uVmFsaWQocGFja2FnZU1ldGEsIHBhY2thZ2VWZXJzaW9uKTogYm9vbGVhbiB7XG4gIGNvbnN0IGhhc1ZlcnNpb24gPSB0eXBlb2YgcGFja2FnZVZlcnNpb24gIT09ICd1bmRlZmluZWQnO1xuICBpZiAoIWhhc1ZlcnNpb24pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBoYXNNYXRjaFZlcnNpb24gPSBPYmplY3Qua2V5cyhwYWNrYWdlTWV0YS52ZXJzaW9ucykuaW5jbHVkZXMocGFja2FnZVZlcnNpb24pO1xuICByZXR1cm4gaGFzTWF0Y2hWZXJzaW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZWxhdGVkVG9EZXByZWNhdGlvbihwa2dJbmZvOiBNYW5pZmVzdCk6IGJvb2xlYW4ge1xuICBjb25zdCB7IHZlcnNpb25zIH0gPSBwa2dJbmZvO1xuICBmb3IgKGNvbnN0IHZlcnNpb24gaW4gdmVyc2lvbnMpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZlcnNpb25zW3ZlcnNpb25dLCAnZGVwcmVjYXRlZCcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUNvbmZpZ1BhdGggPSBmdW5jdGlvbiAoc3RvcmFnZUxvY2F0aW9uOiBzdHJpbmcsIGZpbGU6IHN0cmluZykge1xuICByZXR1cm4gcGF0aC5yZXNvbHZlKHBhdGguZGlybmFtZShzdG9yYWdlTG9jYXRpb24pLCBmaWxlKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2dIVFRQU1dhcm5pbmcoc3RvcmFnZUxvY2F0aW9uKSB7XG4gIGxvZ2dlci5mYXRhbChcbiAgICBbXG4gICAgICAnWW91IGhhdmUgZW5hYmxlZCBIVFRQUyBhbmQgbmVlZCB0byBzcGVjaWZ5IGVpdGhlciAnLFxuICAgICAgJyAgICBcImh0dHBzLmtleVwiIGFuZCBcImh0dHBzLmNlcnRcIiBvciAnLFxuICAgICAgJyAgICBcImh0dHBzLnBmeFwiIGFuZCBvcHRpb25hbGx5IFwiaHR0cHMucGFzc3BocmFzZVwiICcsXG4gICAgICAndG8gcnVuIGh0dHBzIHNlcnZlcicsXG4gICAgICAnJyxcbiAgICAgIC8vIGNvbW1hbmRzIGFyZSBib3Jyb3dlZCBmcm9tIG5vZGUuanMgZG9jc1xuICAgICAgJ1RvIHF1aWNrbHkgY3JlYXRlIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlLCB1c2U6JyxcbiAgICAgICcgJCBvcGVuc3NsIGdlbnJzYSAtb3V0ICcgKyByZXNvbHZlQ29uZmlnUGF0aChzdG9yYWdlTG9jYXRpb24sIGtleVBlbSkgKyAnIDIwNDgnLFxuICAgICAgJyAkIG9wZW5zc2wgcmVxIC1uZXcgLXNoYTI1NiAta2V5ICcgK1xuICAgICAgICByZXNvbHZlQ29uZmlnUGF0aChzdG9yYWdlTG9jYXRpb24sIGtleVBlbSkgK1xuICAgICAgICAnIC1vdXQgJyArXG4gICAgICAgIHJlc29sdmVDb25maWdQYXRoKHN0b3JhZ2VMb2NhdGlvbiwgY3NyUGVtKSxcbiAgICAgICcgJCBvcGVuc3NsIHg1MDkgLXJlcSAtaW4gJyArXG4gICAgICAgIHJlc29sdmVDb25maWdQYXRoKHN0b3JhZ2VMb2NhdGlvbiwgY3NyUGVtKSArXG4gICAgICAgICcgLXNpZ25rZXkgJyArXG4gICAgICAgIHJlc29sdmVDb25maWdQYXRoKHN0b3JhZ2VMb2NhdGlvbiwga2V5UGVtKSArXG4gICAgICAgICcgLW91dCAnICtcbiAgICAgICAgcmVzb2x2ZUNvbmZpZ1BhdGgoc3RvcmFnZUxvY2F0aW9uLCBjZXJ0UGVtKSxcbiAgICAgICcnLFxuICAgICAgJ0FuZCB0aGVuIGFkZCB0byBjb25maWcgZmlsZSAoJyArIHN0b3JhZ2VMb2NhdGlvbiArICcpOicsXG4gICAgICAnICBodHRwczonLFxuICAgICAgYCAgICBrZXk6ICR7cmVzb2x2ZUNvbmZpZ1BhdGgoc3RvcmFnZUxvY2F0aW9uLCBrZXlQZW0pfWAsXG4gICAgICBgICAgIGNlcnQ6ICR7cmVzb2x2ZUNvbmZpZ1BhdGgoc3RvcmFnZUxvY2F0aW9uLCBjZXJ0UGVtKX1gLFxuICAgIF0uam9pbignXFxuJylcbiAgKTtcbiAgcHJvY2Vzcy5leGl0KDIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzTG9naW4oY29uZmlnOiBDb25maWcpIHtcbiAgcmV0dXJuIF8uaXNOaWwoY29uZmlnPy53ZWI/LmxvZ2luKSB8fCBjb25maWc/LndlYj8ubG9naW4gPT09IHRydWU7XG59XG5cbmV4cG9ydCB7IGJ1aWxkVG9rZW5VdGlsIGFzIGJ1aWxkVG9rZW4sIHBhcnNlQ29uZmlnRmlsZSB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxTQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7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
|
package/conf/.gitkeep
ADDED
|
File without changes
|
package/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as startVerdaccio } from './build/index';
|
package/package.json
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@verdaccio/canary",
|
|
3
|
+
"version": "6.3.2-canary.404363f",
|
|
4
|
+
"description": "A lightweight private npm proxy registry",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Verdaccio Maintainers",
|
|
7
|
+
"email": "verdaccio.npm@gmail.com"
|
|
8
|
+
},
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git://github.com/verdaccio/verdaccio"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://verdaccio.org",
|
|
14
|
+
"main": "build/index.js",
|
|
15
|
+
"types": "build/index.d.ts",
|
|
16
|
+
"bin": {
|
|
17
|
+
"verdaccio-canary": "./bin/verdaccio-canary"
|
|
18
|
+
},
|
|
19
|
+
"funding": {
|
|
20
|
+
"type": "opencollective",
|
|
21
|
+
"url": "https://opencollective.com/verdaccio"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@cypress/request": "3.0.10",
|
|
25
|
+
"@verdaccio/auth": "8.0.0-next-8.36",
|
|
26
|
+
"@verdaccio/config": "8.0.0-next-8.36",
|
|
27
|
+
"@verdaccio/core": "8.0.0-next-8.36",
|
|
28
|
+
"@verdaccio/hooks": "8.0.0-next-8.36",
|
|
29
|
+
"@verdaccio/loaders": "8.0.0-next-8.26",
|
|
30
|
+
"@verdaccio/local-storage-legacy": "11.1.1",
|
|
31
|
+
"@verdaccio/logger": "8.0.0-next-8.36",
|
|
32
|
+
"@verdaccio/middleware": "8.0.0-next-8.36",
|
|
33
|
+
"@verdaccio/package-filter": "13.0.0-next-8.3",
|
|
34
|
+
"@verdaccio/search-indexer": "8.0.0-next-8.6",
|
|
35
|
+
"@verdaccio/signature": "8.0.0-next-8.28",
|
|
36
|
+
"@verdaccio/streams": "10.2.1",
|
|
37
|
+
"@verdaccio/tarball": "13.0.0-next-8.36",
|
|
38
|
+
"@verdaccio/ui-theme": "8.0.0-next-8.30",
|
|
39
|
+
"@verdaccio/url": "13.0.0-next-8.36",
|
|
40
|
+
"@verdaccio/utils": "8.1.0-next-8.36",
|
|
41
|
+
"JSONStream": "1.3.5",
|
|
42
|
+
"async": "3.2.6",
|
|
43
|
+
"clipanion": "4.0.0-rc.4",
|
|
44
|
+
"compression": "1.8.1",
|
|
45
|
+
"cors": "2.8.6",
|
|
46
|
+
"debug": "4.4.3",
|
|
47
|
+
"envinfo": "7.21.0",
|
|
48
|
+
"express": "4.22.1",
|
|
49
|
+
"lodash": "4.18.1",
|
|
50
|
+
"lru-cache": "7.18.3",
|
|
51
|
+
"mime": "3.0.0",
|
|
52
|
+
"semver": "7.7.4",
|
|
53
|
+
"verdaccio-audit": "13.0.0-next-8.36",
|
|
54
|
+
"verdaccio-htpasswd": "13.0.0-next-8.36"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@babel/cli": "7.28.6",
|
|
58
|
+
"@babel/core": "7.29.0",
|
|
59
|
+
"@babel/node": "7.29.0",
|
|
60
|
+
"@babel/preset-env": "7.29.0",
|
|
61
|
+
"@babel/preset-typescript": "7.28.5",
|
|
62
|
+
"@babel/register": "7.28.6",
|
|
63
|
+
"@babel/runtime": "7.28.6",
|
|
64
|
+
"@trivago/prettier-plugin-sort-imports": "5.2.2",
|
|
65
|
+
"@types/async": "3.2.25",
|
|
66
|
+
"@types/debug": "4.1.12",
|
|
67
|
+
"@types/express": "4.17.25",
|
|
68
|
+
"@types/express-serve-static-core": "4.19.8",
|
|
69
|
+
"@types/http-errors": "2.0.5",
|
|
70
|
+
"@types/lodash": "4.17.23",
|
|
71
|
+
"@types/mime": "3.0.4",
|
|
72
|
+
"@types/minimatch": "5.1.2",
|
|
73
|
+
"@types/node": "20.19.33",
|
|
74
|
+
"@types/pino": "7.0.5",
|
|
75
|
+
"@types/request": "2.48.13",
|
|
76
|
+
"@types/semver": "7.7.1",
|
|
77
|
+
"@types/supertest": "6.0.3",
|
|
78
|
+
"@verdaccio-scope/verdaccio-auth-foo": "0.0.2",
|
|
79
|
+
"@verdaccio/e2e-cli": "2.3.0",
|
|
80
|
+
"@verdaccio/eslint-config": "13.0.0",
|
|
81
|
+
"@verdaccio/test-helper": "4.0.0-next-8.13",
|
|
82
|
+
"@verdaccio/types": "13.0.0-next-8.11",
|
|
83
|
+
"@vitest/coverage-v8": "3.2.4",
|
|
84
|
+
"@vitest/eslint-plugin": "1.6.9",
|
|
85
|
+
"babel-plugin-transform-inline-environment-variables": "0.4.4",
|
|
86
|
+
"cross-env": "10.1.0",
|
|
87
|
+
"eslint": "10.0.3",
|
|
88
|
+
"eslint-plugin-cypress": "6.1.0",
|
|
89
|
+
"eslint-plugin-jest": "29.15.0",
|
|
90
|
+
"eslint-plugin-react": "7.37.5",
|
|
91
|
+
"eslint-plugin-react-hooks": "7.0.1",
|
|
92
|
+
"eslint-plugin-verdaccio": "10.1.0",
|
|
93
|
+
"fs-extra": "11.3.2",
|
|
94
|
+
"get-port": "7.1.0",
|
|
95
|
+
"kleur": "4.1.5",
|
|
96
|
+
"nock": "13.5.6",
|
|
97
|
+
"node-mocks-http": "^1.17.2",
|
|
98
|
+
"prettier": "3.6.2",
|
|
99
|
+
"selfsigned": "5.5.0",
|
|
100
|
+
"standard-version": "9.5.0",
|
|
101
|
+
"supertest": "7.2.2",
|
|
102
|
+
"ts-node": "10.9.2",
|
|
103
|
+
"typescript": "5.9.3",
|
|
104
|
+
"verdaccio-auth-memory": "10.3.1",
|
|
105
|
+
"verdaccio-memory": "10.4.1",
|
|
106
|
+
"vitest": "3.2.4"
|
|
107
|
+
},
|
|
108
|
+
"keywords": [
|
|
109
|
+
"private",
|
|
110
|
+
"package",
|
|
111
|
+
"repository",
|
|
112
|
+
"registry",
|
|
113
|
+
"enterprise",
|
|
114
|
+
"modules",
|
|
115
|
+
"proxy",
|
|
116
|
+
"server",
|
|
117
|
+
"verdaccio"
|
|
118
|
+
],
|
|
119
|
+
"scripts": {
|
|
120
|
+
"release": "standard-version -a -s",
|
|
121
|
+
"type-check": "tsc --noEmit",
|
|
122
|
+
"cache:clean": "yarn cache clean --mirror && yarn cache clean --all",
|
|
123
|
+
"type-check:watch": "yarn run type-check -- --watch",
|
|
124
|
+
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,yml,yaml,md}\"",
|
|
125
|
+
"format:check": "prettier --check \"**/*.{js,jsx,ts,tsx,json,yml,yaml,md}\"",
|
|
126
|
+
"test": "cross-env NODE_ENV=test TZ=UTC FORCE_COLOR=1 vitest run",
|
|
127
|
+
"pre:ci": "yarn run lint",
|
|
128
|
+
"lint:ts": "yarn run type-check",
|
|
129
|
+
"lint": "eslint \"**/*.{js,jsx,ts}\"",
|
|
130
|
+
"lint:lockfile": "echo 'No lockfile linting available'",
|
|
131
|
+
"start": "yarn babel-node --extensions \".ts,.tsx\" src/lib/cli --inspect",
|
|
132
|
+
"start:brk": "yarn babel-node --extensions \".ts,.tsx\" src/lib/cli --inspect-brk",
|
|
133
|
+
"start:debug": "yarn node debug/bootstrap.js",
|
|
134
|
+
"start:run-server": "yarn node debug/bootstrap-runserver.js",
|
|
135
|
+
"build": "rm -Rf build && PACKAGE_VERSION=$(node -p \"require('./package.json').version\") yarn babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps inline",
|
|
136
|
+
"code:types": "tsc --emitDeclarationOnly -p tsconfig.json",
|
|
137
|
+
"code:docker-build": "yarn babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\"",
|
|
138
|
+
"docker": "docker build -t verdaccio/verdaccio:local . --no-cache",
|
|
139
|
+
"docker:run": "docker run -it --rm -p 4873:4873 -e \"DEBUG=verdaccio*\" verdaccio/verdaccio:local"
|
|
140
|
+
},
|
|
141
|
+
"engines": {
|
|
142
|
+
"node": ">=18"
|
|
143
|
+
},
|
|
144
|
+
"preferGlobal": true,
|
|
145
|
+
"license": "MIT",
|
|
146
|
+
"resolutions": {
|
|
147
|
+
"@types/serve-static": "1.15.10",
|
|
148
|
+
"@types/express-serve-static-core": "4.19.8"
|
|
149
|
+
},
|
|
150
|
+
"collective": {
|
|
151
|
+
"type": "opencollective",
|
|
152
|
+
"url": "https://opencollective.com/verdaccio",
|
|
153
|
+
"logo": "https://opencollective.com/verdaccio/logo.txt"
|
|
154
|
+
},
|
|
155
|
+
"packageManager": "yarn@4.9.2"
|
|
156
|
+
}
|
package/security.txt
ADDED