@verdaccio/api 8.1.0-next-8.30 → 8.1.0-next-8.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","names":["_lodash","_interopRequireDefault","require","_auth","_core","_middleware","e","__esModule","default","normalizeToken","token","cidr_whitelist","cidr","created","Date","toISOString","_default","route","auth","storage","config","logger","get","TOKEN_API_ENDPOINTS","get_tokens","rateLimit","userRateLimit","req","res","next","name","remote_user","_","isNil","tokens","readTokens","user","totalTokens","length","debug","status","HTTP_STATUS","OK","objects","map","urls","error","msg","errorUtils","getCode","INTERNAL_ERROR","message","getUnauthorized","post","password","readonly","body","isBoolean","isArray","BAD_DATA","SUPPORT_ERRORS","PARAMETERS_NOT_VALID","authenticate","err","errorCode","UNAUTHORIZED","isFunction","saveToken","NOT_IMPLEMENTED","STORAGE_NOT_IMPLEMENT","getApiToken","getInternalError","key","cryptoUtils","stringToMD5","maskedToken","mask","getTime","set","HEADERS","CACHE_CONTROL","delete","delete_token","params","tokenKey","deleteToken","info"],"sources":["../../src/v1/token.ts"],"sourcesContent":["import { Response, Router } from 'express';\nimport _ from 'lodash';\n\nimport { Auth, getApiToken } from '@verdaccio/auth';\nimport { HEADERS, HTTP_STATUS, SUPPORT_ERRORS, cryptoUtils, errorUtils } from '@verdaccio/core';\nimport { TOKEN_API_ENDPOINTS, rateLimit } from '@verdaccio/middleware';\nimport { Storage } from '@verdaccio/store';\nimport { Config, Logger, RemoteUser, Token } from '@verdaccio/types';\n\nimport { $NextFunctionVer, $RequestExtend } from '../../types/custom';\n\nexport type NormalizeToken = Token & {\n cidr_whitelist: string[];\n created: string;\n};\n\n// npm expects \"cidr_whitelist\" for token list\nfunction normalizeToken(token: Token): NormalizeToken {\n return {\n ...token,\n cidr_whitelist: token.cidr || [],\n created: new Date(token.created).toISOString(),\n };\n}\n\n// https://github.com/npm/npm-profile/blob/latest/lib/index.js\nexport default function (\n route: Router,\n auth: Auth,\n storage: Storage,\n config: Config,\n logger: Logger\n): void {\n route.get(\n TOKEN_API_ENDPOINTS.get_tokens,\n rateLimit(config?.userRateLimit),\n async function (req: $RequestExtend, res: Response, next: $NextFunctionVer) {\n const { name } = req.remote_user;\n\n if (_.isNil(name) === false) {\n try {\n const tokens = await storage.readTokens({ user: name });\n const totalTokens = tokens.length;\n logger.debug({ totalTokens }, 'token list retrieved: @{totalTokens}');\n\n res.status(HTTP_STATUS.OK);\n return next({\n objects: tokens.map(normalizeToken),\n urls: {\n next: '', // TODO: pagination?\n },\n });\n } catch (error: any) {\n logger.error({ error: error.msg }, 'token list has failed: @{error}');\n return next(errorUtils.getCode(HTTP_STATUS.INTERNAL_ERROR, error.message));\n }\n }\n return next(errorUtils.getUnauthorized());\n }\n );\n\n route.post(\n TOKEN_API_ENDPOINTS.get_tokens,\n rateLimit(config?.userRateLimit),\n function (req: $RequestExtend, res: Response, next: $NextFunctionVer) {\n const { password, readonly, cidr_whitelist } = req.body;\n const { name } = req.remote_user;\n\n if (!_.isBoolean(readonly) || !_.isArray(cidr_whitelist)) {\n return next(errorUtils.getCode(HTTP_STATUS.BAD_DATA, SUPPORT_ERRORS.PARAMETERS_NOT_VALID));\n }\n\n auth.authenticate(name, password, async (err, user?: RemoteUser) => {\n if (err) {\n const errorCode = err.message ? HTTP_STATUS.UNAUTHORIZED : HTTP_STATUS.INTERNAL_ERROR;\n return next(errorUtils.getCode(errorCode, err.message));\n }\n\n req.remote_user = user;\n\n if (!_.isFunction(storage.saveToken)) {\n return next(\n errorUtils.getCode(HTTP_STATUS.NOT_IMPLEMENTED, SUPPORT_ERRORS.STORAGE_NOT_IMPLEMENT)\n );\n }\n\n try {\n const token = await getApiToken(auth, config, user as RemoteUser, password);\n if (!token) {\n throw errorUtils.getInternalError();\n }\n\n const key = cryptoUtils.stringToMD5(token);\n // TODO: use a utility here\n const maskedToken = cryptoUtils.mask(token, 5);\n const created = new Date().getTime();\n\n /**\n * cidr_whitelist: is not being used, we pass it through\n * token: we do not store the real token (it is generated once and retrieved\n * to the user), just a mask of it.\n */\n const saveToken: Token = {\n user: name,\n token: maskedToken,\n key,\n cidr: cidr_whitelist,\n readonly,\n created,\n };\n\n await storage.saveToken(saveToken);\n logger.debug({ key, name }, 'token @{key} was created for user @{name}');\n res.set(HEADERS.CACHE_CONTROL, 'no-cache, no-store');\n return next(\n normalizeToken({\n token,\n user: name,\n key: saveToken.key,\n cidr: cidr_whitelist,\n readonly,\n created: saveToken.created,\n })\n );\n } catch (error: any) {\n logger.error({ error: error.msg }, 'token creation has failed: @{error}');\n return next(errorUtils.getInternalError(error.message));\n }\n });\n }\n );\n\n route.delete(\n TOKEN_API_ENDPOINTS.delete_token,\n rateLimit(config?.userRateLimit),\n async (req: $RequestExtend, res: Response, next: $NextFunctionVer) => {\n const {\n params: { tokenKey },\n } = req;\n const { name } = req.remote_user;\n\n if (_.isNil(name) === false) {\n logger.debug({ name }, '@{name} has requested remove a token');\n try {\n await storage.deleteToken(name, tokenKey);\n logger.info({ tokenKey, name }, 'token id @{tokenKey} was revoked for user @{name}');\n return next({});\n } catch (error: any) {\n logger.error({ error: error.msg }, 'token creation has failed: @{error}');\n return next(errorUtils.getCode(HTTP_STATUS.INTERNAL_ERROR, error.message));\n }\n }\n return next(errorUtils.getUnauthorized());\n }\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"token.js","names":["_lodash","_interopRequireDefault","require","_auth","_core","_middleware","e","__esModule","_typeof","o","Symbol","iterator","constructor","prototype","_regenerator","t","r","n","toStringTag","i","c","Generator","u","Object","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","length","l","TypeError","call","done","value","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","w","m","defineProperty","_regeneratorDefine","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","ownKeys","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","push","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","_toPrimitive","toPrimitive","String","Number","normalizeToken","token","cidr_whitelist","cidr","created","Date","toISOString","_default","route","auth","storage","config","logger","get","TOKEN_API_ENDPOINTS","get_tokens","rateLimit","userRateLimit","_ref","_callee","req","res","next","name","tokens","totalTokens","_t","_context","remote_user","_","isNil","readTokens","user","debug","status","HTTP_STATUS","OK","objects","map","urls","error","msg","errorUtils","getCode","INTERNAL_ERROR","message","getUnauthorized","_x","_x2","_x3","post","_req$body","body","password","readonly","isBoolean","isArray","BAD_DATA","SUPPORT_ERRORS","PARAMETERS_NOT_VALID","authenticate","_ref2","_callee2","err","errorCode","key","maskedToken","saveToken","_t2","_context2","UNAUTHORIZED","isFunction","NOT_IMPLEMENTED","STORAGE_NOT_IMPLEMENT","getApiToken","getInternalError","cryptoUtils","stringToMD5","mask","getTime","set","HEADERS","CACHE_CONTROL","_x4","_x5","delete_token","_ref3","_callee3","tokenKey","_t3","_context3","params","deleteToken","info","_x6","_x7","_x8"],"sources":["../../src/v1/token.ts"],"sourcesContent":["import type { Response, Router } from 'express';\nimport _ from 'lodash';\n\nimport type { Auth } from '@verdaccio/auth';\nimport { getApiToken } from '@verdaccio/auth';\nimport { HEADERS, HTTP_STATUS, SUPPORT_ERRORS, cryptoUtils, errorUtils } from '@verdaccio/core';\nimport { TOKEN_API_ENDPOINTS, rateLimit } from '@verdaccio/middleware';\nimport type { Storage } from '@verdaccio/store';\nimport type { Config, Logger, RemoteUser, Token } from '@verdaccio/types';\n\nimport type { $NextFunctionVer, $RequestExtend } from '../../types/custom';\n\nexport type NormalizeToken = Token & {\n cidr_whitelist: string[];\n created: string;\n};\n\n// npm expects \"cidr_whitelist\" for token list\nfunction normalizeToken(token: Token): NormalizeToken {\n return {\n ...token,\n cidr_whitelist: token.cidr || [],\n created: new Date(token.created).toISOString(),\n };\n}\n\n// https://github.com/npm/npm-profile/blob/latest/lib/index.js\nexport default function (\n route: Router,\n auth: Auth,\n storage: Storage,\n config: Config,\n logger: Logger\n): void {\n route.get(\n TOKEN_API_ENDPOINTS.get_tokens,\n rateLimit(config?.userRateLimit),\n async function (req: $RequestExtend, res: Response, next: $NextFunctionVer) {\n const { name } = req.remote_user;\n\n if (_.isNil(name) === false) {\n try {\n const tokens = await storage.readTokens({ user: name });\n const totalTokens = tokens.length;\n logger.debug({ totalTokens }, 'token list retrieved: @{totalTokens}');\n\n res.status(HTTP_STATUS.OK);\n return next({\n objects: tokens.map(normalizeToken),\n urls: {\n next: '', // TODO: pagination?\n },\n });\n } catch (error: any) {\n logger.error({ error: error.msg }, 'token list has failed: @{error}');\n return next(errorUtils.getCode(HTTP_STATUS.INTERNAL_ERROR, error.message));\n }\n }\n return next(errorUtils.getUnauthorized());\n }\n );\n\n route.post(\n TOKEN_API_ENDPOINTS.get_tokens,\n rateLimit(config?.userRateLimit),\n function (req: $RequestExtend, res: Response, next: $NextFunctionVer) {\n const { password, readonly, cidr_whitelist } = req.body;\n const { name } = req.remote_user;\n\n if (!_.isBoolean(readonly) || !_.isArray(cidr_whitelist)) {\n return next(errorUtils.getCode(HTTP_STATUS.BAD_DATA, SUPPORT_ERRORS.PARAMETERS_NOT_VALID));\n }\n\n auth.authenticate(name, password, async (err, user?: RemoteUser) => {\n if (err) {\n const errorCode = err.message ? HTTP_STATUS.UNAUTHORIZED : HTTP_STATUS.INTERNAL_ERROR;\n return next(errorUtils.getCode(errorCode, err.message));\n }\n\n req.remote_user = user;\n\n if (!_.isFunction(storage.saveToken)) {\n return next(\n errorUtils.getCode(HTTP_STATUS.NOT_IMPLEMENTED, SUPPORT_ERRORS.STORAGE_NOT_IMPLEMENT)\n );\n }\n\n try {\n const token = await getApiToken(auth, config, user as RemoteUser, password);\n if (!token) {\n throw errorUtils.getInternalError();\n }\n\n const key = cryptoUtils.stringToMD5(token);\n // TODO: use a utility here\n const maskedToken = cryptoUtils.mask(token, 5);\n const created = new Date().getTime();\n\n /**\n * cidr_whitelist: is not being used, we pass it through\n * token: we do not store the real token (it is generated once and retrieved\n * to the user), just a mask of it.\n */\n const saveToken: Token = {\n user: name,\n token: maskedToken,\n key,\n cidr: cidr_whitelist,\n readonly,\n created,\n };\n\n await storage.saveToken(saveToken);\n logger.debug({ key, name }, 'token @{key} was created for user @{name}');\n res.set(HEADERS.CACHE_CONTROL, 'no-cache, no-store');\n return next(\n normalizeToken({\n token,\n user: name,\n key: saveToken.key,\n cidr: cidr_whitelist,\n readonly,\n created: saveToken.created,\n })\n );\n } catch (error: any) {\n logger.error({ error: error.msg }, 'token creation has failed: @{error}');\n return next(errorUtils.getInternalError(error.message));\n }\n });\n }\n );\n\n route.delete(\n TOKEN_API_ENDPOINTS.delete_token,\n rateLimit(config?.userRateLimit),\n async (req: $RequestExtend, res: Response, next: $NextFunctionVer) => {\n const {\n params: { tokenKey },\n } = req;\n const { name } = req.remote_user;\n\n if (_.isNil(name) === false) {\n logger.debug({ name }, '@{name} has requested remove a token');\n try {\n await storage.deleteToken(name, tokenKey);\n logger.info({ tokenKey, name }, 'token id @{tokenKey} was revoked for user @{name}');\n return next({});\n } catch (error: any) {\n logger.error({ error: error.msg }, 'token creation has failed: @{error}');\n return next(errorUtils.getCode(HTTP_STATUS.INTERNAL_ERROR, error.message));\n }\n }\n return next(errorUtils.getUnauthorized());\n }\n );\n}\n"],"mappings":"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","ignoreList":[]}
package/build/whoami.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { Router } from 'express';
1
+ import type { Router } from 'express';
2
2
  export default function (route: Router): void;
