@verdaccio/config 6.0.0-6-next.12 → 6.0.0-6-next.15

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.
Files changed (57) hide show
  1. package/CHANGELOG.md +125 -0
  2. package/build/agent.js +1 -11
  3. package/build/agent.js.map +1 -1
  4. package/build/builder.d.ts +18 -0
  5. package/build/builder.js +77 -0
  6. package/build/builder.js.map +1 -0
  7. package/build/conf/default.yaml +114 -28
  8. package/build/conf/docker.yaml +140 -38
  9. package/build/conf/index.d.ts +4 -0
  10. package/build/conf/index.js +16 -0
  11. package/build/conf/index.js.map +1 -0
  12. package/build/config-path.js.map +1 -1
  13. package/build/config-utils.js.map +1 -1
  14. package/build/config.d.ts +6 -2
  15. package/build/config.js +14 -1
  16. package/build/config.js.map +1 -1
  17. package/build/index.d.ts +3 -1
  18. package/build/index.js +43 -11
  19. package/build/index.js.map +1 -1
  20. package/build/package-access.js +3 -1
  21. package/build/package-access.js.map +1 -1
  22. package/build/parse.d.ts +6 -2
  23. package/build/parse.js +33 -3
  24. package/build/parse.js.map +1 -1
  25. package/build/security.js.map +1 -1
  26. package/build/serverSettings.js.map +1 -1
  27. package/build/token.js.map +1 -1
  28. package/build/uplinks.js +1 -1
  29. package/build/uplinks.js.map +1 -1
  30. package/build/user.js.map +1 -1
  31. package/jest.config.js +10 -1
  32. package/package.json +58 -57
  33. package/src/agent.ts +1 -7
  34. package/src/builder.ts +72 -0
  35. package/src/conf/default.yaml +114 -28
  36. package/src/conf/docker.yaml +140 -38
  37. package/src/conf/index.ts +8 -0
  38. package/src/config.ts +16 -3
  39. package/src/index.ts +3 -1
  40. package/src/package-access.ts +2 -0
  41. package/src/parse.ts +33 -5
  42. package/src/uplinks.ts +1 -1
  43. package/test/__snapshots__/builder.spec.ts.snap +24 -0
  44. package/test/__snapshots__/config-parsing.spec.ts.snap +44 -0
  45. package/test/builder.spec.ts +65 -0
  46. package/test/config-parsing.spec.ts +54 -30
  47. package/test/config-utils.spec.ts +21 -0
  48. package/test/config.spec.ts +8 -7
  49. package/test/partials/config/js/default.js +1 -1
  50. package/test/partials/config/js/from-js-to-yaml.js +15 -0
  51. package/test/partials/config/yaml/storage.yaml +1 -4
  52. package/test/partials/exist/README.md +1 -0
  53. package/test/utils.spec.ts +20 -35
  54. package/build/string.d.ts +0 -1
  55. package/build/string.js +0 -11
  56. package/build/string.js.map +0 -1
  57. package/src/string.ts +0 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,130 @@
1
1
  # @verdaccio/config
2
2
 
