@verdaccio/api 6.0.0-6-next.15 → 6.0.0-6-next.16
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 +28 -0
- package/build/dist-tags.js +8 -8
- package/build/dist-tags.js.map +1 -1
- package/build/index.js +6 -0
- package/build/index.js.map +1 -1
- package/build/package.js +6 -6
- package/build/package.js.map +1 -1
- package/build/publish.js +18 -18
- package/build/publish.js.map +1 -1
- package/build/search.js +2 -2
- package/build/search.js.map +1 -1
- package/build/star.js +4 -4
- package/build/star.js.map +1 -1
- package/build/stars.js +3 -3
- package/build/stars.js.map +1 -1
- package/build/user.js +12 -12
- package/build/user.js.map +1 -1
- package/build/v1/profile.js +10 -10
- package/build/v1/profile.js.map +1 -1
- package/build/v1/search.js +14 -5
- package/build/v1/search.js.map +1 -1
- package/build/v1/token.js +12 -12
- package/build/v1/token.js.map +1 -1
- package/build/whoami.js +0 -1
- package/build/whoami.js.map +1 -1
- package/package.json +15 -14
- package/src/dist-tags.ts +8 -8
- package/src/index.ts +5 -0
- package/src/package.ts +3 -3
- package/src/publish.ts +11 -4
- package/src/search.ts +1 -1
- package/src/star.ts +1 -1
- package/src/stars.ts +1 -1
- package/src/user.ts +7 -7
- package/src/v1/profile.ts +7 -7
- package/src/v1/search.ts +11 -5
- package/src/v1/token.ts +11 -11
- package/src/whoami.ts +0 -1
- package/test/integration/_helper.ts +2 -1
- package/test/integration/package.spec.ts +1 -1
- package/test/integration/ping.spec.ts +1 -1
- package/test/integration/publish.spec.ts +3 -8
- package/test/integration/user.spec.ts +6 -8
- package/test/integration/whoami.spec.ts +1 -1
- package/test/unit/publish.spec.ts +3 -4
- package/tsconfig.json +0 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# @verdaccio/api
|
|
2
2
|
|
|
3
|
+
## 6.0.0-6-next.16
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- 794af76c: Remove Node 12 support
|
|
8
|
+
|
|
9
|
+
- We need move to the new `undici` and does not support Node.js 12
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- b702ea36: abort search request support for proxy
|
|
14
|
+
- 154b2ecd: refactor: remove @verdaccio/commons-api in favor @verdaccio/core and remove duplications
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Updated dependencies [794af76c]
|
|
19
|
+
- Updated dependencies [b702ea36]
|
|
20
|
+
- Updated dependencies [154b2ecd]
|
|
21
|
+
- @verdaccio/auth@6.0.0-6-next.13
|
|
22
|
+
- @verdaccio/config@6.0.0-6-next.9
|
|
23
|
+
- @verdaccio/core@6.0.0-6-next.2
|
|
24
|
+
- @verdaccio/tarball@11.0.0-6-next.8
|
|
25
|
+
- @verdaccio/hooks@6.0.0-6-next.8
|
|
26
|
+
- @verdaccio/logger@6.0.0-6-next.6
|
|
27
|
+
- @verdaccio/middleware@6.0.0-6-next.13
|
|
28
|
+
- @verdaccio/store@6.0.0-6-next.14
|
|
29
|
+
- @verdaccio/utils@6.0.0-6-next.7
|
|
30
|
+
|
|
3
31
|
## 6.0.0-6-next.15
|
|
4
32
|
|
|
5
33
|
### Patch Changes
|
package/build/dist-tags.js
CHANGED
|
@@ -11,7 +11,7 @@ var _lodash = _interopRequireDefault(require("lodash"));
|
|
|
11
11
|
|
|
12
12
|
var _middleware = require("@verdaccio/middleware");
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _core = require("@verdaccio/core");
|
|
15
15
|
|
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
17
|
|
|
@@ -30,9 +30,9 @@ function _default(route, auth, storage) {
|
|
|
30
30
|
return next(err);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
res.status(
|
|
33
|
+
res.status(_core.constants.HTTP_STATUS.CREATED);
|
|
34
34
|
return next({
|
|
35
|
-
ok:
|
|
35
|
+
ok: _core.constants.API_MESSAGE.TAG_ADDED
|
|
36
36
|
});
|
|
37
37
|
});
|
|
38
38
|
}; // tagging a package.
|
|
@@ -49,9 +49,9 @@ function _default(route, auth, storage) {
|
|
|
49
49
|
return next(err);
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
res.status(
|
|
52
|
+
res.status(_core.constants.HTTP_STATUS.CREATED);
|
|
53
53
|
return next({
|
|
54
|
-
ok:
|
|
54
|
+
ok: _core.constants.API_MESSAGE.TAG_REMOVED
|
|
55
55
|
});
|
|
56
56
|
});
|
|
57
57
|
});
|
|
@@ -65,7 +65,7 @@ function _default(route, auth, storage) {
|
|
|
65
65
|
return next(err);
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
next(info[
|
|
68
|
+
next(info[_core.constants.DIST_TAGS]);
|
|
69
69
|
}
|
|
70
70
|
});
|
|
71
71
|
});
|
|
@@ -75,9 +75,9 @@ function _default(route, auth, storage) {
|
|
|
75
75
|
return next(err);
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
res.status(
|
|
78
|
+
res.status(_core.constants.HTTP_STATUS.CREATED);
|
|
79
79
|
return next({
|
|
80
|
-
ok:
|
|
80
|
+
ok: _core.constants.API_MESSAGE.TAG_UPDATED
|
|
81
81
|
});
|
|
82
82
|
});
|
|
83
83
|
});
|
package/build/dist-tags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dist-tags.ts"],"names":["route","auth","storage","can","tag_package_version","req","res","next","_","isString","body","tags","params","tag","mergeTags","package","err","status","HTTP_STATUS","CREATED","ok","API_MESSAGE","TAG_ADDED","put","mime","getType","post","delete","TAG_REMOVED","get","getPackage","name","uplinksLook","callback","info","DIST_TAGS","TAG_UPDATED"],"mappings":";;;;;;;AAAA;;AACA;;AAGA;;AACA;;;;AAMe,kBAAUA,KAAV,EAAyBC,IAAzB,EAAsCC,OAAtC,EAA8D;AAC3E,QAAMC,GAAG,GAAG,uBAAMF,IAAN,CAAZ;;AACA,QAAMG,mBAAmB,GAAG,UAC1BC,GAD0B,EAE1BC,GAF0B,EAG1BC,IAH0B,EAIR;AAClB,QAAIC,gBAAEC,QAAF,CAAWJ,GAAG,CAACK,IAAf,MAAyB,KAA7B,EAAoC;AAClC,aAAOH,IAAI,CAAC,OAAD,CAAX;AACD;;AAED,UAAMI,IAAI,GAAG,EAAb;AACAA,IAAAA,IAAI,CAACN,GAAG,CAACO,MAAJ,CAAWC,GAAZ,CAAJ,GAAuBR,GAAG,CAACK,IAA3B;AACAR,IAAAA,OAAO,CAACY,SAAR,CAAkBT,GAAG,CAACO,MAAJ,CAAWG,OAA7B,EAAsCJ,IAAtC,EAA4C,UAAUK,GAAV,EAAwC;AAClF,UAAIA,GAAJ,EAAS;AACP,eAAOT,IAAI,CAACS,GAAD,CAAX;AACD;;AACDV,MAAAA,GAAG,CAACW,MAAJ,CAAWC,
|
|
1
|
+
{"version":3,"sources":["../src/dist-tags.ts"],"names":["route","auth","storage","can","tag_package_version","req","res","next","_","isString","body","tags","params","tag","mergeTags","package","err","status","constants","HTTP_STATUS","CREATED","ok","API_MESSAGE","TAG_ADDED","put","mime","getType","post","delete","TAG_REMOVED","get","getPackage","name","uplinksLook","callback","info","DIST_TAGS","TAG_UPDATED"],"mappings":"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","sourcesContent":["import mime from 'mime';\nimport _ from 'lodash';\nimport { Router } from 'express';\n\nimport { media, allow } from '@verdaccio/middleware';\nimport { constants, VerdaccioError } from '@verdaccio/core';\nimport { Package } from '@verdaccio/types';\nimport { Storage } from '@verdaccio/store';\nimport { IAuth } from '@verdaccio/auth';\nimport { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/custom';\n\nexport default function (route: Router, auth: IAuth, storage: Storage): void {\n const can = allow(auth);\n const tag_package_version = function (\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ): $NextFunctionVer {\n if (_.isString(req.body) === false) {\n return next('route');\n }\n\n const tags = {};\n tags[req.params.tag] = req.body;\n storage.mergeTags(req.params.package, tags, function (err: Error): $NextFunctionVer {\n if (err) {\n return next(err);\n }\n res.status(constants.HTTP_STATUS.CREATED);\n return next({ ok: constants.API_MESSAGE.TAG_ADDED });\n });\n };\n\n // tagging a package.\n route.put('/:package/:tag', can('publish'), media(mime.getType('json')), tag_package_version);\n\n route.post(\n '/-/package/:package/dist-tags/:tag',\n can('publish'),\n media(mime.getType('json')),\n tag_package_version\n );\n\n route.put(\n '/-/package/:package/dist-tags/:tag',\n can('publish'),\n media(mime.getType('json')),\n tag_package_version\n );\n\n route.delete(\n '/-/package/:package/dist-tags/:tag',\n can('publish'),\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const tags = {};\n tags[req.params.tag] = null;\n storage.mergeTags(req.params.package, tags, function (err: VerdaccioError): $NextFunctionVer {\n if (err) {\n return next(err);\n }\n res.status(constants.HTTP_STATUS.CREATED);\n return next({\n ok: constants.API_MESSAGE.TAG_REMOVED,\n });\n });\n }\n );\n\n route.get(\n '/-/package/:package/dist-tags',\n can('access'),\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n storage.getPackage({\n name: req.params.package,\n uplinksLook: true,\n req,\n callback: function (err: VerdaccioError, info: Package): $NextFunctionVer {\n if (err) {\n return next(err);\n }\n\n next(info[constants.DIST_TAGS]);\n },\n });\n }\n );\n\n route.post(\n '/-/package/:package/dist-tags',\n can('publish'),\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n storage.mergeTags(\n req.params.package,\n req.body,\n function (err: VerdaccioError): $NextFunctionVer {\n if (err) {\n return next(err);\n }\n res.status(constants.HTTP_STATUS.CREATED);\n return next({\n ok: constants.API_MESSAGE.TAG_UPDATED,\n });\n }\n );\n }\n );\n}\n"],"file":"dist-tags.js"}
|
package/build/index.js
CHANGED
|
@@ -11,6 +11,8 @@ var _middleware = require("@verdaccio/middleware");
|
|
|
11
11
|
|
|
12
12
|
var _bodyParser = _interopRequireDefault(require("body-parser"));
|
|
13
13
|
|
|
14
|
+
var _semver = _interopRequireDefault(require("semver"));
|
|
15
|
+
|
|
14
16
|
var _whoami = _interopRequireDefault(require("./whoami"));
|
|
15
17
|
|
|
16
18
|
var _ping = _interopRequireDefault(require("./ping"));
|
|
@@ -35,6 +37,10 @@ var _search2 = _interopRequireDefault(require("./v1/search"));
|
|
|
35
37
|
|
|
36
38
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
37
39
|
|
|
40
|
+
if (_semver.default.lte(process.version, 'v15.0.0')) {
|
|
41
|
+
global.AbortController = require('abortcontroller-polyfill/dist/cjs-ponyfill').AbortController;
|
|
42
|
+
}
|
|
43
|
+
|
|
38
44
|
function _default(config, auth, storage) {
|
|
39
45
|
/* eslint new-cap:off */
|
|
40
46
|
const app = _express.default.Router();
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["config","auth","storage","app","express","Router","param","validatePackage","validateName","use","apiJWTmiddleware","bodyParser","json","strict","limit","max_body_size","encodeScopePackage"],"mappings":";;;;;;;AAAA;;AACA;;AAUA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["semver","lte","process","version","global","AbortController","require","config","auth","storage","app","express","Router","param","validatePackage","validateName","use","apiJWTmiddleware","bodyParser","json","strict","limit","max_body_size","encodeScopePackage"],"mappings":";;;;;;;AAAA;;AACA;;AAUA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,IAAIA,gBAAOC,GAAP,CAAWC,OAAO,CAACC,OAAnB,EAA4B,SAA5B,CAAJ,EAA4C;AAC1CC,EAAAA,MAAM,CAACC,eAAP,GAAyBC,OAAO,CAAC,4CAAD,CAAP,CAAsDD,eAA/E;AACD;;AAEc,kBAAUE,MAAV,EAA0BC,IAA1B,EAAuCC,OAAvC,EAAiE;AAC9E;AACA,QAAMC,GAAG,GAAGC,iBAAQC,MAAR,EAAZ;AACA;AAEA;AACA;;;AACAF,EAAAA,GAAG,CAACG,KAAJ,CAAU,SAAV,EAAqBC,2BAArB;AACAJ,EAAAA,GAAG,CAACG,KAAJ,CAAU,UAAV,EAAsBE,wBAAtB;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,KAAV,EAAiBE,wBAAjB;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,SAAV,EAAqBE,wBAArB;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,UAAV,EAAsBE,wBAAtB;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,OAAV,EAAmBE,wBAAnB,EAZ8E,CAc9E;AACA;;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,MAAV,EAAkB,uBAAM,QAAN,CAAlB;AACAH,EAAAA,GAAG,CAACG,KAAJ,CAAU,kBAAV,EAA8B,uBAAM,sBAAN,CAA9B;AACAH,EAAAA,GAAG,CAACG,KAAJ,CAAU,UAAV,EAAsB,uBAAM,IAAN,CAAtB;AACAH,EAAAA,GAAG,CAACM,GAAJ,CAAQR,IAAI,CAACS,gBAAL,EAAR;AACAP,EAAAA,GAAG,CAACM,GAAJ,CAAQE,oBAAWC,IAAX,CAAgB;AAAEC,IAAAA,MAAM,EAAE,KAAV;AAAiBC,IAAAA,KAAK,EAAEd,MAAM,CAACe,aAAP,IAAwB;AAAhD,GAAhB,CAAR,EApB8E,CAqB9E;;AACAZ,EAAAA,GAAG,CAACM,GAAJ,CAAQ,0BAAST,MAAT,CAAR,EAtB8E,CAuB9E;;AACAG,EAAAA,GAAG,CAACM,GAAJ,CAAQO,8BAAR,EAxB8E,CAyB9E;;AACA,uBAAOb,GAAP;AACA,wBAAIA,GAAJ,EAASF,IAAT,EAAeC,OAAf,EAAwBF,MAAxB;AACA,wBAAQG,GAAR,EAAaF,IAAb,EA5B8E,CA6B9E;;AACA,uBAAOE,GAAP;AACA,qBAAKA,GAAL,EAAUF,IAAV,EAAgBD,MAAhB;AACA,yBAASG,GAAT,EAAcF,IAAd,EAAoBC,OAApB;AACA,wBAAQC,GAAR,EAAaF,IAAb,EAAmBC,OAAnB,EAA4BF,MAA5B;AACA,qBAAKG,GAAL;AACA,sBAAMA,GAAN,EAAWD,OAAX,EAnC8E,CAoC9E;;AACA,wBAASC,GAAT,EAAcF,IAAd,EAAoBC,OAApB;AACA,sBAAMC,GAAN,EAAWF,IAAX,EAAiBC,OAAjB,EAA0BF,MAA1B;AACA,SAAOG,GAAP;AACD","sourcesContent":["import express, { Router } from 'express';\nimport {\n match,\n validateName,\n validatePackage,\n encodeScopePackage,\n antiLoop,\n} from '@verdaccio/middleware';\nimport { IAuth } from '@verdaccio/auth';\nimport { Storage } from '@verdaccio/store';\nimport { Config } from '@verdaccio/types';\nimport bodyParser from 'body-parser';\nimport semver from 'semver';\n\nimport whoami from './whoami';\nimport ping from './ping';\nimport user from './user';\nimport distTags from './dist-tags';\nimport publish from './publish';\nimport search from './search';\nimport pkg from './package';\nimport stars from './stars';\nimport profile from './v1/profile';\nimport token from './v1/token';\nimport v1Search from './v1/search';\n\nif (semver.lte(process.version, 'v15.0.0')) {\n global.AbortController = require('abortcontroller-polyfill/dist/cjs-ponyfill').AbortController;\n}\n\nexport default function (config: Config, auth: IAuth, storage: Storage): Router {\n /* eslint new-cap:off */\n const app = express.Router();\n /* eslint new-cap:off */\n\n // validate all of these params as a package name\n // this might be too harsh, so ask if it causes trouble\n app.param('package', validatePackage);\n app.param('filename', validateName);\n app.param('tag', validateName);\n app.param('version', validateName);\n app.param('revision', validateName);\n app.param('token', validateName);\n\n // these can't be safely put into express url for some reason\n // TODO: For some reason? what reason?\n app.param('_rev', match(/^-rev$/));\n app.param('org_couchdb_user', match(/^org\\.couchdb\\.user:/));\n app.param('anything', match(/.*/));\n app.use(auth.apiJWTmiddleware());\n app.use(bodyParser.json({ strict: false, limit: config.max_body_size || '10mb' }));\n // @ts-ignore\n app.use(antiLoop(config));\n // encode / in a scoped package name to be matched as a single parameter in routes\n app.use(encodeScopePackage);\n // for \"npm whoami\"\n whoami(app);\n pkg(app, auth, storage, config);\n profile(app, auth);\n // @deprecated endpoint, 404 by default\n search(app);\n user(app, auth, config);\n distTags(app, auth, storage);\n publish(app, auth, storage, config);\n ping(app);\n stars(app, storage);\n // @ts-ignore\n v1Search(app, auth, storage);\n token(app, auth, storage, config);\n return app;\n}\n"],"file":"index.js"}
|
package/build/package.js
CHANGED
|
@@ -13,7 +13,7 @@ var _middleware = require("@verdaccio/middleware");
|
|
|
13
13
|
|
|
14
14
|
var _utils = require("@verdaccio/utils");
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _core = require("@verdaccio/core");
|
|
17
17
|
|
|
18
18
|
var _tarball = require("@verdaccio/tarball");
|
|
19
19
|
|
|
@@ -29,7 +29,7 @@ const downloadStream = (packageName, filename, storage, req, res) => {
|
|
|
29
29
|
stream.on('error', function (err) {
|
|
30
30
|
return res.locals.report_error(err);
|
|
31
31
|
});
|
|
32
|
-
res.header(
|
|
32
|
+
res.header(_core.HEADERS.CONTENT_TYPE, _core.HEADERS.OCTET_STREAM);
|
|
33
33
|
stream.pipe(res);
|
|
34
34
|
};
|
|
35
35
|
|
|
@@ -64,9 +64,9 @@ function _default(route, auth, storage, config) {
|
|
|
64
64
|
return next(version);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
if (_lodash.default.isNil(metadata[
|
|
68
|
-
if (_lodash.default.isNil(metadata[
|
|
69
|
-
queryVersion = metadata[
|
|
67
|
+
if (_lodash.default.isNil(metadata[_core.DIST_TAGS]) === false) {
|
|
68
|
+
if (_lodash.default.isNil(metadata[_core.DIST_TAGS][queryVersion]) === false) {
|
|
69
|
+
queryVersion = metadata[_core.DIST_TAGS][queryVersion];
|
|
70
70
|
debug('dist-tag version found %o', queryVersion);
|
|
71
71
|
version = (0, _utils.getVersion)(metadata, queryVersion);
|
|
72
72
|
|
|
@@ -80,7 +80,7 @@ function _default(route, auth, storage, config) {
|
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
debug('package version not found %o', queryVersion);
|
|
83
|
-
return next(
|
|
83
|
+
return next(_core.errorUtils.getNotFound(`${_core.API_ERROR.VERSION_NOT_EXIST}: ${queryVersion}`));
|
|
84
84
|
};
|
|
85
85
|
|
|
86
86
|
debug('get package name %o', name);
|
package/build/package.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/package.ts"],"names":["debug","downloadStream","packageName","filename","storage","req","res","stream","getTarball","on","content","header","err","locals","report_error","HEADERS","CONTENT_TYPE","OCTET_STREAM","pipe","route","auth","config","can","get","next","name","params","package","getPackageMetaCallback","metadata","message","url_prefix","queryVersion","version","_","isNil","DIST_TAGS","
|
|
1
|
+
{"version":3,"sources":["../src/package.ts"],"names":["debug","downloadStream","packageName","filename","storage","req","res","stream","getTarball","on","content","header","err","locals","report_error","HEADERS","CONTENT_TYPE","OCTET_STREAM","pipe","route","auth","config","can","get","next","name","params","package","getPackageMetaCallback","metadata","message","url_prefix","queryVersion","version","_","isNil","DIST_TAGS","errorUtils","getNotFound","API_ERROR","VERSION_NOT_EXIST","getPackage","uplinksLook","callback","scopedPackage"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport { Router } from 'express';\nimport buildDebug from 'debug';\n\nimport { allow } from '@verdaccio/middleware';\nimport { getVersion } from '@verdaccio/utils';\nimport { HEADERS, DIST_TAGS, API_ERROR, errorUtils } from '@verdaccio/core';\nimport { Config, Package } from '@verdaccio/types';\nimport { IAuth } from '@verdaccio/auth';\nimport { Storage } from '@verdaccio/store';\nimport { convertDistRemoteToLocalTarballUrls } from '@verdaccio/tarball';\nimport { $RequestExtend, $ResponseExtend, $NextFunctionVer } from '../types/custom';\n\nconst debug = buildDebug('verdaccio:api:package');\n\nconst downloadStream = (\n packageName: string,\n filename: string,\n storage: any,\n req: $RequestExtend,\n res: $ResponseExtend\n): void => {\n const stream = storage.getTarball(packageName, filename);\n\n stream.on('content-length', function (content): void {\n res.header('Content-Length', content);\n });\n\n stream.on('error', function (err): void {\n return res.locals.report_error(err);\n });\n\n res.header(HEADERS.CONTENT_TYPE, HEADERS.OCTET_STREAM);\n stream.pipe(res);\n};\n\nexport default function (route: Router, auth: IAuth, storage: Storage, config: Config): void {\n const can = allow(auth);\n // TODO: anonymous user?\n route.get(\n '/:package/:version?',\n can('access'),\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n debug('init package by version');\n const name = req.params.package;\n const getPackageMetaCallback = function (err, metadata: Package): void {\n if (err) {\n debug('error on fetch metadata for %o with error %o', name, err.message);\n return next(err);\n }\n debug('convert dist remote to local with prefix %o', config?.url_prefix);\n metadata = convertDistRemoteToLocalTarballUrls(metadata, req, config?.url_prefix);\n\n let queryVersion = req.params.version;\n debug('query by param version: %o', queryVersion);\n if (_.isNil(queryVersion)) {\n debug('param %o version found', queryVersion);\n return next(metadata);\n }\n\n let version = getVersion(metadata, queryVersion);\n debug('query by latest version %o and result %o', queryVersion, version);\n if (_.isNil(version) === false) {\n debug('latest version found %o', version);\n return next(version);\n }\n\n if (_.isNil(metadata[DIST_TAGS]) === false) {\n if (_.isNil(metadata[DIST_TAGS][queryVersion]) === false) {\n queryVersion = metadata[DIST_TAGS][queryVersion];\n debug('dist-tag version found %o', queryVersion);\n version = getVersion(metadata, queryVersion);\n if (_.isNil(version) === false) {\n debug('dist-tag found %o', version);\n return next(version);\n }\n }\n } else {\n debug('dist tag not detected');\n }\n\n debug('package version not found %o', queryVersion);\n return next(errorUtils.getNotFound(`${API_ERROR.VERSION_NOT_EXIST}: ${queryVersion}`));\n };\n\n debug('get package name %o', name);\n debug('uplinks look up enabled');\n storage.getPackage({\n name,\n uplinksLook: true,\n req,\n callback: getPackageMetaCallback,\n });\n }\n );\n\n route.get(\n '/:scopedPackage/-/:scope/:filename',\n can('access'),\n function (req: $RequestExtend, res: $ResponseExtend): void {\n const { scopedPackage, filename } = req.params;\n\n downloadStream(scopedPackage, filename, storage, req, res);\n }\n );\n\n route.get(\n '/:package/-/:filename',\n can('access'),\n function (req: $RequestExtend, res: $ResponseExtend): void {\n downloadStream(req.params.package, req.params.filename, storage, req, res);\n }\n );\n}\n"],"file":"package.js"}
|
package/build/publish.js
CHANGED
|
@@ -18,7 +18,7 @@ var _mime = _interopRequireDefault(require("mime"));
|
|
|
18
18
|
|
|
19
19
|
var _debug = _interopRequireDefault(require("debug"));
|
|
20
20
|
|
|
21
|
-
var
|
|
21
|
+
var _core = require("@verdaccio/core");
|
|
22
22
|
|
|
23
23
|
var _utils = require("@verdaccio/utils");
|
|
24
24
|
|
|
@@ -123,7 +123,7 @@ function publish(router, auth, storage, config) {
|
|
|
123
123
|
|
|
124
124
|
router.delete('/:package/-/:filename/-rev/:revision', can('unpublish'), can('publish'), removeTarball(storage)); // uploading package tarball
|
|
125
125
|
|
|
126
|
-
router.put('/:package/-/:filename/*', can('publish'), (0, _middleware.media)(
|
|
126
|
+
router.put('/:package/-/:filename/*', can('publish'), (0, _middleware.media)(_core.HEADERS.OCTET_STREAM), uploadPackageTarball(storage)); // adding a version
|
|
127
127
|
|
|
128
128
|
router.put('/:package/:version/-tag/:tag', can('publish'), (0, _middleware.media)(_mime.default.getType('json')), _middleware.expectJson, addVersion(storage));
|
|
129
129
|
}
|
|
@@ -194,7 +194,7 @@ function publishPackage(storage, config, auth) {
|
|
|
194
194
|
}
|
|
195
195
|
|
|
196
196
|
debug('no_attachments: after change success');
|
|
197
|
-
res.status(
|
|
197
|
+
res.status(_core.HTTP_STATUS.CREATED);
|
|
198
198
|
return next({
|
|
199
199
|
ok: okMessage,
|
|
200
200
|
success: true
|
|
@@ -217,10 +217,10 @@ function publishPackage(storage, config, auth) {
|
|
|
217
217
|
packageName
|
|
218
218
|
}, `wrong package format on publish a package @{packageName}`);
|
|
219
219
|
|
|
220
|
-
return next(
|
|
220
|
+
return next(_core.errorUtils.getBadRequest(_core.API_ERROR.UNSUPORTED_REGISTRY_CALL));
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
-
if (error && error.status !==
|
|
223
|
+
if (error && error.status !== _core.HTTP_STATUS.CONFLICT) {
|
|
224
224
|
debug('error on change or update a package with %o', error.message);
|
|
225
225
|
return next(error);
|
|
226
226
|
} // at this point document is either created or existed before
|
|
@@ -243,7 +243,7 @@ function publishPackage(storage, config, auth) {
|
|
|
243
243
|
return next(error);
|
|
244
244
|
}
|
|
245
245
|
|
|
246
|
-
addTags(metadataCopy[
|
|
246
|
+
addTags(metadataCopy[_core.DIST_TAGS], async function (error) {
|
|
247
247
|
if (error) {
|
|
248
248
|
debug('error on create a tag for %o with error %o', packageName, error.message);
|
|
249
249
|
return next(error);
|
|
@@ -260,7 +260,7 @@ function publishPackage(storage, config, auth) {
|
|
|
260
260
|
}
|
|
261
261
|
|
|
262
262
|
debug('add a tag succesfully for %o', `${metadataCopy.name}@${versionToPublish}`);
|
|
263
|
-
res.status(
|
|
263
|
+
res.status(_core.HTTP_STATUS.CREATED);
|
|
264
264
|
return next({
|
|
265
265
|
ok: okMessage,
|
|
266
266
|
success: true
|
|
@@ -296,14 +296,14 @@ function publishPackage(storage, config, auth) {
|
|
|
296
296
|
|
|
297
297
|
debug('update a package');
|
|
298
298
|
storage.changePackage(packageName, metadata, req.params.revision, function (error) {
|
|
299
|
-
afterChange(error,
|
|
299
|
+
afterChange(error, _core.API_MESSAGE.PKG_CHANGED, metadata);
|
|
300
300
|
});
|
|
301
301
|
});
|
|
302
302
|
} else {
|
|
303
303
|
debug('adding a new version for the package %o', packageName);
|
|
304
304
|
storage.addPackage(packageName, metadata, function (error) {
|
|
305
305
|
debug('package metadata updated %o', metadata);
|
|
306
|
-
afterChange(error,
|
|
306
|
+
afterChange(error, _core.API_MESSAGE.PKG_CREATED, metadata);
|
|
307
307
|
});
|
|
308
308
|
}
|
|
309
309
|
} catch (error) {
|
|
@@ -313,7 +313,7 @@ function publishPackage(storage, config, auth) {
|
|
|
313
313
|
packageName
|
|
314
314
|
}, 'error on publish, bad package data for @{packageName}');
|
|
315
315
|
|
|
316
|
-
return next(
|
|
316
|
+
return next(_core.errorUtils.getBadData(_core.API_ERROR.BAD_PACKAGE_DATA));
|
|
317
317
|
}
|
|
318
318
|
};
|
|
319
319
|
}
|
|
@@ -338,9 +338,9 @@ function unPublishPackage(storage) {
|
|
|
338
338
|
}
|
|
339
339
|
}
|
|
340
340
|
|
|
341
|
-
res.status(
|
|
341
|
+
res.status(_core.HTTP_STATUS.CREATED);
|
|
342
342
|
return next({
|
|
343
|
-
ok:
|
|
343
|
+
ok: _core.API_MESSAGE.PKG_REMOVED
|
|
344
344
|
});
|
|
345
345
|
};
|
|
346
346
|
}
|
|
@@ -368,7 +368,7 @@ function removeTarball(storage) {
|
|
|
368
368
|
return next(err);
|
|
369
369
|
}
|
|
370
370
|
|
|
371
|
-
res.status(
|
|
371
|
+
res.status(_core.HTTP_STATUS.CREATED);
|
|
372
372
|
|
|
373
373
|
_logger.logger.debug({
|
|
374
374
|
packageName,
|
|
@@ -377,7 +377,7 @@ function removeTarball(storage) {
|
|
|
377
377
|
}, `success remove tarball for @{packageName}-@{tarballName}-@{revision}`);
|
|
378
378
|
|
|
379
379
|
return next({
|
|
380
|
-
ok:
|
|
380
|
+
ok: _core.API_MESSAGE.TARBALL_REMOVED
|
|
381
381
|
});
|
|
382
382
|
});
|
|
383
383
|
};
|
|
@@ -402,9 +402,9 @@ function addVersion(storage) {
|
|
|
402
402
|
}
|
|
403
403
|
|
|
404
404
|
debug('success on add new version');
|
|
405
|
-
res.status(
|
|
405
|
+
res.status(_core.HTTP_STATUS.CREATED);
|
|
406
406
|
return next({
|
|
407
|
-
ok:
|
|
407
|
+
ok: _core.API_MESSAGE.PKG_PUBLISHED
|
|
408
408
|
});
|
|
409
409
|
});
|
|
410
410
|
};
|
|
@@ -434,9 +434,9 @@ function uploadPackageTarball(storage) {
|
|
|
434
434
|
return res.locals.report_error(err);
|
|
435
435
|
});
|
|
436
436
|
stream.on('success', function () {
|
|
437
|
-
res.status(
|
|
437
|
+
res.status(_core.HTTP_STATUS.CREATED);
|
|
438
438
|
return next({
|
|
439
|
-
ok:
|
|
439
|
+
ok: _core.API_MESSAGE.TARBALL_UPLOADED
|
|
440
440
|
});
|
|
441
441
|
});
|
|
442
442
|
};
|
package/build/publish.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/publish.ts"],"names":["debug","publish","router","auth","storage","config","can","put","mime","getType","expectJson","publishPackage","delete","unPublishPackage","removeTarball","HEADERS","OCTET_STREAM","uploadPackageTarball","addVersion","starApi","req","res","next","packageName","params","package","createTarball","filename","data","cb","stream","addTarball","on","err","message","end","Buffer","from","done","createVersion","version","metadata","addTags","tags","mergeTags","afterChange","error","okMessage","metadataCopy","_attachments","versions","_","isNil","JSON","stringify","status","HTTP_STATUS","CREATED","ok","success","isInvalidBodyFormat","logger","info","ErrorCode","getBadRequest","API_ERROR","UNSUPORTED_REGISTRY_CALL","CONFLICT","firstAttachmentKey","Object","keys","Path","basename","versionToPublish","readme","String","DIST_TAGS","remote_user","name","body","users","_rev","remote","allow_unpublish","changePackage","revision","API_MESSAGE","PKG_CHANGED","addPackage","PKG_CREATED","getBadData","BAD_PACKAGE_DATA","removePackage","PKG_REMOVED","TARBALL_REMOVED","tag","PKG_PUBLISHED","pipe","complete","abort","locals","report_error","TARBALL_UPLOADED"],"mappings":"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","sourcesContent":["import Path from 'path';\nimport _ from 'lodash';\nimport mime from 'mime';\nimport { Router } from 'express';\nimport buildDebug from 'debug';\n\nimport { API_MESSAGE, HEADERS, DIST_TAGS, API_ERROR, HTTP_STATUS } from '@verdaccio/commons-api';\nimport { validateMetadata, isObject, ErrorCode, hasDiffOneKey } from '@verdaccio/utils';\nimport { media, expectJson, allow } from '@verdaccio/middleware';\nimport { notify } from '@verdaccio/hooks';\nimport { Config, Callback, MergeTags, Version, Package, CallbackAction } from '@verdaccio/types';\nimport { logger } from '@verdaccio/logger';\nimport { IAuth } from '@verdaccio/auth';\nimport { Storage } from '@verdaccio/store';\nimport { $RequestExtend, $ResponseExtend, $NextFunctionVer } from '../types/custom';\n\nimport star from './star';\nimport { isPublishablePackage, isRelatedToDeprecation } from './utils';\n\nconst debug = buildDebug('verdaccio:api:publish');\n\nexport default function publish(\n router: Router,\n auth: IAuth,\n storage: Storage,\n config: Config\n): void {\n const can = allow(auth);\n\n /**\n * Publish a package / update package / un/start a package\n *\n * There are multiples scenarios here to be considered:\n *\n * 1. Publish scenario\n *\n * Publish a package consist of at least 1 step (PUT) with a metadata payload.\n * When a package is published, an _attachment property is present that contains the data\n * of the tarball.\n *\n * Example flow of publish.\n *\n * npm http fetch PUT 201 http://localhost:4873/@scope%2ftest1 9627ms\n npm info lifecycle @scope/test1@1.0.1~publish: @scope/test1@1.0.1\n npm info lifecycle @scope/test1@1.0.1~postpublish: @scope/test1@1.0.1\n + @scope/test1@1.0.1\n npm verb exit [ 0, true ]\n *\n *\n * 2. Unpublish scenario\n *\n * Unpublish consist in 3 steps.\n * 1. Try to fetch metadata -> if it fails, return 404\n * 2. Compute metadata locally (client side) and send a mutate payload excluding the version to\n * be unpublished\n * eg: if metadata reflects 1.0.1, 1.0.2 and 1.0.3, the computed metadata won't include 1.0.3.\n * 3. Once the second step has been successfully finished, delete the tarball.\n *\n * All these steps are consecutive and required, there is no transacions here, if step 3 fails,\n * metadata might get corrupted.\n *\n * Note the unpublish call will suffix in the url a /-rev/14-5d500cfce92f90fd revision number,\n * this not\n * used internally.\n *\n *\n * Example flow of unpublish.\n *\n * npm http fetch GET 200 http://localhost:4873/@scope%2ftest1?write=true 1680ms\n * npm http fetch PUT 201 http://localhost:4873/@scope%2ftest1/-rev/14-5d500cfce92f90fd\n * 956606ms attempt #2\n * npm http fetch GET 200 http://localhost:4873/@scope%2ftest1?write=true 1601ms\n * npm http fetch DELETE 201 http://localhost:4873/@scope%2ftest1/-/test1-1.0.3.tgz/-rev/16\n * -e11c8db282b2d992 19ms\n *\n * 3. Star a package\n *\n * Permissions: start a package depends of the publish and unpublish permissions, there is no\n * specific flag for star or un start.\n * The URL for star is similar to the unpublish (change package format)\n *\n * npm has no enpoint for star a package, rather mutate the metadata and acts as, the difference\n * is the users property which is part of the payload and the body only includes\n *\n * {\n\t\t \"_id\": pkgName,\n\t \t\"_rev\": \"3-b0cdaefc9bdb77c8\",\n\t\t \"users\": {\n\t\t [username]: boolean value (true, false)\n\t\t }\n\t}\n *\n */\n router.put(\n '/:package/:_rev?/:revision?',\n can('publish'),\n media(mime.getType('json')),\n expectJson,\n publishPackage(storage, config, auth)\n );\n\n /**\n * Un-publishing an entire package.\n *\n * This scenario happens when the first call detect there is only one version remaining\n * in the metadata, then the client decides to DELETE the resource\n * npm http fetch GET 304 http://localhost:4873/@scope%2ftest1?write=true 1076ms (from cache)\n npm http fetch DELETE 201 http://localhost:4873/@scope%2ftest1/-rev/18-d8ebe3020bd4ac9c 22ms\n */\n router.delete('/:package/-rev/*', can('unpublish'), unPublishPackage(storage));\n\n // removing a tarball\n router.delete(\n '/:package/-/:filename/-rev/:revision',\n can('unpublish'),\n can('publish'),\n removeTarball(storage)\n );\n\n // uploading package tarball\n router.put(\n '/:package/-/:filename/*',\n can('publish'),\n media(HEADERS.OCTET_STREAM),\n uploadPackageTarball(storage)\n );\n\n // adding a version\n router.put(\n '/:package/:version/-tag/:tag',\n can('publish'),\n media(mime.getType('json')),\n expectJson,\n addVersion(storage)\n );\n}\n\n/**\n * Publish a package\n */\nexport function publishPackage(storage: Storage, config: Config, auth: IAuth): any {\n const starApi = star(storage);\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const packageName = req.params.package;\n\n debug('publishing or updating a new version for %o', packageName);\n\n /**\n * Write tarball of stream data from package clients.\n */\n const createTarball = function (filename: string, data, cb: Callback): void {\n const stream = storage.addTarball(packageName, filename);\n stream.on('error', function (err) {\n debug(\n 'error on stream a tarball %o for %o with error %o',\n filename,\n packageName,\n err.message\n );\n cb(err);\n });\n stream.on('success', function () {\n debug('success on stream a tarball %o for %o', filename, packageName);\n cb();\n });\n // this is dumb and memory-consuming, but what choices do we have?\n // flow: we need first refactor this file before decides which type use here\n stream.end(Buffer.from(data.data, 'base64'));\n stream.done();\n };\n\n /**\n * Add new package version in storage\n */\n const createVersion = function (version: string, metadata: Version, cb: CallbackAction): void {\n debug('add a new package version %o to storage %o', version, metadata);\n storage.addVersion(packageName, version, metadata, null, cb);\n };\n\n /**\n * Add new tags in storage\n */\n const addTags = function (tags: MergeTags, cb: CallbackAction): void {\n debug('add new tag %o to storage', packageName);\n storage.mergeTags(packageName, tags, cb);\n };\n\n const afterChange = function (error, okMessage, metadata: Package): void {\n const metadataCopy: Package = { ...metadata };\n debug('after change metadata %o', metadata);\n\n const { _attachments, versions } = metadataCopy;\n\n // `npm star` wouldn't have attachments\n // and `npm deprecate` would have attachments as a empty object, i.e {}\n if (_.isNil(_attachments) || JSON.stringify(_attachments) === '{}') {\n debug('no attachments detected');\n if (error) {\n debug('no_attachments: after change error with %o', error.message);\n return next(error);\n }\n\n debug('no_attachments: after change success');\n res.status(HTTP_STATUS.CREATED);\n return next({\n ok: okMessage,\n success: true,\n });\n }\n\n /**\n * npm-registry-client 0.3+ embeds tarball into the json upload\n * issue https://github.com/rlidwka/sinopia/issues/31, dealing with it here:\n */\n\n const isInvalidBodyFormat =\n isObject(_attachments) === false ||\n hasDiffOneKey(_attachments) ||\n isObject(versions) === false ||\n hasDiffOneKey(versions);\n\n if (isInvalidBodyFormat) {\n // npm is doing something strange again\n // if this happens in normal circumstances, report it as a bug\n debug('invalid body format');\n logger.info({ packageName }, `wrong package format on publish a package @{packageName}`);\n return next(ErrorCode.getBadRequest(API_ERROR.UNSUPORTED_REGISTRY_CALL));\n }\n\n if (error && error.status !== HTTP_STATUS.CONFLICT) {\n debug('error on change or update a package with %o', error.message);\n return next(error);\n }\n\n // at this point document is either created or existed before\n const [firstAttachmentKey] = Object.keys(_attachments);\n\n createTarball(\n Path.basename(firstAttachmentKey),\n _attachments[firstAttachmentKey],\n function (error) {\n debug('creating a tarball %o', firstAttachmentKey);\n if (error) {\n debug('error on create a tarball for %o with error %o', packageName, error.message);\n return next(error);\n }\n\n const versionToPublish = Object.keys(versions)[0];\n\n versions[versionToPublish].readme =\n _.isNil(metadataCopy.readme) === false ? String(metadataCopy.readme) : '';\n\n createVersion(versionToPublish, versions[versionToPublish], function (error) {\n if (error) {\n debug('error on create a version for %o with error %o', packageName, error.message);\n return next(error);\n }\n\n addTags(metadataCopy[DIST_TAGS], async function (error) {\n if (error) {\n debug('error on create a tag for %o with error %o', packageName, error.message);\n return next(error);\n }\n\n try {\n await notify(\n metadataCopy,\n config,\n req.remote_user,\n `${metadataCopy.name}@${versionToPublish}`\n );\n } catch (error: any) {\n debug(\n 'error on notify add a new tag %o',\n `${metadataCopy.name}@${versionToPublish}`\n );\n logger.error({ error }, 'notify batch service has failed: @{error}');\n }\n\n debug('add a tag succesfully for %o', `${metadataCopy.name}@${versionToPublish}`);\n res.status(HTTP_STATUS.CREATED);\n return next({ ok: okMessage, success: true });\n });\n });\n }\n );\n };\n\n if (isPublishablePackage(req.body) === false && isObject(req.body.users)) {\n debug('starting star a package');\n return starApi(req, res, next);\n }\n\n try {\n debug('pre validation metadata to publish %o', req.body);\n const metadata = validateMetadata(req.body, packageName);\n debug('post validation metadata to publish %o', metadata);\n // treating deprecation as updating a package\n if (req.params._rev || isRelatedToDeprecation(req.body)) {\n debug('updating a new version for %o', packageName);\n // we check unpublish permissions, an update is basically remove versions\n const remote = req.remote_user;\n auth.allow_unpublish({ packageName }, remote, (error) => {\n debug('allowed to unpublish a package %o', packageName);\n if (error) {\n debug('not allowed to unpublish a version for %o', packageName);\n return next(error);\n }\n\n debug('update a package');\n storage.changePackage(packageName, metadata, req.params.revision, function (error) {\n afterChange(error, API_MESSAGE.PKG_CHANGED, metadata);\n });\n });\n } else {\n debug('adding a new version for the package %o', packageName);\n storage.addPackage(packageName, metadata, function (error) {\n debug('package metadata updated %o', metadata);\n afterChange(error, API_MESSAGE.PKG_CREATED, metadata);\n });\n }\n } catch (error: any) {\n debug('error on publish, bad package format %o', packageName);\n logger.error({ packageName }, 'error on publish, bad package data for @{packageName}');\n return next(ErrorCode.getBadData(API_ERROR.BAD_PACKAGE_DATA));\n }\n };\n}\n\n/**\n * un-publish a package\n */\nexport function unPublishPackage(storage: Storage) {\n return async function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) {\n const packageName = req.params.package;\n\n logger.debug({ packageName }, `unpublishing @{packageName}`);\n try {\n await storage.removePackage(packageName);\n } catch (err) {\n if (err) {\n return next(err);\n }\n }\n res.status(HTTP_STATUS.CREATED);\n return next({ ok: API_MESSAGE.PKG_REMOVED });\n };\n}\n\n/**\n * Delete tarball\n */\nexport function removeTarball(storage: Storage) {\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const packageName = req.params.package;\n const { filename, revision } = req.params;\n\n logger.debug(\n { packageName, filename, revision },\n `removing a tarball for @{packageName}-@{tarballName}-@{revision}`\n );\n storage.removeTarball(packageName, filename, revision, function (err) {\n if (err) {\n return next(err);\n }\n res.status(HTTP_STATUS.CREATED);\n\n logger.debug(\n { packageName, filename, revision },\n `success remove tarball for @{packageName}-@{tarballName}-@{revision}`\n );\n return next({ ok: API_MESSAGE.TARBALL_REMOVED });\n });\n };\n}\n/**\n * Adds a new version\n */\nexport function addVersion(storage: Storage) {\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const { version, tag } = req.params;\n const packageName = req.params.package;\n debug('add a new version %o and tag %o for %o', version, tag, packageName);\n\n storage.addVersion(packageName, version, req.body, tag, function (error) {\n if (error) {\n debug('error on add new version');\n return next(error);\n }\n\n debug('success on add new version');\n res.status(HTTP_STATUS.CREATED);\n return next({\n ok: API_MESSAGE.PKG_PUBLISHED,\n });\n });\n };\n}\n\n/**\n * uploadPackageTarball\n */\nexport function uploadPackageTarball(storage: Storage) {\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const packageName = req.params.package;\n const stream = storage.addTarball(packageName, req.params.filename);\n req.pipe(stream);\n\n // checking if end event came before closing\n let complete = false;\n req.on('end', function () {\n complete = true;\n stream.done();\n });\n\n req.on('close', function () {\n if (!complete) {\n stream.abort();\n }\n });\n\n stream.on('error', function (err) {\n return res.locals.report_error(err);\n });\n\n stream.on('success', function () {\n res.status(HTTP_STATUS.CREATED);\n return next({\n ok: API_MESSAGE.TARBALL_UPLOADED,\n });\n });\n };\n}\n"],"file":"publish.js"}
|
|
1
|
+
{"version":3,"sources":["../src/publish.ts"],"names":["debug","publish","router","auth","storage","config","can","put","mime","getType","expectJson","publishPackage","delete","unPublishPackage","removeTarball","HEADERS","OCTET_STREAM","uploadPackageTarball","addVersion","starApi","req","res","next","packageName","params","package","createTarball","filename","data","cb","stream","addTarball","on","err","message","end","Buffer","from","done","createVersion","version","metadata","addTags","tags","mergeTags","afterChange","error","okMessage","metadataCopy","_attachments","versions","_","isNil","JSON","stringify","status","HTTP_STATUS","CREATED","ok","success","isInvalidBodyFormat","logger","info","errorUtils","getBadRequest","API_ERROR","UNSUPORTED_REGISTRY_CALL","CONFLICT","firstAttachmentKey","Object","keys","Path","basename","versionToPublish","readme","String","DIST_TAGS","remote_user","name","body","users","_rev","remote","allow_unpublish","changePackage","revision","API_MESSAGE","PKG_CHANGED","addPackage","PKG_CREATED","getBadData","BAD_PACKAGE_DATA","removePackage","PKG_REMOVED","TARBALL_REMOVED","tag","PKG_PUBLISHED","pipe","complete","abort","locals","report_error","TARBALL_UPLOADED"],"mappings":"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","sourcesContent":["import Path from 'path';\nimport _ from 'lodash';\nimport mime from 'mime';\nimport { Router } from 'express';\nimport buildDebug from 'debug';\n\nimport {\n API_MESSAGE,\n HEADERS,\n DIST_TAGS,\n API_ERROR,\n HTTP_STATUS,\n errorUtils,\n} from '@verdaccio/core';\nimport { validateMetadata, isObject, hasDiffOneKey } from '@verdaccio/utils';\nimport { media, expectJson, allow } from '@verdaccio/middleware';\nimport { notify } from '@verdaccio/hooks';\nimport { Config, Callback, MergeTags, Version, Package, CallbackAction } from '@verdaccio/types';\nimport { logger } from '@verdaccio/logger';\nimport { IAuth } from '@verdaccio/auth';\nimport { Storage } from '@verdaccio/store';\nimport { $RequestExtend, $ResponseExtend, $NextFunctionVer } from '../types/custom';\n\nimport star from './star';\nimport { isPublishablePackage, isRelatedToDeprecation } from './utils';\n\nconst debug = buildDebug('verdaccio:api:publish');\n\nexport default function publish(\n router: Router,\n auth: IAuth,\n storage: Storage,\n config: Config\n): void {\n const can = allow(auth);\n\n /**\n * Publish a package / update package / un/start a package\n *\n * There are multiples scenarios here to be considered:\n *\n * 1. Publish scenario\n *\n * Publish a package consist of at least 1 step (PUT) with a metadata payload.\n * When a package is published, an _attachment property is present that contains the data\n * of the tarball.\n *\n * Example flow of publish.\n *\n * npm http fetch PUT 201 http://localhost:4873/@scope%2ftest1 9627ms\n npm info lifecycle @scope/test1@1.0.1~publish: @scope/test1@1.0.1\n npm info lifecycle @scope/test1@1.0.1~postpublish: @scope/test1@1.0.1\n + @scope/test1@1.0.1\n npm verb exit [ 0, true ]\n *\n *\n * 2. Unpublish scenario\n *\n * Unpublish consist in 3 steps.\n * 1. Try to fetch metadata -> if it fails, return 404\n * 2. Compute metadata locally (client side) and send a mutate payload excluding the version to\n * be unpublished\n * eg: if metadata reflects 1.0.1, 1.0.2 and 1.0.3, the computed metadata won't include 1.0.3.\n * 3. Once the second step has been successfully finished, delete the tarball.\n *\n * All these steps are consecutive and required, there is no transacions here, if step 3 fails,\n * metadata might get corrupted.\n *\n * Note the unpublish call will suffix in the url a /-rev/14-5d500cfce92f90fd revision number,\n * this not\n * used internally.\n *\n *\n * Example flow of unpublish.\n *\n * npm http fetch GET 200 http://localhost:4873/@scope%2ftest1?write=true 1680ms\n * npm http fetch PUT 201 http://localhost:4873/@scope%2ftest1/-rev/14-5d500cfce92f90fd\n * 956606ms attempt #2\n * npm http fetch GET 200 http://localhost:4873/@scope%2ftest1?write=true 1601ms\n * npm http fetch DELETE 201 http://localhost:4873/@scope%2ftest1/-/test1-1.0.3.tgz/-rev/16\n * -e11c8db282b2d992 19ms\n *\n * 3. Star a package\n *\n * Permissions: start a package depends of the publish and unpublish permissions, there is no\n * specific flag for star or un start.\n * The URL for star is similar to the unpublish (change package format)\n *\n * npm has no enpoint for star a package, rather mutate the metadata and acts as, the difference\n * is the users property which is part of the payload and the body only includes\n *\n * {\n\t\t \"_id\": pkgName,\n\t \t\"_rev\": \"3-b0cdaefc9bdb77c8\",\n\t\t \"users\": {\n\t\t [username]: boolean value (true, false)\n\t\t }\n\t}\n *\n */\n router.put(\n '/:package/:_rev?/:revision?',\n can('publish'),\n media(mime.getType('json')),\n expectJson,\n publishPackage(storage, config, auth)\n );\n\n /**\n * Un-publishing an entire package.\n *\n * This scenario happens when the first call detect there is only one version remaining\n * in the metadata, then the client decides to DELETE the resource\n * npm http fetch GET 304 http://localhost:4873/@scope%2ftest1?write=true 1076ms (from cache)\n npm http fetch DELETE 201 http://localhost:4873/@scope%2ftest1/-rev/18-d8ebe3020bd4ac9c 22ms\n */\n router.delete('/:package/-rev/*', can('unpublish'), unPublishPackage(storage));\n\n // removing a tarball\n router.delete(\n '/:package/-/:filename/-rev/:revision',\n can('unpublish'),\n can('publish'),\n removeTarball(storage)\n );\n\n // uploading package tarball\n router.put(\n '/:package/-/:filename/*',\n can('publish'),\n media(HEADERS.OCTET_STREAM),\n uploadPackageTarball(storage)\n );\n\n // adding a version\n router.put(\n '/:package/:version/-tag/:tag',\n can('publish'),\n media(mime.getType('json')),\n expectJson,\n addVersion(storage)\n );\n}\n\n/**\n * Publish a package\n */\nexport function publishPackage(storage: Storage, config: Config, auth: IAuth): any {\n const starApi = star(storage);\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const packageName = req.params.package;\n\n debug('publishing or updating a new version for %o', packageName);\n\n /**\n * Write tarball of stream data from package clients.\n */\n const createTarball = function (filename: string, data, cb: Callback): void {\n const stream = storage.addTarball(packageName, filename);\n stream.on('error', function (err) {\n debug(\n 'error on stream a tarball %o for %o with error %o',\n filename,\n packageName,\n err.message\n );\n cb(err);\n });\n stream.on('success', function () {\n debug('success on stream a tarball %o for %o', filename, packageName);\n cb();\n });\n // this is dumb and memory-consuming, but what choices do we have?\n // flow: we need first refactor this file before decides which type use here\n stream.end(Buffer.from(data.data, 'base64'));\n stream.done();\n };\n\n /**\n * Add new package version in storage\n */\n const createVersion = function (version: string, metadata: Version, cb: CallbackAction): void {\n debug('add a new package version %o to storage %o', version, metadata);\n storage.addVersion(packageName, version, metadata, null, cb);\n };\n\n /**\n * Add new tags in storage\n */\n const addTags = function (tags: MergeTags, cb: CallbackAction): void {\n debug('add new tag %o to storage', packageName);\n storage.mergeTags(packageName, tags, cb);\n };\n\n const afterChange = function (error, okMessage, metadata: Package): void {\n const metadataCopy: Package = { ...metadata };\n debug('after change metadata %o', metadata);\n\n const { _attachments, versions } = metadataCopy;\n\n // `npm star` wouldn't have attachments\n // and `npm deprecate` would have attachments as a empty object, i.e {}\n if (_.isNil(_attachments) || JSON.stringify(_attachments) === '{}') {\n debug('no attachments detected');\n if (error) {\n debug('no_attachments: after change error with %o', error.message);\n return next(error);\n }\n\n debug('no_attachments: after change success');\n res.status(HTTP_STATUS.CREATED);\n return next({\n ok: okMessage,\n success: true,\n });\n }\n\n /**\n * npm-registry-client 0.3+ embeds tarball into the json upload\n * issue https://github.com/rlidwka/sinopia/issues/31, dealing with it here:\n */\n\n const isInvalidBodyFormat =\n isObject(_attachments) === false ||\n hasDiffOneKey(_attachments) ||\n isObject(versions) === false ||\n hasDiffOneKey(versions);\n\n if (isInvalidBodyFormat) {\n // npm is doing something strange again\n // if this happens in normal circumstances, report it as a bug\n debug('invalid body format');\n logger.info({ packageName }, `wrong package format on publish a package @{packageName}`);\n return next(errorUtils.getBadRequest(API_ERROR.UNSUPORTED_REGISTRY_CALL));\n }\n\n if (error && error.status !== HTTP_STATUS.CONFLICT) {\n debug('error on change or update a package with %o', error.message);\n return next(error);\n }\n\n // at this point document is either created or existed before\n const [firstAttachmentKey] = Object.keys(_attachments);\n\n createTarball(\n Path.basename(firstAttachmentKey),\n _attachments[firstAttachmentKey],\n function (error) {\n debug('creating a tarball %o', firstAttachmentKey);\n if (error) {\n debug('error on create a tarball for %o with error %o', packageName, error.message);\n return next(error);\n }\n\n const versionToPublish = Object.keys(versions)[0];\n\n versions[versionToPublish].readme =\n _.isNil(metadataCopy.readme) === false ? String(metadataCopy.readme) : '';\n\n createVersion(versionToPublish, versions[versionToPublish], function (error) {\n if (error) {\n debug('error on create a version for %o with error %o', packageName, error.message);\n return next(error);\n }\n\n addTags(metadataCopy[DIST_TAGS], async function (error) {\n if (error) {\n debug('error on create a tag for %o with error %o', packageName, error.message);\n return next(error);\n }\n\n try {\n await notify(\n metadataCopy,\n config,\n req.remote_user,\n `${metadataCopy.name}@${versionToPublish}`\n );\n } catch (error: any) {\n debug(\n 'error on notify add a new tag %o',\n `${metadataCopy.name}@${versionToPublish}`\n );\n logger.error({ error }, 'notify batch service has failed: @{error}');\n }\n\n debug('add a tag succesfully for %o', `${metadataCopy.name}@${versionToPublish}`);\n res.status(HTTP_STATUS.CREATED);\n return next({ ok: okMessage, success: true });\n });\n });\n }\n );\n };\n\n if (isPublishablePackage(req.body) === false && isObject(req.body.users)) {\n debug('starting star a package');\n return starApi(req, res, next);\n }\n\n try {\n debug('pre validation metadata to publish %o', req.body);\n const metadata = validateMetadata(req.body, packageName);\n debug('post validation metadata to publish %o', metadata);\n // treating deprecation as updating a package\n if (req.params._rev || isRelatedToDeprecation(req.body)) {\n debug('updating a new version for %o', packageName);\n // we check unpublish permissions, an update is basically remove versions\n const remote = req.remote_user;\n auth.allow_unpublish({ packageName }, remote, (error) => {\n debug('allowed to unpublish a package %o', packageName);\n if (error) {\n debug('not allowed to unpublish a version for %o', packageName);\n return next(error);\n }\n\n debug('update a package');\n storage.changePackage(packageName, metadata, req.params.revision, function (error) {\n afterChange(error, API_MESSAGE.PKG_CHANGED, metadata);\n });\n });\n } else {\n debug('adding a new version for the package %o', packageName);\n storage.addPackage(packageName, metadata, function (error) {\n debug('package metadata updated %o', metadata);\n afterChange(error, API_MESSAGE.PKG_CREATED, metadata);\n });\n }\n } catch (error: any) {\n debug('error on publish, bad package format %o', packageName);\n logger.error({ packageName }, 'error on publish, bad package data for @{packageName}');\n return next(errorUtils.getBadData(API_ERROR.BAD_PACKAGE_DATA));\n }\n };\n}\n\n/**\n * un-publish a package\n */\nexport function unPublishPackage(storage: Storage) {\n return async function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) {\n const packageName = req.params.package;\n\n logger.debug({ packageName }, `unpublishing @{packageName}`);\n try {\n await storage.removePackage(packageName);\n } catch (err) {\n if (err) {\n return next(err);\n }\n }\n res.status(HTTP_STATUS.CREATED);\n return next({ ok: API_MESSAGE.PKG_REMOVED });\n };\n}\n\n/**\n * Delete tarball\n */\nexport function removeTarball(storage: Storage) {\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const packageName = req.params.package;\n const { filename, revision } = req.params;\n\n logger.debug(\n { packageName, filename, revision },\n `removing a tarball for @{packageName}-@{tarballName}-@{revision}`\n );\n storage.removeTarball(packageName, filename, revision, function (err) {\n if (err) {\n return next(err);\n }\n res.status(HTTP_STATUS.CREATED);\n\n logger.debug(\n { packageName, filename, revision },\n `success remove tarball for @{packageName}-@{tarballName}-@{revision}`\n );\n return next({ ok: API_MESSAGE.TARBALL_REMOVED });\n });\n };\n}\n/**\n * Adds a new version\n */\nexport function addVersion(storage: Storage) {\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const { version, tag } = req.params;\n const packageName = req.params.package;\n debug('add a new version %o and tag %o for %o', version, tag, packageName);\n\n storage.addVersion(packageName, version, req.body, tag, function (error) {\n if (error) {\n debug('error on add new version');\n return next(error);\n }\n\n debug('success on add new version');\n res.status(HTTP_STATUS.CREATED);\n return next({\n ok: API_MESSAGE.PKG_PUBLISHED,\n });\n });\n };\n}\n\n/**\n * uploadPackageTarball\n */\nexport function uploadPackageTarball(storage: Storage) {\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const packageName = req.params.package;\n const stream = storage.addTarball(packageName, req.params.filename);\n req.pipe(stream);\n\n // checking if end event came before closing\n let complete = false;\n req.on('end', function () {\n complete = true;\n stream.done();\n });\n\n req.on('close', function () {\n if (!complete) {\n stream.abort();\n }\n });\n\n stream.on('error', function (err) {\n return res.locals.report_error(err);\n });\n\n stream.on('success', function () {\n res.status(HTTP_STATUS.CREATED);\n return next({\n ok: API_MESSAGE.TARBALL_UPLOADED,\n });\n });\n };\n}\n"],"file":"publish.js"}
|
package/build/search.js
CHANGED
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = _default;
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _core = require("@verdaccio/core");
|
|
9
9
|
|
|
10
10
|
var _logger = require("@verdaccio/logger");
|
|
11
11
|
|
|
@@ -14,7 +14,7 @@ function _default(route) {
|
|
|
14
14
|
route.get('/-/all(/since)?', function (_req, res) {
|
|
15
15
|
_logger.logger.warn('search endpoint has been removed, please use search v1');
|
|
16
16
|
|
|
17
|
-
res.status(
|
|
17
|
+
res.status(_core.HTTP_STATUS.NOT_FOUND);
|
|
18
18
|
res.json({
|
|
19
19
|
error: 'not found, endpoint was removed'
|
|
20
20
|
});
|
package/build/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/search.ts"],"names":["route","get","_req","res","logger","warn","status","HTTP_STATUS","NOT_FOUND","json","error"],"mappings":";;;;;;;AAAA;;AACA;;AAEe,kBAAUA,KAAV,EAAuB;AACpC;AACAA,EAAAA,KAAK,CAACC,GAAN,CAAU,iBAAV,EAA6B,UAAUC,IAAV,EAAgBC,GAAhB,EAAqB;AAChDC,mBAAOC,IAAP,CAAY,wDAAZ;;AACAF,IAAAA,GAAG,CAACG,MAAJ,CAAWC,
|
|
1
|
+
{"version":3,"sources":["../src/search.ts"],"names":["route","get","_req","res","logger","warn","status","HTTP_STATUS","NOT_FOUND","json","error"],"mappings":";;;;;;;AAAA;;AACA;;AAEe,kBAAUA,KAAV,EAAuB;AACpC;AACAA,EAAAA,KAAK,CAACC,GAAN,CAAU,iBAAV,EAA6B,UAAUC,IAAV,EAAgBC,GAAhB,EAAqB;AAChDC,mBAAOC,IAAP,CAAY,wDAAZ;;AACAF,IAAAA,GAAG,CAACG,MAAJ,CAAWC,kBAAYC,SAAvB;AACAL,IAAAA,GAAG,CAACM,IAAJ,CAAS;AAAEC,MAAAA,KAAK,EAAE;AAAT,KAAT;AACD,GAJD;AAKD","sourcesContent":["import { HTTP_STATUS } from '@verdaccio/core';\nimport { logger } from '@verdaccio/logger';\n\nexport default function (route): void {\n // TODO: next major version, remove this\n route.get('/-/all(/since)?', function (_req, res) {\n logger.warn('search endpoint has been removed, please use search v1');\n res.status(HTTP_STATUS.NOT_FOUND);\n res.json({ error: 'not found, endpoint was removed' });\n });\n}\n"],"file":"search.js"}
|
package/build/star.js
CHANGED
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = _default;
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _core = require("@verdaccio/core");
|
|
9
9
|
|
|
10
10
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
11
11
|
|
|
@@ -47,7 +47,7 @@ function _default(storage) {
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
debug('succes update package for %o', name);
|
|
50
|
-
res.status(
|
|
50
|
+
res.status(_core.HTTP_STATUS.OK);
|
|
51
51
|
next({
|
|
52
52
|
success: true
|
|
53
53
|
});
|
|
@@ -64,9 +64,9 @@ function _default(storage) {
|
|
|
64
64
|
return next(err);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
const newStarUser = req.body[
|
|
67
|
+
const newStarUser = req.body[_core.USERS];
|
|
68
68
|
const remoteUsername = req.remote_user.name;
|
|
69
|
-
const localStarUsers = info[
|
|
69
|
+
const localStarUsers = info[_core.USERS]; // Check is star or unstar
|
|
70
70
|
|
|
71
71
|
const isStar = Object.keys(newStarUser).includes(remoteUsername);
|
|
72
72
|
debug('is start? %o', isStar);
|
package/build/star.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/star.ts"],"names":["debug","storage","validateInputs","newUsers","localUsers","username","isStar","isExistlocalUsers","_","isNil","req","res","next","name","params","package","afterChangePackage","err","status","HTTP_STATUS","OK","success","getPackage","callback","info","newStarUser","body","USERS","remoteUsername","remote_user","localStarUsers","Object","keys","includes","users","reduce","value","key","changePackage","_rev"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;;;;;;;;;AAKA,MAAMA,KAAK,GAAG,oBAAW,4BAAX,CAAd;;AAEe,kBACbC,OADa,EAEyD;AACtE,QAAMC,cAAc,GAAG,CAACC,QAAD,EAAWC,UAAX,EAAuBC,QAAvB,EAAiCC,MAAjC,KAAqD;AAC1E,UAAMC,iBAAiB,GAAGC,gBAAEC,KAAF,CAAQL,UAAU,CAACC,QAAD,CAAlB,MAAkC,KAA5D;;AACA,QAAIC,MAAM,IAAIC,iBAAV,IAA+BH,UAAU,CAACC,QAAD,CAA7C,EAAyD;AACvD,aAAO,IAAP;AACD,KAFD,MAEO,IAAI,CAACC,MAAD,IAAWC,iBAAf,EAAkC;AACvC,aAAO,KAAP;AACD,KAFM,MAEA,IAAI,CAACD,MAAD,IAAW,CAACC,iBAAhB,EAAmC;AACxC,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD,GAVD;;AAYA,SAAO,CAACG,GAAD,EAAsBC,GAAtB,EAAqCC,IAArC,KAAsE;AAC3E,UAAMC,IAAI,GAAGH,GAAG,CAACI,MAAJ,CAAWC,OAAxB;AACAf,IAAAA,KAAK,CAAC,2BAAD,EAA8Ba,IAA9B,CAAL;;AACA,UAAMG,kBAAkB,GAAG,UAAUC,GAAV,EAAuB;AAChD,UAAIA,GAAJ,EAAS;AACPjB,QAAAA,KAAK,CAAC,gCAAD,EAAmCa,IAAnC,CAAL;AACA,eAAOD,IAAI,CAACK,GAAD,CAAX;AACD;;AAEDjB,MAAAA,KAAK,CAAC,8BAAD,EAAiCa,IAAjC,CAAL;AACAF,MAAAA,GAAG,CAACO,MAAJ,CAAWC,
|
|
1
|
+
{"version":3,"sources":["../src/star.ts"],"names":["debug","storage","validateInputs","newUsers","localUsers","username","isStar","isExistlocalUsers","_","isNil","req","res","next","name","params","package","afterChangePackage","err","status","HTTP_STATUS","OK","success","getPackage","callback","info","newStarUser","body","USERS","remoteUsername","remote_user","localStarUsers","Object","keys","includes","users","reduce","value","key","changePackage","_rev"],"mappings":"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","sourcesContent":["import { USERS, HTTP_STATUS } from '@verdaccio/core';\nimport { Response } from 'express';\nimport _ from 'lodash';\nimport buildDebug from 'debug';\n\nimport { Storage } from '@verdaccio/store';\nimport { $RequestExtend, $NextFunctionVer } from '../types/custom';\n\nconst debug = buildDebug('verdaccio:api:publish:star');\n\nexport default function (\n storage: Storage\n): (req: $RequestExtend, res: Response, next: $NextFunctionVer) => void {\n const validateInputs = (newUsers, localUsers, username, isStar): boolean => {\n const isExistlocalUsers = _.isNil(localUsers[username]) === false;\n if (isStar && isExistlocalUsers && localUsers[username]) {\n return true;\n } else if (!isStar && isExistlocalUsers) {\n return false;\n } else if (!isStar && !isExistlocalUsers) {\n return true;\n }\n return false;\n };\n\n return (req: $RequestExtend, res: Response, next: $NextFunctionVer): void => {\n const name = req.params.package;\n debug('starring a package for %o', name);\n const afterChangePackage = function (err?: Error) {\n if (err) {\n debug('error on update package for %o', name);\n return next(err);\n }\n\n debug('succes update package for %o', name);\n res.status(HTTP_STATUS.OK);\n next({\n success: true,\n });\n };\n\n debug('get package info package for %o', name);\n // @ts-ignore\n storage.getPackage({\n name,\n req,\n callback: function (err, info) {\n if (err) {\n debug('error on get package info package for %o', name);\n return next(err);\n }\n const newStarUser = req.body[USERS];\n const remoteUsername = req.remote_user.name;\n const localStarUsers = info[USERS];\n // Check is star or unstar\n const isStar = Object.keys(newStarUser).includes(remoteUsername);\n debug('is start? %o', isStar);\n if (\n _.isNil(localStarUsers) === false &&\n validateInputs(newStarUser, localStarUsers, remoteUsername, isStar)\n ) {\n return afterChangePackage();\n }\n const users = isStar\n ? {\n ...localStarUsers,\n [remoteUsername]: true,\n }\n : _.reduce(\n localStarUsers,\n (users, value, key) => {\n if (key !== remoteUsername) {\n users[key] = value;\n }\n return users;\n },\n {}\n );\n debug('update package for %o', name);\n storage.changePackage(name, { ...info, users }, req.body._rev, function (err) {\n afterChangePackage(err);\n });\n },\n });\n };\n}\n"],"file":"star.js"}
|