package/build/whoami.js CHANGED
@@ -3,16 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = _default;
6
+ exports["default"] = _default;
7
7
  var _debug = _interopRequireDefault(require("debug"));
8
8
  var _core = require("@verdaccio/core");
9
9
  var _middleware = require("@verdaccio/middleware");
10
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
- const debug = (0, _debug.default)('verdaccio:api:user');
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
+ var debug = (0, _debug["default"])('verdaccio:api:user');
12
12
  function _default(route) {
13
- route.get(_middleware.USER_API_ENDPOINTS.whoami, (req, _res, next) => {
13
+ route.get(_middleware.USER_API_ENDPOINTS.whoami, function (req, _res, next) {
14
+ var _req$remote_user;
14
15
  // remote_user is set by the auth middleware
15
- const username = req?.remote_user?.name;
16
+ var username = req === null || req === void 0 || (_req$remote_user = req.remote_user) === null || _req$remote_user === void 0 ? void 0 : _req$remote_user.name;
16
17
  if (!username) {
17
18
  debug('whoami: user not found');
18
19
  return next(_core.errorUtils.getUnauthorized('Unauthorized'));
@@ -1 +1 @@
1
- {"version":3,"file":"whoami.js","names":["_debug","_interopRequireDefault","require","_core","_middleware","e","__esModule","default","debug","buildDebug","_default","route","get","USER_API_ENDPOINTS","whoami","req","_res","next","username","remote_user","name","errorUtils","getUnauthorized"],"sources":["../src/whoami.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { Response, Router } from 'express';\n\nimport { errorUtils } from '@verdaccio/core';\nimport { USER_API_ENDPOINTS } from '@verdaccio/middleware';\n\nimport { $NextFunctionVer, $RequestExtend } from '../types/custom';\n\nconst debug = buildDebug('verdaccio:api:user');\n\nexport default function (route: Router): void {\n route.get(\n USER_API_ENDPOINTS.whoami,\n (req: $RequestExtend, _res: Response, next: $NextFunctionVer): any => {\n // remote_user is set by the auth middleware\n const username = req?.remote_user?.name;\n if (!username) {\n debug('whoami: user not found');\n return next(errorUtils.getUnauthorized('Unauthorized'));\n }\n\n debug('whoami: response %o', username);\n return next({ username: username });\n }\n );\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAA2D,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAI3D,MAAMG,KAAK,GAAG,IAAAC,cAAU,EAAC,oBAAoB,CAAC;AAE/B,SAAAC,SAAUC,KAAa,EAAQ;EAC5CA,KAAK,CAACC,GAAG,CACPC,8BAAkB,CAACC,MAAM,EACzB,CAACC,GAAmB,EAAEC,IAAc,EAAEC,IAAsB,KAAU;IACpE;IACA,MAAMC,QAAQ,GAAGH,GAAG,EAAEI,WAAW,EAAEC,IAAI;IACvC,IAAI,CAACF,QAAQ,EAAE;MACbV,KAAK,CAAC,wBAAwB,CAAC;MAC/B,OAAOS,IAAI,CAACI,gBAAU,CAACC,eAAe,CAAC,cAAc,CAAC,CAAC;IACzD;IAEAd,KAAK,CAAC,qBAAqB,EAAEU,QAAQ,CAAC;IACtC,OAAOD,IAAI,CAAC;MAAEC,QAAQ,EAAEA;IAAS,CAAC,CAAC;EACrC,CACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"file":"whoami.js","names":["_debug","_interopRequireDefault","require","_core","_middleware","e","__esModule","debug","buildDebug","_default","route","get","USER_API_ENDPOINTS","whoami","req","_res","next","_req$remote_user","username","remote_user","name","errorUtils","getUnauthorized"],"sources":["../src/whoami.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport type { Response, Router } from 'express';\n\nimport { errorUtils } from '@verdaccio/core';\nimport { USER_API_ENDPOINTS } from '@verdaccio/middleware';\n\nimport type { $NextFunctionVer, $RequestExtend } from '../types/custom';\n\nconst debug = buildDebug('verdaccio:api:user');\n\nexport default function (route: Router): void {\n route.get(\n USER_API_ENDPOINTS.whoami,\n (req: $RequestExtend, _res: Response, next: $NextFunctionVer): any => {\n // remote_user is set by the auth middleware\n const username = req?.remote_user?.name;\n if (!username) {\n debug('whoami: user not found');\n return next(errorUtils.getUnauthorized('Unauthorized'));\n }\n\n debug('whoami: response %o', username);\n return next({ username: username });\n }\n );\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAA2D,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,gBAAAA,CAAA;AAI3D,IAAME,KAAK,GAAG,IAAAC,iBAAU,EAAC,oBAAoB,CAAC;AAE/B,SAAAC,SAAUC,KAAa,EAAQ;EAC5CA,KAAK,CAACC,GAAG,CACPC,8BAAkB,CAACC,MAAM,EACzB,UAACC,GAAmB,EAAEC,IAAc,EAAEC,IAAsB,EAAU;IAAA,IAAAC,gBAAA;IACpE;IACA,IAAMC,QAAQ,GAAGJ,GAAG,aAAHA,GAAG,gBAAAG,gBAAA,GAAHH,GAAG,CAAEK,WAAW,cAAAF,gBAAA,uBAAhBA,gBAAA,CAAkBG,IAAI;IACvC,IAAI,CAACF,QAAQ,EAAE;MACbX,KAAK,CAAC,wBAAwB,CAAC;MAC/B,OAAOS,IAAI,CAACK,gBAAU,CAACC,eAAe,CAAC,cAAc,CAAC,CAAC;IACzD;IAEAf,KAAK,CAAC,qBAAqB,EAAEW,QAAQ,CAAC;IACtC,OAAOF,IAAI,CAAC;MAAEE,QAAQ,EAAEA;IAAS,CAAC,CAAC;EACrC,CACF,CAAC;AACH","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdaccio/api",
3
- "version": "8.1.0-next-8.30",
3
+ "version": "8.1.0-next-8.32",
4
4
  "description": "Verdaccio Registry API",
5
5
  "main": "./build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -33,19 +33,19 @@
33
33
  },
34
34
  "license": "MIT",
35
35
  "dependencies": {
36
- "@verdaccio/auth": "8.0.0-next-8.30",
37
- "@verdaccio/config": "8.0.0-next-8.30",
38
- "@verdaccio/core": "8.0.0-next-8.30",
39
- "@verdaccio/logger": "8.0.0-next-8.30",
40
- "@verdaccio/middleware": "8.0.0-next-8.30",
41
- "@verdaccio/store": "8.0.0-next-8.30",
36
+ "@verdaccio/auth": "8.0.0-next-8.32",
37
+ "@verdaccio/config": "8.0.0-next-8.32",
38
+ "@verdaccio/core": "8.0.0-next-8.32",
39
+ "@verdaccio/logger": "8.0.0-next-8.32",
40
+ "@verdaccio/middleware": "8.0.0-next-8.32",
41
+ "@verdaccio/store": "8.0.0-next-8.32",
42
42
  "debug": "4.4.3",
43
43
  "express": "4.22.1",
44
44
  "lodash": "4.17.23"
45
45
  },
46
46
  "devDependencies": {
47
- "@verdaccio/test-helper": "4.0.0-next-8.14",
48
- "@verdaccio/types": "13.0.0-next-8.10",
47
+ "@verdaccio/test-helper": "4.0.0-next-8.16",
48
+ "@verdaccio/types": "13.0.0-next-8.11",
49
49
  "mockdate": "3.0.5",
50
50
  "nock": "13.5.6",
51
51
  "supertest": "7.1.4",