3
+ ## 6.0.0-6-next.15
4
+
5
+ ### Major Changes
6
+
7
+ - 292c0a37: feat!: replace deprecated request dependency by got
8
+
9
+ This is a big refactoring of the core, fetching dependencies, improve code, more tests and better stability. This is essential for the next release, will take some time but would allow modularize more the core.
10
+
11
+ ## Notes
12
+
13
+ - Remove deprecated `request` by other `got`, retry improved, custom Agent ( got does not include it built-in)
14
+ - Remove `async` dependency from storage (used by core) it was linked with proxy somehow safe to remove now
15
+ - Refactor with promises instead callback wherever is possible
16
+ - ~Document the API~
17
+ - Improve testing, integration tests
18
+ - Bugfix
19
+ - Clean up old validations
20
+ - Improve performance
21
+
22
+ ## 💥 Breaking changes
23
+
24
+ - Plugin API methods were callbacks based are returning promises, this will break current storage plugins, check documentation for upgrade.
25
+ - Write Tarball, Read Tarball methods parameters change, a new set of options like `AbortController` signals are being provided to the `addAbortSignal` can be internally used with Streams when a request is aborted. eg: `addAbortSignal(signal, fs.createReadStream(pathName));`
26
+ - `@verdaccio/streams` stream abort support is legacy is being deprecated removed
27
+ - Remove AWS and Google Cloud packages for future refactoring [#2574](https://github.com/verdaccio/verdaccio/pull/2574).
28
+
29
+ ### Patch Changes
30
+
31
+ - Updated dependencies [292c0a37]
32
+ - Updated dependencies [a3a209b5]
33
+ - Updated dependencies [00d1d2a1]
34
+ - @verdaccio/core@6.0.0-6-next.6
35
+ - @verdaccio/utils@6.0.0-6-next.12
36
+
37
+ ## 6.0.0-6-next.14
38
+
39
+ ### Minor Changes
40
+
41
+ - d43894e8: feat: rework web header for mobile, add new settings and raw manifest button
42
+
43
+ ### New set of variables to hide features
44
+
45
+ Add set of new variables that allow hide different parts of the UI, buttons, footer or download tarballs. _All are
46
+ enabled by default_.
47
+
48
+ ```yaml
49
+ # login: true <-- already exist but worth the reminder
50
+ # showInfo: true
51
+ # showSettings: true
52
+ # In combination with darkMode you can force specific theme
53
+ # showThemeSwitch: true
54
+ # showFooter: true
55
+ # showSearch: true
56
+ # showDownloadTarball: true
57
+ ```
58
+
59
+ > If you disable `showThemeSwitch` and force `darkMode: true` the local storage settings would be
60
+ > ignored and force all themes to the one in the configuration file.
61
+
62
+ Future could be extended to
63
+
64
+ ### Raw button to display manifest package
65
+
66
+ A new experimental feature (enabled by default), button named RAW to be able navigate on the package manifest directly on the ui, kudos to [react-json-view](https://www.npmjs.com/package/react-json-view) that allows an easy integration, not configurable yet until get more feedback.
67
+
68
+ ```yaml
69
+ showRaw: true
70
+ ```
71
+
72
+ #### Rework header buttons
73
+
74
+ - The header has been rework, the mobile was not looking broken.
75
+ - Removed info button in the header and moved to a dialog
76
+ - Info dialog now contains more information about the project, license and the aid content for Ukrania now is inside of the info modal.
77
+ - Separate settings and info to avoid collapse too much info (for mobile still need some work)
78
+
79
+ - d08fe29d: feat(web): add a config item to web,let the developer can select whet……her enable the html cache
80
+
81
+ ### Patch Changes
82
+
83
+ - @verdaccio/core@6.0.0-6-next.5
84
+
85
+ ## 6.0.0-6-next.13
86
+
87
+ ### Major Changes
88
+
89
+ - 82cb0f2b: feat!: config.logs throw an error, logging config not longer accept array or logs property
90
+
91
+ ### 💥 Breaking change
92
+
93
+ This is valid
94
+
95
+ ```yaml
96
+ log: { type: stdout, format: pretty, level: http }
97
+ ```
98
+
99
+ This is invalid
100
+
101
+ ```yaml
102
+ logs: { type: stdout, format: pretty, level: http }
103
+ ```
104
+
105
+ or
106
+
107
+ ```yaml
108
+ logs:
109
+ - [{ type: stdout, format: pretty, level: http }]
110
+ ```
111
+
112
+ ### Minor Changes
113
+
114
+ - 5167bb52: feat: ui search support for remote, local and private packages
115
+
116
+ The command `npm search` search globally and return all matches, with this improvement the user interface
117
+ is powered with the same capabilities.
118
+
119
+ The UI also tag where is the origin the package with a tag, also provide the latest version and description of the package.
120
+
121
+ ### Patch Changes
122
+
123
+ - Updated dependencies [82cb0f2b]
124
+ - Updated dependencies [5167bb52]
125
+ - @verdaccio/core@6.0.0-6-next.5
126
+ - @verdaccio/utils@6.0.0-6-next.11
127
+
3
128
  ## 6.0.0-6-next.12
4
129
 
5
130
  ### Patch Changes
package/build/agent.js CHANGED
@@ -5,19 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getUserAgent = getUserAgent;
7
7
 
8
- var _assert = _interopRequireDefault(require("assert"));
9
-
10
- var _lodash = _interopRequireDefault(require("lodash"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
8
  const pkgVersion = require('../package.json').version;
15
9
 
16
- const pkgName = require('../package.json').name;
17
-
18
10
  function getUserAgent() {
19
- (0, _assert.default)(_lodash.default.isString(pkgName));
20
- (0, _assert.default)(_lodash.default.isString(pkgVersion));
21
- return `${pkgName}/${pkgVersion}`;
11
+ return `verdaccio/${pkgVersion}`;
22
12
  }
23
13
  //# sourceMappingURL=agent.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/agent.ts"],"names":["pkgVersion","require","version","pkgName","name","getUserAgent","_","isString"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA,MAAMA,UAAU,GAAGC,OAAO,CAAC,iBAAD,CAAP,CAA2BC,OAA9C;;AACA,MAAMC,OAAO,GAAGF,OAAO,CAAC,iBAAD,CAAP,CAA2BG,IAA3C;;AAEO,SAASC,YAAT,GAAgC;AACrC,uBAAOC,gBAAEC,QAAF,CAAWJ,OAAX,CAAP;AACA,uBAAOG,gBAAEC,QAAF,CAAWP,UAAX,CAAP;AACA,SAAQ,GAAEG,OAAQ,IAAGH,UAAW,EAAhC;AACD","sourcesContent":["import assert from 'assert';\nimport _ from 'lodash';\n\nconst pkgVersion = require('../package.json').version;\nconst pkgName = require('../package.json').name;\n\nexport function getUserAgent(): string {\n assert(_.isString(pkgName));\n assert(_.isString(pkgVersion));\n return `${pkgName}/${pkgVersion}`;\n}\n"],"file":"agent.js"}
1
+ {"version":3,"file":"agent.js","names":["pkgVersion","require","version","getUserAgent"],"sources":["../src/agent.ts"],"sourcesContent":["const pkgVersion = require('../package.json').version;\n\nexport function getUserAgent(): string {\n return `verdaccio/${pkgVersion}`;\n}\n"],"mappings":";;;;;;;AAAA,MAAMA,UAAU,GAAGC,OAAO,CAAC,iBAAD,CAAP,CAA2BC,OAA9C;;AAEO,SAASC,YAAT,GAAgC;EACrC,OAAQ,aAAYH,UAAW,EAA/B;AACD"}
@@ -0,0 +1,18 @@
1
+ import { AuthConf, ConfigYaml, LoggerConfItem, PackageAccessYaml, Security, UpLinkConf } from '@verdaccio/types';
2
+ /**
3
+ * Helper configuration builder constructor, used to build the configuration for testing or
4
+ * programatically creating a configuration.
5
+ */
6
+ export default class ConfigBuilder {
7
+ private config;
8
+ constructor(config?: Partial<ConfigYaml>);
9
+ static build(config?: Partial<ConfigYaml>): ConfigBuilder;
10
+ addPackageAccess(pattern: string, pkgAccess: PackageAccessYaml): this;
11
+ addUplink(id: string, uplink: UpLinkConf): this;
12
+ addSecurity(security: Partial<Security>): this;
13
+ addAuth(auth: Partial<AuthConf>): this;
14
+ addLogger(log: LoggerConfItem): this;
15
+ addStorage(storage: string | object): this;
16
+ getConfig(): ConfigYaml;
17
+ getAsYaml(): string;
18
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _lodash = require("lodash");
9
+
10
+ var _ = require(".");
11
+
12
+ /**
13
+ * Helper configuration builder constructor, used to build the configuration for testing or
14
+ * programatically creating a configuration.
15
+ */
16
+ class ConfigBuilder {
17
+ constructor(config) {
18
+ // @ts-ignore
19
+ this.config = config ?? {
20
+ uplinks: {},
21
+ packages: {},
22
+ security: {}
23
+ };
24
+ }
25
+
26
+ static build(config) {
27
+ return new ConfigBuilder(config);
28
+ }
29
+
30
+ addPackageAccess(pattern, pkgAccess) {
31
+ // @ts-ignore
32
+ this.config.packages[pattern] = pkgAccess;
33
+ return this;
34
+ }
35
+
36
+ addUplink(id, uplink) {
37
+ this.config.uplinks[id] = uplink;
38
+ return this;
39
+ }
40
+
41
+ addSecurity(security) {
42
+ this.config.security = (0, _lodash.merge)(this.config.security, security);
43
+ return this;
44
+ }
45
+
46
+ addAuth(auth) {
47
+ this.config.auth = (0, _lodash.merge)(this.config.auth, auth);
48
+ return this;
49
+ }
50
+
51
+ addLogger(log) {
52
+ this.config.log = log;
53
+ return this;
54
+ }
55
+
56
+ addStorage(storage) {
57
+ if (typeof storage === 'string') {
58
+ this.config.storage = storage;
59
+ } else {
60
+ this.config.store = storage;
61
+ }
62
+
63
+ return this;
64
+ }
65
+
66
+ getConfig() {
67
+ return this.config;
68
+ }
69
+
70
+ getAsYaml() {
71
+ return (0, _.fromJStoYAML)(this.config);
72
+ }
73
+
74
+ }
75
+
76
+ exports.default = ConfigBuilder;
77
+ //# sourceMappingURL=builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.js","names":["ConfigBuilder","constructor","config","uplinks","packages","security","build","addPackageAccess","pattern","pkgAccess","addUplink","id","uplink","addSecurity","merge","addAuth","auth","addLogger","log","addStorage","storage","store","getConfig","getAsYaml","fromJStoYAML"],"sources":["../src/builder.ts"],"sourcesContent":["import { merge } from 'lodash';\n\nimport {\n AuthConf,\n ConfigYaml,\n LoggerConfItem,\n PackageAccessYaml,\n Security,\n UpLinkConf,\n} from '@verdaccio/types';\n\nimport { fromJStoYAML } from '.';\n\n/**\n * Helper configuration builder constructor, used to build the configuration for testing or\n * programatically creating a configuration.\n */\nexport default class ConfigBuilder {\n private config: ConfigYaml;\n\n public constructor(config?: Partial<ConfigYaml>) {\n // @ts-ignore\n this.config = config ?? { uplinks: {}, packages: {}, security: {} };\n }\n\n public static build(config?: Partial<ConfigYaml>): ConfigBuilder {\n return new ConfigBuilder(config);\n }\n\n public addPackageAccess(pattern: string, pkgAccess: PackageAccessYaml) {\n // @ts-ignore\n this.config.packages[pattern] = pkgAccess;\n return this;\n }\n\n public addUplink(id: string, uplink: UpLinkConf) {\n this.config.uplinks[id] = uplink;\n return this;\n }\n\n public addSecurity(security: Partial<Security>) {\n this.config.security = merge(this.config.security, security);\n return this;\n }\n\n public addAuth(auth: Partial<AuthConf>) {\n this.config.auth = merge(this.config.auth, auth);\n return this;\n }\n\n public addLogger(log: LoggerConfItem) {\n this.config.log = log;\n return this;\n }\n\n public addStorage(storage: string | object) {\n if (typeof storage === 'string') {\n this.config.storage = storage;\n } else {\n this.config.store = storage;\n }\n return this;\n }\n\n public getConfig(): ConfigYaml {\n return this.config;\n }\n\n public getAsYaml(): string {\n return fromJStoYAML(this.config) as string;\n }\n}\n"],"mappings":";;;;;;;AAAA;;AAWA;;AAEA;AACA;AACA;AACA;AACe,MAAMA,aAAN,CAAoB;EAG1BC,WAAW,CAACC,MAAD,EAA+B;IAC/C;IACA,KAAKA,MAAL,GAAcA,MAAM,IAAI;MAAEC,OAAO,EAAE,EAAX;MAAeC,QAAQ,EAAE,EAAzB;MAA6BC,QAAQ,EAAE;IAAvC,CAAxB;EACD;;EAEkB,OAALC,KAAK,CAACJ,MAAD,EAA8C;IAC/D,OAAO,IAAIF,aAAJ,CAAkBE,MAAlB,CAAP;EACD;;EAEMK,gBAAgB,CAACC,OAAD,EAAkBC,SAAlB,EAAgD;IACrE;IACA,KAAKP,MAAL,CAAYE,QAAZ,CAAqBI,OAArB,IAAgCC,SAAhC;IACA,OAAO,IAAP;EACD;;EAEMC,SAAS,CAACC,EAAD,EAAaC,MAAb,EAAiC;IAC/C,KAAKV,MAAL,CAAYC,OAAZ,CAAoBQ,EAApB,IAA0BC,MAA1B;IACA,OAAO,IAAP;EACD;;EAEMC,WAAW,CAACR,QAAD,EAA8B;IAC9C,KAAKH,MAAL,CAAYG,QAAZ,GAAuB,IAAAS,aAAA,EAAM,KAAKZ,MAAL,CAAYG,QAAlB,EAA4BA,QAA5B,CAAvB;IACA,OAAO,IAAP;EACD;;EAEMU,OAAO,CAACC,IAAD,EAA0B;IACtC,KAAKd,MAAL,CAAYc,IAAZ,GAAmB,IAAAF,aAAA,EAAM,KAAKZ,MAAL,CAAYc,IAAlB,EAAwBA,IAAxB,CAAnB;IACA,OAAO,IAAP;EACD;;EAEMC,SAAS,CAACC,GAAD,EAAsB;IACpC,KAAKhB,MAAL,CAAYgB,GAAZ,GAAkBA,GAAlB;IACA,OAAO,IAAP;EACD;;EAEMC,UAAU,CAACC,OAAD,EAA2B;IAC1C,IAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;MAC/B,KAAKlB,MAAL,CAAYkB,OAAZ,GAAsBA,OAAtB;IACD,CAFD,MAEO;MACL,KAAKlB,MAAL,CAAYmB,KAAZ,GAAoBD,OAApB;IACD;;IACD,OAAO,IAAP;EACD;;EAEME,SAAS,GAAe;IAC7B,OAAO,KAAKpB,MAAZ;EACD;;EAEMqB,SAAS,GAAW;IACzB,OAAO,IAAAC,cAAA,EAAa,KAAKtB,MAAlB,CAAP;EACD;;AArDgC"}
@@ -1,18 +1,20 @@
1
1
  #
2
- # This is the default config file. It allows all users to do anything,
3
- # so don't use it on production systems.
2
+ # This is the default configuration file. It allows all users to do anything,
3
+ # please read carefully the documentation and best practices to
4
+ # improve security.
4
5
  #
5
6
  # Look here for more config file examples:
6
- # https://github.com/verdaccio/verdaccio/tree/master/conf
7
+ # https://github.com/verdaccio/verdaccio/tree/5.x/packages/config/src/conf/default.yaml
7
8
  #
9
+ # Read about the best practices
10
+ # https://verdaccio.org/docs/best
8
11
 
9
12
  # path to a directory with all packages
10
13
  storage: ./storage
11
14
  # path to a directory with plugins to include
12
15
  plugins: ./plugins
13
- # print logs
14
- # logs: ./logs
15
16
 
17
+ # https://verdaccio.org/docs/webui
16
18
  web:
17
19
  title: Verdaccio
18
20
  # comment out to disable gravatar support
@@ -21,6 +23,17 @@ web:
21
23
  # sort_packages: asc
22
24
  # convert your UI to the dark side
23
25
  # darkMode: true
26
+ # html_cache: true
27
+ # by default all features are displayed
28
+ # login: true
29
+ # showInfo: true
30
+ # showSettings: true
31
+ # In combination with darkMode you can force specific theme
32
+ # showThemeSwitch: true
33
+ # showFooter: true
34
+ # showSearch: true
35
+ # showRaw: true
36
+ # showDownloadTarball: true
24
37
  # HTML tags injected after manifest <scripts/>
25
38
  # scriptsBodyAfter:
26
39
  # - '<script type="text/javascript" src="https://my.company.com/customJS.min.js"></script>'
@@ -34,11 +47,8 @@ web:
34
47
  # - '<div id="myId">html before webpack scripts</div>'
35
48
  # Public path for template manifest scripts (only manifest)
36
49
  # publicPath: http://somedomain.org/
37
- # translate your registry, api i18n not available yet
38
- # i18n:
39
- # list of the available translations https://github.com/verdaccio/ui/tree/master/i18n/translations
40
- # web: en-US
41
50
 
51
+ # https://verdaccio.org/docs/configuration#authentication
42
52
  auth:
43
53
  htpasswd:
44
54
  file: ./htpasswd
@@ -46,11 +56,15 @@ auth:
46
56
  # You can set this to -1 to disable registration.
47
57
  # max_users: 1000
48
58
 
59
+ # https://verdaccio.org/docs/configuration#uplinks
49
60
  # a list of other known repositories we can talk to
50
61
  uplinks:
51
62
  npmjs:
52
63
  url: https://registry.npmjs.org/
53
64
 
65
+ # Learn how to protect your packages
66
+ # https://verdaccio.org/docs/protect-your-dependencies/
67
+ # https://verdaccio.org/docs/configuration#packages
54
68
  packages:
55
69
  '@*/*':
56
70
  # scoped packages
@@ -75,32 +89,104 @@ packages:
75
89
  # if package is not available locally, proxy requests to 'npmjs' registry
76
90
  proxy: npmjs
77
91
 
92
+ # To improve your security configuration and avoid dependency confusion
93
+ # consider removing the proxy property for private packages
94
+ # https://verdaccio.org/docs/best#remove-proxy-to-increase-security-at-private-packages
95
+
96
+ # https://verdaccio.org/docs/configuration#server
97
+ # You can specify HTTP/1.1 server keep alive timeout in seconds for incoming connections.
98
+ # A value of 0 makes the http server behave similarly to Node.js versions prior to 8.0.0, which did not have a keep-alive timeout.
99
+ # WORKAROUND: Through given configuration you can workaround following issue https://github.com/verdaccio/verdaccio/issues/301. Set to 0 in case 60 is not enough.
78
100
  server:
79
- # deprecated
80
101
  keepAliveTimeout: 60
81
- # rateLimit:
82
- # windowMs: 1000
83
- # max: 10000
102
+
103
+ # https://verdaccio.org/docs/configuration#offline-publish
104
+ # publish:
105
+ # allow_offline: false
106
+
107
+ # https://verdaccio.org/docs/configuration#url-prefix
108
+ # url_prefix: /verdaccio/
109
+ # VERDACCIO_PUBLIC_URL='https://somedomain.org';
110
+ # url_prefix: '/my_prefix'
111
+ # // url -> https://somedomain.org/my_prefix/
112
+ # VERDACCIO_PUBLIC_URL='https://somedomain.org';
113
+ # url_prefix: '/'
114
+ # // url -> https://somedomain.org/
115
+ # VERDACCIO_PUBLIC_URL='https://somedomain.org/first_prefix';
116
+ # url_prefix: '/second_prefix'
117
+ # // url -> https://somedomain.org/second_prefix/'
118
+
119
+ # https://verdaccio.org/docs/configuration#security
120
+ # security:
121
+ # api:
122
+ # legacy: true
123
+ # jwt:
124
+ # sign:
125
+ # expiresIn: 29d
126
+ # verify:
127
+ # someProp: [value]
128
+ # web:
129
+ # sign:
130
+ # expiresIn: 1h # 1 hour by default
131
+ # verify:
132
+ # someProp: [value]
133
+
134
+ # https://verdaccio.org/docs/configuration#user-rate-limit
135
+ # userRateLimit:
136
+ # windowMs: 50000
137
+ # max: 1000
138
+
139
+ # https://verdaccio.org/docs/configuration#max-body-size
140
+ # max_body_size: 10mb
141
+
142
+ # https://verdaccio.org/docs/configuration#listen-port
143
+ # listen:
144
+ # - localhost:4873 # default value
145
+ # - http://localhost:4873 # same thing
146
+ # - 0.0.0.0:4873 # listen on all addresses (INADDR_ANY)
147
+ # - https://example.org:4873 # if you want to use https
148
+ # - "[::1]:4873" # ipv6
149
+ # - unix:/tmp/verdaccio.sock # unix socket
150
+
151
+ # The HTTPS configuration is useful if you do not consider use a HTTP Proxy
152
+ # https://verdaccio.org/docs/configuration#https
153
+ # https:
154
+ # key: ./path/verdaccio-key.pem
155
+ # cert: ./path/verdaccio-cert.pem
156
+ # ca: ./path/verdaccio-csr.pem
157
+
158
+ # https://verdaccio.org/docs/configuration#proxy
159
+ # http_proxy: http://something.local/
160
+ # https_proxy: https://something.local/
161
+
162
+ # https://verdaccio.org/docs/configuration#notifications
163
+ # notify:
164
+ # method: POST
165
+ # headers: [{ "Content-Type": "application/json" }]
166
+ # endpoint: https://usagge.hipchat.com/v2/room/3729485/notification?auth_token=mySecretToken
167
+ # content: '{"color":"green","message":"New package published: * {{ name }}*","notify":true,"message_format":"text"}'
84
168
 
85
169
  middlewares:
86
170
  audit:
87
171
  enabled: true
88
172
 
173
+ # https://verdaccio.org/docs/logger
89
174
  # log settings
90
- logs:
91
- # Logger as STDOUT
92
- { type: stdout, format: pretty, level: http }
93
- # Logger as STDOUT as JSON
94
- # { type: stdout, format: json, level: http }
95
- # Logger as STDOUT as JSON
96
- # { type: stdout, format: pretty-timestamped, level: http }
97
- # Logger as STDOUT as custom prettifier
98
- # { type: stdout, plugin: { dest: '@verdaccio/logger-prettify' : options: { foo: 1, bar: 2}}, level: http }
99
- # Logger as file
100
- # { type: file, path: verdaccio.log, level: http}
101
- # FIXME: this should be documented
102
- # More info about log rotation https://github.com/pinojs/pino/blob/master/docs/help.md#log-rotation
103
-
104
- # This affect the web and api (not developed yet)
175
+ log: { type: stdout, format: pretty, level: http }
176
+ #experiments:
177
+ # # support for npm token command
178
+ # token: false
179
+ # # disable writing body size to logs, read more on ticket 1912
180
+ # bytesin_off: false
181
+ # # enable tarball URL redirect for hosting tarball with a different server, the tarball_url_redirect can be a template string
182
+ # tarball_url_redirect: 'https://mycdn.com/verdaccio/${packageName}/${filename}'
183
+ # # the tarball_url_redirect can be a function, takes packageName and filename and returns the url, when working with a js configuration file
184
+ # tarball_url_redirect(packageName, filename) {
185
+ # const signedUrl = // generate a signed url
186
+ # return signedUrl;
187
+ # }
188
+
189
+ # translate your registry, api i18n not available yet
105
190
  i18n:
191
+ # list of the available translations https://github.com/verdaccio/verdaccio/blob/master/packages/plugins/ui-theme/src/i18n/ABOUT_TRANSLATIONS.md
106
192
  web: en-US