verdaccio-audit 10.0.0 → 10.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/audit.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { Logger, IPluginMiddleware, IBasicAuth, PluginOptions } from '@verdaccio/types';
2
2
  import { ConfigAudit } from './types';
3
+ export declare const REGISTRY_DOMAIN = "https://registry.npmjs.org";
3
4
  export default class ProxyAudit implements IPluginMiddleware<ConfigAudit> {
4
5
  enabled: boolean;
5
6
  logger: Logger;
package/lib/audit.js CHANGED
@@ -3,16 +3,26 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.default = exports.REGISTRY_DOMAIN = void 0;
7
7
 
8
- var _request = _interopRequireDefault(require("request"));
8
+ var _https = _interopRequireDefault(require("https"));
9
+
10
+ var _nodeFetch = _interopRequireDefault(require("node-fetch"));
9
11
 
10
12
  var _express = _interopRequireDefault(require("express"));
11
13
 
14
+ var _httpsProxyAgent = _interopRequireDefault(require("https-proxy-agent"));
15
+
16
+ var _bodyParser = require("body-parser");
17
+
12
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
19
 
14
20
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
21
 
22
+ // FUTURE: we should be able to overwrite this
23
+ const REGISTRY_DOMAIN = 'https://registry.npmjs.org';
24
+ exports.REGISTRY_DOMAIN = REGISTRY_DOMAIN;
25
+
16
26
  class ProxyAudit {
17
27
  constructor(config, options) {
18
28
  _defineProperty(this, "enabled", void 0);
@@ -28,23 +38,48 @@ class ProxyAudit {
28
38
 
29
39
  register_middlewares(app, auth) {
30
40
  const fetchAudit = (req, res) => {
41
+ var _auth$config;
42
+
31
43
  const headers = req.headers;
32
- headers.host = 'https://registry.npmjs.org/';
33
- const requestOptions = {
34
- url: 'https://registry.npmjs.org/-/npm/v1/security/audits',
35
- method: req.method,
36
- proxy: auth.config.https_proxy,
37
- req,
38
- strictSSL: this.strict_ssl
44
+ headers['host'] = 'registry.npmjs.org';
45
+ headers['content-encoding'] = 'gzip,deflate,br';
46
+ let requestOptions = {
47
+ agent: new _https.default.Agent({
48
+ rejectUnauthorized: this.strict_ssl
49
+ }),
50
+ body: JSON.stringify(req.body),
51
+ headers,
52
+ method: req.method
39
53
  };
40
- req.pipe((0, _request.default)(requestOptions)).on('error', err => {
41
- if (typeof res.report_error === 'function') {
42
- return res.report_error(err);
43
- }
44
54
 
45
- this.logger.error(err);
46
- return res.status(500).end();
47
- }).pipe(res);
55
+ if (auth !== null && auth !== void 0 && (_auth$config = auth.config) !== null && _auth$config !== void 0 && _auth$config.https_proxy) {
56
+ var _auth$config2;
57
+
58
+ // we should check whether this works fine after this migration
59
+ // please notify if anyone is having issues
60
+ const agent = (0, _httpsProxyAgent.default)(auth === null || auth === void 0 ? void 0 : (_auth$config2 = auth.config) === null || _auth$config2 === void 0 ? void 0 : _auth$config2.https_proxy);
61
+ requestOptions = Object.assign({}, requestOptions, {
62
+ agent
63
+ });
64
+ }
65
+
66
+ (async () => {
67
+ try {
68
+ const auditEndpoint = `${REGISTRY_DOMAIN}${req.baseUrl}${req.route.path}`;
69
+ this.logger.debug('fetching audit from ' + auditEndpoint);
70
+ const response = await (0, _nodeFetch.default)(auditEndpoint, requestOptions);
71
+
72
+ if (response.ok) {
73
+ res.status(response.status).send(await response.json());
74
+ } else {
75
+ this.logger.warn('could not fetch audit: ' + JSON.stringify(await response.json()));
76
+ res.status(response.status).end();
77
+ }
78
+ } catch (error) {
79
+ this.logger.warn('could not fetch audit: ' + error);
80
+ res.status(500).end();
81
+ }
82
+ })();
48
83
  };
49
84
 
50
85
  const handleAudit = (req, res) => {
@@ -61,12 +96,19 @@ class ProxyAudit {
61
96
  /* eslint new-cap:off */
62
97
 
63
98
 
64
- router.post('/audits', handleAudit);
65
- router.post('/audits/quick', handleAudit);
99
+ router.post('/audits', (0, _bodyParser.json)({
100
+ limit: '10mb'
101
+ }), handleAudit);
102
+ router.post('/audits/quick', (0, _bodyParser.json)({
103
+ limit: '10mb'
104
+ }), handleAudit);
105
+ router.post('/advisories/bulk', (0, _bodyParser.json)({
106
+ limit: '10mb'
107
+ }), handleAudit);
66
108
  app.use('/-/npm/v1/security', router);
67
109
  }
68
110
 
69
111
  }
70
112
 
71
113
  exports.default = ProxyAudit;
72
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hdWRpdC50cyJdLCJuYW1lcyI6WyJQcm94eUF1ZGl0IiwiY29uc3RydWN0b3IiLCJjb25maWciLCJvcHRpb25zIiwiZW5hYmxlZCIsInN0cmljdF9zc2wiLCJ1bmRlZmluZWQiLCJsb2dnZXIiLCJyZWdpc3Rlcl9taWRkbGV3YXJlcyIsImFwcCIsImF1dGgiLCJmZXRjaEF1ZGl0IiwicmVxIiwicmVzIiwiaGVhZGVycyIsImhvc3QiLCJyZXF1ZXN0T3B0aW9ucyIsInVybCIsIm1ldGhvZCIsInByb3h5IiwiaHR0cHNfcHJveHkiLCJzdHJpY3RTU0wiLCJwaXBlIiwib24iLCJlcnIiLCJyZXBvcnRfZXJyb3IiLCJlcnJvciIsInN0YXR1cyIsImVuZCIsImhhbmRsZUF1ZGl0Iiwicm91dGVyIiwiZXhwcmVzcyIsIlJvdXRlciIsInBvc3QiLCJ1c2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7Ozs7O0FBS2UsTUFBTUEsVUFBTixDQUEyRDtBQUtqRUMsRUFBQUEsV0FBUCxDQUFtQkMsTUFBbkIsRUFBd0NDLE9BQXhDLEVBQTZFO0FBQUE7O0FBQUE7O0FBQUE7O0FBQzNFLFNBQUtDLE9BQUwsR0FBZUYsTUFBTSxDQUFDRSxPQUFQLElBQWtCLEtBQWpDO0FBQ0EsU0FBS0MsVUFBTCxHQUFrQkgsTUFBTSxDQUFDRyxVQUFQLEtBQXNCQyxTQUF0QixHQUFrQ0osTUFBTSxDQUFDRyxVQUF6QyxHQUFzRCxJQUF4RTtBQUNBLFNBQUtFLE1BQUwsR0FBY0osT0FBTyxDQUFDSSxNQUF0QjtBQUNEOztBQUVNQyxFQUFBQSxvQkFBUCxDQUE0QkMsR0FBNUIsRUFBc0NDLElBQXRDLEVBQTJFO0FBQ3pFLFVBQU1DLFVBQVUsR0FBRyxDQUFDQyxHQUFELEVBQWVDLEdBQWYsS0FBcUU7QUFDdEYsWUFBTUMsT0FBTyxHQUFHRixHQUFHLENBQUNFLE9BQXBCO0FBQ0FBLE1BQUFBLE9BQU8sQ0FBQ0MsSUFBUixHQUFlLDZCQUFmO0FBRUEsWUFBTUMsY0FBYyxHQUFHO0FBQ3JCQyxRQUFBQSxHQUFHLEVBQUUscURBRGdCO0FBRXJCQyxRQUFBQSxNQUFNLEVBQUVOLEdBQUcsQ0FBQ00sTUFGUztBQUdyQkMsUUFBQUEsS0FBSyxFQUFFVCxJQUFJLENBQUNSLE1BQUwsQ0FBWWtCLFdBSEU7QUFJckJSLFFBQUFBLEdBSnFCO0FBS3JCUyxRQUFBQSxTQUFTLEVBQUUsS0FBS2hCO0FBTEssT0FBdkI7QUFRQU8sTUFBQUEsR0FBRyxDQUNBVSxJQURILENBQ1Esc0JBQVFOLGNBQVIsQ0FEUixFQUVHTyxFQUZILENBRU0sT0FGTixFQUVlQyxHQUFHLElBQUk7QUFDbEIsWUFBSSxPQUFPWCxHQUFHLENBQUNZLFlBQVgsS0FBNEIsVUFBaEMsRUFBNEM7QUFDMUMsaUJBQU9aLEdBQUcsQ0FBQ1ksWUFBSixDQUFpQkQsR0FBakIsQ0FBUDtBQUNEOztBQUNELGFBQUtqQixNQUFMLENBQVltQixLQUFaLENBQWtCRixHQUFsQjtBQUNBLGVBQU9YLEdBQUcsQ0FBQ2MsTUFBSixDQUFXLEdBQVgsRUFBZ0JDLEdBQWhCLEVBQVA7QUFDRCxPQVJILEVBU0dOLElBVEgsQ0FTUVQsR0FUUjtBQVVELEtBdEJEOztBQXdCQSxVQUFNZ0IsV0FBVyxHQUFHLENBQUNqQixHQUFELEVBQWVDLEdBQWYsS0FBdUM7QUFDekQsVUFBSSxLQUFLVCxPQUFULEVBQWtCO0FBQ2hCTyxRQUFBQSxVQUFVLENBQUNDLEdBQUQsRUFBTUMsR0FBTixDQUFWO0FBQ0QsT0FGRCxNQUVPO0FBQ0xBLFFBQUFBLEdBQUcsQ0FBQ2MsTUFBSixDQUFXLEdBQVgsRUFBZ0JDLEdBQWhCO0FBQ0Q7QUFDRixLQU5EO0FBUUE7OztBQUNBLFVBQU1FLE1BQU0sR0FBR0MsaUJBQVFDLE1BQVIsRUFBZjtBQUNBOzs7QUFDQUYsSUFBQUEsTUFBTSxDQUFDRyxJQUFQLENBQVksU0FBWixFQUF1QkosV0FBdkI7QUFFQUMsSUFBQUEsTUFBTSxDQUFDRyxJQUFQLENBQVksZUFBWixFQUE2QkosV0FBN0I7QUFFQXBCLElBQUFBLEdBQUcsQ0FBQ3lCLEdBQUosQ0FBUSxvQkFBUixFQUE4QkosTUFBOUI7QUFDRDs7QUFwRHVFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlcXVlc3QgZnJvbSAncmVxdWVzdCc7XG5pbXBvcnQgZXhwcmVzcywgeyBSZXF1ZXN0LCBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgTG9nZ2VyLCBJUGx1Z2luTWlkZGxld2FyZSwgSUJhc2ljQXV0aCwgUGx1Z2luT3B0aW9ucyB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgeyBDb25maWdBdWRpdCB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcm94eUF1ZGl0IGltcGxlbWVudHMgSVBsdWdpbk1pZGRsZXdhcmU8Q29uZmlnQXVkaXQ+IHtcbiAgcHVibGljIGVuYWJsZWQ6IGJvb2xlYW47XG4gIHB1YmxpYyBsb2dnZXI6IExvZ2dlcjtcbiAgcHVibGljIHN0cmljdF9zc2w6IGJvb2xlYW47XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvbmZpZzogQ29uZmlnQXVkaXQsIG9wdGlvbnM6IFBsdWdpbk9wdGlvbnM8Q29uZmlnQXVkaXQ+KSB7XG4gICAgdGhpcy5lbmFibGVkID0gY29uZmlnLmVuYWJsZWQgfHwgZmFsc2U7XG4gICAgdGhpcy5zdHJpY3Rfc3NsID0gY29uZmlnLnN0cmljdF9zc2wgIT09IHVuZGVmaW5lZCA/IGNvbmZpZy5zdHJpY3Rfc3NsIDogdHJ1ZTtcbiAgICB0aGlzLmxvZ2dlciA9IG9wdGlvbnMubG9nZ2VyO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyX21pZGRsZXdhcmVzKGFwcDogYW55LCBhdXRoOiBJQmFzaWNBdXRoPENvbmZpZ0F1ZGl0Pik6IHZvaWQge1xuICAgIGNvbnN0IGZldGNoQXVkaXQgPSAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlICYgeyByZXBvcnRfZXJyb3I/OiBGdW5jdGlvbiB9KTogdm9pZCA9PiB7XG4gICAgICBjb25zdCBoZWFkZXJzID0gcmVxLmhlYWRlcnM7XG4gICAgICBoZWFkZXJzLmhvc3QgPSAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvJztcblxuICAgICAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgICAgIHVybDogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLy0vbnBtL3YxL3NlY3VyaXR5L2F1ZGl0cycsXG4gICAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgICAgcHJveHk6IGF1dGguY29uZmlnLmh0dHBzX3Byb3h5LFxuICAgICAgICByZXEsXG4gICAgICAgIHN0cmljdFNTTDogdGhpcy5zdHJpY3Rfc3NsLFxuICAgICAgfTtcblxuICAgICAgcmVxXG4gICAgICAgIC5waXBlKHJlcXVlc3QocmVxdWVzdE9wdGlvbnMpKVxuICAgICAgICAub24oJ2Vycm9yJywgZXJyID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHJlcy5yZXBvcnRfZXJyb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiByZXMucmVwb3J0X2Vycm9yKGVycik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGVycik7XG4gICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5lbmQoKTtcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUocmVzKTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlQXVkaXQgPSAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKTogdm9pZCA9PiB7XG4gICAgICBpZiAodGhpcy5lbmFibGVkKSB7XG4gICAgICAgIGZldGNoQXVkaXQocmVxLCByZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzLnN0YXR1cyg1MDApLmVuZCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvKiBlc2xpbnQgbmV3LWNhcDpvZmYgKi9cbiAgICBjb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuICAgIC8qIGVzbGludCBuZXctY2FwOm9mZiAqL1xuICAgIHJvdXRlci5wb3N0KCcvYXVkaXRzJywgaGFuZGxlQXVkaXQpO1xuXG4gICAgcm91dGVyLnBvc3QoJy9hdWRpdHMvcXVpY2snLCBoYW5kbGVBdWRpdCk7XG5cbiAgICBhcHAudXNlKCcvLS9ucG0vdjEvc2VjdXJpdHknLCByb3V0ZXIpO1xuICB9XG59XG4iXX0=
114
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/audit.ts"],"names":["REGISTRY_DOMAIN","ProxyAudit","constructor","config","options","enabled","strict_ssl","undefined","logger","register_middlewares","app","auth","fetchAudit","req","res","headers","requestOptions","agent","https","Agent","rejectUnauthorized","body","JSON","stringify","method","https_proxy","Object","assign","auditEndpoint","baseUrl","route","path","debug","response","ok","status","send","json","warn","end","error","handleAudit","router","express","Router","post","limit","use"],"mappings":"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","sourcesContent":["import https from 'https';\nimport fetch from 'node-fetch';\nimport express, { Request, Response } from 'express';\nimport createHttpsProxyAgent from 'https-proxy-agent';\nimport { json as jsonParser } from 'body-parser';\nimport { Logger, IPluginMiddleware, IBasicAuth, PluginOptions } from '@verdaccio/types';\n\nimport { ConfigAudit } from './types';\n\n// FUTURE: we should be able to overwrite this\nexport const REGISTRY_DOMAIN = 'https://registry.npmjs.org';\n\nexport default class ProxyAudit implements IPluginMiddleware<ConfigAudit> {\n public enabled: boolean;\n public logger: Logger;\n public strict_ssl: boolean;\n\n public constructor(config: ConfigAudit, options: PluginOptions<ConfigAudit>) {\n this.enabled = config.enabled || false;\n this.strict_ssl = config.strict_ssl !== undefined ? config.strict_ssl : true;\n this.logger = options.logger;\n }\n\n public register_middlewares(app: any, auth: IBasicAuth<ConfigAudit>): void {\n const fetchAudit = (req: Request, res: Response & { report_error?: Function }): void => {\n const headers = req.headers;\n\n headers['host'] = 'registry.npmjs.org';\n headers['content-encoding'] = 'gzip,deflate,br';\n\n let requestOptions: any = {\n agent: new https.Agent({ rejectUnauthorized: this.strict_ssl }),\n body: JSON.stringify(req.body),\n headers,\n method: req.method,\n };\n\n if (auth?.config?.https_proxy) {\n // we should check whether this works fine after this migration\n // please notify if anyone is having issues\n const agent = createHttpsProxyAgent(auth?.config?.https_proxy);\n requestOptions = Object.assign({}, requestOptions, {\n agent,\n });\n }\n\n (async () => {\n try {\n const auditEndpoint = `${REGISTRY_DOMAIN}${req.baseUrl}${req.route.path}`;\n this.logger.debug('fetching audit from ' + auditEndpoint);\n\n const response = await fetch(auditEndpoint, requestOptions);\n\n if (response.ok) {\n res.status(response.status).send(await response.json());\n } else {\n this.logger.warn('could not fetch audit: ' + JSON.stringify(await response.json()));\n res.status(response.status).end();\n }\n } catch (error) {\n this.logger.warn('could not fetch audit: ' + error);\n res.status(500).end();\n }\n })();\n };\n\n const handleAudit = (req: Request, res: Response): void => {\n if (this.enabled) {\n fetchAudit(req, res);\n } else {\n res.status(500).end();\n }\n };\n\n /* eslint new-cap:off */\n const router = express.Router();\n /* eslint new-cap:off */\n\n router.post('/audits', jsonParser({ limit: '10mb' }), handleAudit);\n router.post('/audits/quick', jsonParser({ limit: '10mb' }), handleAudit);\n\n router.post('/advisories/bulk', jsonParser({ limit: '10mb' }), handleAudit);\n\n app.use('/-/npm/v1/security', router);\n }\n}\n"],"file":"audit.js"}
package/lib/index.js CHANGED
@@ -19,4 +19,4 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
19
19
 
20
20
  var _default = _audit.default;
21
21
  exports.default = _default;
22
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJBdWRpdFBsdWdpbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOzs7O2VBSWVBLGMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQXVkaXRQbHVnaW4gZnJvbSAnLi9hdWRpdCc7XG5pbXBvcnQgeyBDb25maWdBdWRpdCB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgeyBDb25maWdBdWRpdCB9O1xuXG5leHBvcnQgZGVmYXVsdCBBdWRpdFBsdWdpbjtcbiJdfQ==
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"names":["AuditPlugin"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;;;eAIeA,c","sourcesContent":["import AuditPlugin from './audit';\nimport { ConfigAudit } from './types';\n\nexport { ConfigAudit };\n\nexport default AuditPlugin;\n"],"file":"index.js"}
package/lib/types.js CHANGED
@@ -1,2 +1,6 @@
1
1
  "use strict";
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0=
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "verdaccio-audit",
3
- "version": "10.0.0",
3
+ "version": "10.1.0",
4
4
  "description": "Verdaccio Middleware plugin to bypass npmjs audit",
5
5
  "keywords": [
6
6
  "verdaccio",
@@ -29,27 +29,24 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "express": "4.17.1",
32
- "request": "2.88.2"
32
+ "https-proxy-agent": "5.0.0",
33
+ "body-parser": "1.19.0",
34
+ "node-fetch": "2.6.6"
33
35
  },
34
36
  "devDependencies": {
35
- "@verdaccio/babel-preset": "^10.0.0",
36
- "@verdaccio/eslint-config": "^10.0.0",
37
- "@verdaccio/types": "^10.0.0"
38
- },
39
- "scripts": {
40
- "build": "npm run build:types && npm run build:js",
41
- "build:js": "babel src/ --out-dir lib --extensions \".ts,.tsx\" --source-maps inline",
42
- "build:types": "tsc --emitDeclarationOnly",
43
- "coverage:publish": "codecov --root=../../ -F plugins",
44
- "lint": "eslint \"**/*.{js,ts}\"",
45
- "lint:stage": "lint-staged",
46
- "test": "jest",
47
- "type-check": "tsc --noEmit",
48
- "type-check:watch": "npm run type-check -- --watch"
37
+ "@verdaccio/types": "10.1.0"
49
38
  },
50
39
  "funding": {
51
40
  "type": "opencollective",
52
41
  "url": "https://opencollective.com/verdaccio"
53
42
  },
54
- "gitHead": "e33b0509f6dcb10c9b893fdcd3846ca69eca0bd9"
55
- }
43
+ "scripts": {
44
+ "clean": "rimraf ./build",
45
+ "test": "cross-env NODE_ENV=test BABEL_ENV=test jest",
46
+ "type-check": "tsc --noEmit -p tsconfig.build.json",
47
+ "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json",
48
+ "build:js": "babel src/ --out-dir lib/ --copy-files --extensions \".ts,.tsx\" --source-maps",
49
+ "watch": "pnpm build:js -- --watch",
50
+ "build": "pnpm run build:js && pnpm run build:types"
51
+ }
52
+ }
package/CHANGELOG.md DELETED
@@ -1,356 +0,0 @@
1
- # Change Log
2
-
3
- All notable changes to this project will be documented in this file.
4
- See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
-
6
- # [10.0.0](https://github.com/verdaccio/monorepo/compare/v9.7.5...v10.0.0) (2021-03-29)
7
-
8
- **Note:** Version bump only for package verdaccio-audit
9
-
10
-
11
-
12
-
13
-
14
- ## [9.7.3](https://github.com/verdaccio/monorepo/compare/v9.7.2...v9.7.3) (2020-07-30)
15
-
16
-
17
- ### Bug Fixes
18
-
19
- * update marked / request security vulnerability ([#378](https://github.com/verdaccio/monorepo/issues/378)) ([4188e08](https://github.com/verdaccio/monorepo/commit/4188e088f42d0f6e090c948b869312ba1f30cd79))
20
-
21
-
22
-
23
-
24
-
25
- ## [9.7.2](https://github.com/verdaccio/monorepo/compare/v9.7.1...v9.7.2) (2020-07-20)
26
-
27
- **Note:** Version bump only for package verdaccio-audit
28
-
29
-
30
-
31
-
32
-
33
- ## [9.7.1](https://github.com/verdaccio/monorepo/compare/v9.7.0...v9.7.1) (2020-07-10)
34
-
35
- **Note:** Version bump only for package verdaccio-audit
36
-
37
-
38
-
39
-
40
-
41
- # [9.7.0](https://github.com/verdaccio/monorepo/compare/v9.6.1...v9.7.0) (2020-06-24)
42
-
43
- **Note:** Version bump only for package verdaccio-audit
44
-
45
-
46
-
47
-
48
-
49
- ## [9.6.1](https://github.com/verdaccio/monorepo/compare/v9.6.0...v9.6.1) (2020-06-07)
50
-
51
- **Note:** Version bump only for package verdaccio-audit
52
-
53
-
54
-
55
-
56
-
57
- # [9.5.0](https://github.com/verdaccio/monorepo/compare/v9.4.1...v9.5.0) (2020-05-02)
58
-
59
- **Note:** Version bump only for package verdaccio-audit
60
-
61
-
62
-
63
-
64
-
65
- # [9.4.0](https://github.com/verdaccio/monorepo/compare/v9.3.4...v9.4.0) (2020-03-21)
66
-
67
- **Note:** Version bump only for package verdaccio-audit
68
-
69
-
70
-
71
-
72
-
73
- ## [9.3.2](https://github.com/verdaccio/monorepo/compare/v9.3.1...v9.3.2) (2020-03-08)
74
-
75
- **Note:** Version bump only for package verdaccio-audit
76
-
77
-
78
-
79
-
80
-
81
- ## [9.3.1](https://github.com/verdaccio/monorepo/compare/v9.3.0...v9.3.1) (2020-02-23)
82
-
83
- **Note:** Version bump only for package verdaccio-audit
84
-
85
-
86
-
87
-
88
-
89
- # [9.3.0](https://github.com/verdaccio/monorepo/compare/v9.2.0...v9.3.0) (2020-01-29)
90
-
91
- **Note:** Version bump only for package verdaccio-audit
92
-
93
-
94
-
95
-
96
-
97
- # [9.0.0](https://github.com/verdaccio/monorepo/compare/v8.5.3...v9.0.0) (2020-01-07)
98
-
99
- **Note:** Version bump only for package verdaccio-audit
100
-
101
-
102
-
103
-
104
-
105
- ## [8.5.2](https://github.com/verdaccio/monorepo/compare/v8.5.1...v8.5.2) (2019-12-25)
106
-
107
- **Note:** Version bump only for package verdaccio-audit
108
-
109
-
110
-
111
-
112
-
113
- ## [8.5.1](https://github.com/verdaccio/monorepo/compare/v8.5.0...v8.5.1) (2019-12-24)
114
-
115
- **Note:** Version bump only for package verdaccio-audit
116
-
117
-
118
-
119
-
120
-
121
- # [8.5.0](https://github.com/verdaccio/monorepo/compare/v8.4.2...v8.5.0) (2019-12-22)
122
-
123
- **Note:** Version bump only for package verdaccio-audit
124
-
125
-
126
-
127
-
128
-
129
- ## [8.4.2](https://github.com/verdaccio/monorepo/compare/v8.4.1...v8.4.2) (2019-11-23)
130
-
131
- **Note:** Version bump only for package verdaccio-audit
132
-
133
-
134
-
135
-
136
-
137
- ## [8.4.1](https://github.com/verdaccio/monorepo/compare/v8.4.0...v8.4.1) (2019-11-22)
138
-
139
- **Note:** Version bump only for package verdaccio-audit
140
-
141
-
142
-
143
-
144
-
145
- # [8.4.0](https://github.com/verdaccio/monorepo/compare/v8.3.0...v8.4.0) (2019-11-22)
146
-
147
- **Note:** Version bump only for package verdaccio-audit
148
-
149
-
150
-
151
-
152
-
153
- # [8.3.0](https://github.com/verdaccio/monorepo/compare/v8.2.0...v8.3.0) (2019-10-27)
154
-
155
- **Note:** Version bump only for package verdaccio-audit
156
-
157
-
158
-
159
-
160
-
161
- # [8.2.0](https://github.com/verdaccio/monorepo/compare/v8.2.0-next.0...v8.2.0) (2019-10-23)
162
-
163
- **Note:** Version bump only for package verdaccio-audit
164
-
165
-
166
-
167
-
168
-
169
- # [8.2.0-next.0](https://github.com/verdaccio/monorepo/compare/v8.1.4...v8.2.0-next.0) (2019-10-08)
170
-
171
-
172
- ### Bug Fixes
173
-
174
- * fixed lint errors ([c80e915](https://github.com/verdaccio/monorepo/commit/c80e915))
175
-
176
-
177
-
178
-
179
-
180
- ## [8.1.4](https://github.com/verdaccio/monorepo/compare/v8.1.3...v8.1.4) (2019-09-30)
181
-
182
- **Note:** Version bump only for package verdaccio-audit
183
-
184
-
185
-
186
-
187
-
188
- ## [8.1.3](https://github.com/verdaccio/monorepo/compare/v8.1.2...v8.1.3) (2019-09-30)
189
-
190
- **Note:** Version bump only for package verdaccio-audit
191
-
192
-
193
-
194
-
195
-
196
- ## [8.1.2](https://github.com/verdaccio/monorepo/compare/v8.1.1...v8.1.2) (2019-09-29)
197
-
198
- **Note:** Version bump only for package verdaccio-audit
199
-
200
-
201
-
202
-
203
-
204
- ## [8.1.1](https://github.com/verdaccio/monorepo/compare/v8.1.0...v8.1.1) (2019-09-26)
205
-
206
- **Note:** Version bump only for package verdaccio-audit
207
-
208
-
209
-
210
-
211
-
212
- # [8.1.0](https://github.com/verdaccio/monorepo/compare/v8.0.1-next.1...v8.1.0) (2019-09-07)
213
-
214
- **Note:** Version bump only for package verdaccio-audit
215
-
216
-
217
-
218
-
219
-
220
- ## [8.0.1-next.1](https://github.com/verdaccio/monorepo/compare/v8.0.1-next.0...v8.0.1-next.1) (2019-08-29)
221
-
222
- **Note:** Version bump only for package verdaccio-audit
223
-
224
-
225
-
226
-
227
-
228
- ## [8.0.1-next.0](https://github.com/verdaccio/monorepo/compare/v8.0.0...v8.0.1-next.0) (2019-08-29)
229
-
230
- **Note:** Version bump only for package verdaccio-audit
231
-
232
-
233
-
234
-
235
-
236
- # [8.0.0](https://github.com/verdaccio/monorepo/compare/v8.0.0-next.4...v8.0.0) (2019-08-22)
237
-
238
- **Note:** Version bump only for package verdaccio-audit
239
-
240
-
241
-
242
-
243
-
244
- # [8.0.0-next.4](https://github.com/verdaccio/monorepo/compare/v8.0.0-next.3...v8.0.0-next.4) (2019-08-18)
245
-
246
- **Note:** Version bump only for package verdaccio-audit
247
-
248
-
249
-
250
-
251
-
252
- # [8.0.0-next.2](https://github.com/verdaccio/monorepo/compare/v8.0.0-next.1...v8.0.0-next.2) (2019-08-03)
253
-
254
- **Note:** Version bump only for package verdaccio-audit
255
-
256
-
257
-
258
-
259
-
260
- # [8.0.0-next.1](https://github.com/verdaccio/monorepo/compare/v8.0.0-next.0...v8.0.0-next.1) (2019-08-01)
261
-
262
- **Note:** Version bump only for package verdaccio-audit
263
-
264
-
265
-
266
-
267
-
268
- # [8.0.0-next.0](https://github.com/verdaccio/monorepo/compare/v2.0.0...v8.0.0-next.0) (2019-08-01)
269
-
270
-
271
- ### Bug Fixes
272
-
273
- * on error returns 500 by default ([86bf628](https://github.com/verdaccio/monorepo/commit/86bf628))
274
- * package.json to reduce vulnerabilities ([457a791](https://github.com/verdaccio/monorepo/commit/457a791))
275
-
276
-
277
- ### Features
278
-
279
- * add audit quick endpoint ([5ab2ece](https://github.com/verdaccio/monorepo/commit/5ab2ece))
280
- * migrate to typescript ([caffcd5](https://github.com/verdaccio/monorepo/commit/caffcd5))
281
- * proxy npm audit endpoint ([b11151d](https://github.com/verdaccio/monorepo/commit/b11151d))
282
-
283
-
284
-
285
-
286
-
287
- # Changelog
288
-
289
- All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
290
-
291
- ### [1.2.1](https://github.com/verdaccio/verdaccio-audit/compare/v1.2.0...v1.2.1) (2019-07-29)
292
-
293
-
294
- ### Bug Fixes
295
-
296
- * audit module doesn't support strict_ssl flag ([f7d3f86](https://github.com/verdaccio/verdaccio-audit/commit/f7d3f86))
297
-
298
-
299
- ### Build System
300
-
301
- * update dependencies ([ddaa990](https://github.com/verdaccio/verdaccio-audit/commit/ddaa990))
302
-
303
-
304
-
305
- # [1.2.0](https://github.com/verdaccio/verdaccio-audit/compare/v1.1.0...v1.2.0) (2019-04-06)
306
-
307
-
308
- ### Bug Fixes
309
-
310
- * bad network causes the server down ([2c838b4](https://github.com/verdaccio/verdaccio-audit/commit/2c838b4))
311
- * types error ([16d623e](https://github.com/verdaccio/verdaccio-audit/commit/16d623e))
312
-
313
-
314
- ### Features
315
-
316
- * migrate to typescript ([bec6824](https://github.com/verdaccio/verdaccio-audit/commit/bec6824))
317
-
318
-
319
-
320
- <a name="1.1.0"></a>
321
- # [1.1.0](https://github.com/verdaccio/verdaccio-audit/compare/v1.0.1...v1.1.0) (2019-01-09)
322
-
323
-
324
- ### Features
325
-
326
- * pipe request and response bodies to save memory ([#8](https://github.com/verdaccio/verdaccio-audit/issues/8)) ([0af7363](https://github.com/verdaccio/verdaccio-audit/commit/0af7363))
327
-
328
-
329
-
330
- <a name="1.0.1"></a>
331
- ## [1.0.1](https://github.com/verdaccio/verdaccio-audit/compare/v1.0.0...v1.0.1) (2019-01-09)
332
-
333
-
334
- ### Bug Fixes
335
-
336
- * package.json to reduce vulnerabilities ([bdf35df](https://github.com/verdaccio/verdaccio-audit/commit/bdf35df))
337
-
338
-
339
-
340
- <a name="1.0.0"></a>
341
- # [1.0.0](https://github.com/verdaccio/verdaccio-audit/compare/v0.2.0...v1.0.0) (2018-10-18)
342
-
343
-
344
- ### Features
345
-
346
- * handle 'application/json, application/octet-stream' content types ([cf38a38](https://github.com/verdaccio/verdaccio-audit/commit/cf38a38))
347
-
348
-
349
-
350
- <a name="0.2.0"></a>
351
- # [0.2.0](https://github.com/verdaccio/verdaccio-audit/compare/v0.1.0...v0.2.0) (2018-06-15)
352
-
353
-
354
- ### Features
355
-
356
- * support audit via HTTPS proxy ([5328bc3](https://github.com/verdaccio/verdaccio-audit/commit/5328bc3))