Compare commits

..

145 Commits

Author SHA1 Message Date
Juan Picado
04c081b8b2 chore: update env 2021-04-04 08:06:50 +02:00
github-actions[bot]
2d2473188d chore: update versions (6-next) (#2162)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2021-04-03 21:32:46 +02:00
Juan Picado
6291f5ee1e chore: remove unused code 2021-04-03 21:25:16 +02:00
Juan Picado
2aa73bb083 chore: add missing dep 2021-04-03 21:14:22 +02:00
Juan Picado
62c5b919a3 chore: fix lint 2021-04-03 21:11:49 +02:00
Juan Picado
44c8f823b4 chore: fix format 2021-04-03 21:06:26 +02:00
Juan Picado
a219e1e11c chore: fix changeset 2021-04-03 21:04:31 +02:00
Juan Picado
16f58b93c1 chore: update versions 2021-04-03 21:00:23 +02:00
Juan Picado
08aade9a68 feat: use clipanion over commander (#2159)
* feat: use clipanion over commander

* chore: update

* chore: add missing options

* chore: fix arguments

* chore: format code

* chore: update

* chore: fix missing node conf

* chore: add version

* Update setup.ts

* chore: fix config flag

* chore: add changeset
2021-04-03 20:52:17 +02:00
Juan Picado
044eb36ed2 chore: update with master (#2158) 2021-04-03 20:52:17 +02:00
Paola Morales
338076971a Migrate fs-memory library to memfs (#2149)
* Update package.json

* Update MemoryFileSystem dependency

* Update storage.ts
2021-04-03 20:52:16 +02:00
Paola Morales
cb2281a50d feat!: async storage plugin bootstrap (#2144)
* feat: async storage plugin bootstrap

* refactor fs.promise to promisify on node12

* Add changeset

* Update big-lobsters-sin.md

* Update utils.test.ts

* Update utils.test.ts

* Update ci.yml

* Update utils.test.ts
2021-04-03 20:52:16 +02:00
Juan Picado
fd8bfd5d5f chore: update ci branch docker publish 2021-04-03 20:52:16 +02:00
Juan Picado
99de53b368 chore: update docker publish next 2021-04-03 20:52:15 +02:00
Juan Picado
a556829e5e chore: update to 6.x 2021-04-03 20:52:15 +02:00
Juan Picado
11aee7c712 chore: formmat code 2021-04-03 20:52:15 +02:00
Juan Picado
c62accf1ea chore: update format 2021-04-03 20:52:15 +02:00
Juan Picado
f68232cde8 chore: merge from master 2021-04-03 20:52:14 +02:00
github-actions[bot]
910f728588 chore: update versions (alpha) (#2116)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2021-04-03 20:52:14 +02:00
Juan Picado
0022bd28ec feat: flexible user interface generator (#2070)
* feat: flexible template generator and manifest

* chore: add changeset

* chore: restore dep

* chore: add docs

* chore: update snapshots

* chore: update docker examples for v5

* chore: refactor web module

* chore: format

* chore: refactor web api endpoints

* test: add test for user login web

* chore: refactor endpoints

* chore: fix merge

* chore: fix merge

* Update ci.yml

* chore: test

* chore: add static

* chore: update script

* chore: fix e2e

* chore: fix method

* docs: update v5 relative docker example

* chore: update html render

* chore: update style

* Update .prettierignore

* chore: update changeset

* chore: use pnpm6 on run test

temporary ci

* chore: drop node 16 for pnpm 6

* chore: update ci

* chore: update ci

* chore: update ci

* chore: update ci

* chore: remove circle ci

* chore: better url prefix handling

* chore: format code

* chore: remove test node 10

* docs: add docker v5 relative revers proxy example

* chore: use base html tag

* chore: update test
2021-04-03 20:52:14 +02:00
github-actions[bot]
ca9d11ac2b chore: update versions (alpha) (#2098)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2021-04-03 20:52:13 +02:00
Juan Picado
73599b031e feat: improve cli logging on start up (#2097)
* feat: improve cli logging on start up

* chore: remove deps
2021-04-03 20:52:13 +02:00
Juan Picado
6a7252f169 chore: update pnpm (#2095) 2021-04-03 20:52:13 +02:00
Paola Morales
8c8a761ec0 chore: update eslint dependency (#2094) 2021-04-03 20:52:13 +02:00
Paola Morales
f9f51e82c5 chore: update Dependencies (#2093)
* Update dependencies

* Update dist-tags.ts

* Update dist-tags.ts
2021-04-03 20:52:12 +02:00
Paola Morales
771f36a407 chore: update babel.js version (#2092) 2021-04-03 20:52:12 +02:00
Paola Morales
343aa8dc6e Improve package.json metadata (#2091) 2021-04-03 20:52:12 +02:00
Paola Morales
f4adf120c3 chore: update package.json and README.md (#2090) 2021-04-03 20:52:11 +02:00
Paola Morales
ec9bf85553 ref: refactor utils methods (#2076)
* ref: Relocate utils functions to web pkg

* ref: Refactor utils functions

* ref: Relocate utils functions to api pkg

* ref: Relocate utils functions to config pkg

* ref: Relocate utils functions to middleware pkg

* ref: Relocate utils functions to storage pkg

* ref: relocate utils functions to proxy pkg

* ref: relocate utils functions to middleware pkg

* ref: refactor utils functions

* Fix compilation errors
2021-04-03 20:52:11 +02:00
github-actions[bot]
a3c3e64355 chore: update versions (alpha) (#2073)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2021-04-03 20:52:11 +02:00
Slava
f91f7d78a0 feat: allow other password hashing algorithms (#1917) (#2072) 2021-04-03 20:52:11 +02:00
Juan Picado
be85f26bf7 chore: update readme 2021-04-03 20:52:10 +02:00
github-actions[bot]
7a7840542e chore: update versions (alpha) (#2057) 2021-04-03 20:52:10 +02:00
Juan Picado
54a696c428 feat: standalone server (#2046)
* feat: standalone version

* chore: add changeset
2021-04-03 20:52:10 +02:00
Juan Picado
6041f258bb chore: update deps (#2056)
* chore: update deps

* chore: update eslint

* chore: update deps types
2021-04-03 20:52:10 +02:00
Juan Picado
f92f20a0af chore: update npmrc 2021-04-03 20:52:09 +02:00
Juan Picado
15806469f1 chore: update script 2021-04-03 20:52:09 +02:00
Juan Picado
865478d0ae chore: add registry field 2021-04-03 20:52:09 +02:00
Juan Picado
2f59abfc1a chore: add extra env var 2021-04-03 20:52:08 +02:00
Juan Picado
400ff02a87 chore: update log 2021-04-03 20:52:08 +02:00
github-actions[bot]
9e293673be chore: update versions (alpha) (#2053)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2021-04-03 20:52:08 +02:00
Juan Picado
30807f05f3 build: release scripts alpha packages (#2052)
* chore: update deps

* chore: update deps
2021-04-03 20:52:08 +02:00
github-actions[bot]
5d795ac62f chore: update versions (alpha) (#2051)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2021-04-03 20:52:07 +02:00
Juan Picado
5438af9323 feat: add rate limit to all request (#2050)
* feat: add rate limit to all request

* chore: increase max

* chore: update settings

* chore: deprecate keepAliveTimeout
2021-04-03 20:52:07 +02:00
github-actions[bot]
a5af486e85 chore: update versions (alpha) (#2045)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2021-04-03 20:52:07 +02:00
Juan Picado
869f659e3a feat: remove level dependency by lowdb for npm token cli as storage (#2043)
* feat: remove level for token by lowdb

* chore: fix format

* chore: fix config

* chore: add changeset
2021-04-03 20:52:07 +02:00
Juan Picado
5d13d9ff42 chore: update docker publish config 2021-04-03 20:52:06 +02:00
Juan Picado
93356027cc fix: docker build missing modules (#2041) 2021-04-03 20:52:06 +02:00
Juan Picado
76a9206d1e chore: testing publish docker image 2021-04-03 20:52:06 +02:00
Juan Picado
a36ed9b510 chore: update snapshot 2021-04-03 20:52:06 +02:00
Juan Picado
a94dbbe272 chore: format document 2021-04-03 20:52:05 +02:00
Juan Picado
48cda34145 chore: update readme 2021-04-03 20:52:05 +02:00
github-actions[bot]
894394a4f0 chore: update versions (alpha) (#2035)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2021-04-03 20:52:05 +02:00
Juan Picado
22c1faa6ec build: server reload watch mode (#2039)
* feat: server reload watch mode

* chore:update format
2021-04-03 20:52:05 +02:00
Juan Picado
7fb055d408 chore: fix gatsby cloud build (#2037) 2021-04-03 20:52:04 +02:00
Juan Picado
fbbf0d6c7c refactor: enable e2e for UI (#2036)
* refactor: enable e2e for UI

* refactor: enable e2e for UI

* refactor: enable e2e for UI

* refactor: enable e2e for UI

* refactor: enable e2e for UI

* refactor: enable e2e for UI
2021-04-03 20:52:04 +02:00
Juan Picado
4b4afd5ffe feat: ui theme on 5.x (#2033)
* refactor: relocate theme-ui as plugin

* refactor: relocate theme-ui as plugin

* refactor: relocate theme-ui as plugin

* chore: fix lint

* chore: add missing folder

* refactor: relocate theme-ui as plugin

* refactor: relocate theme-ui as plugin

* refactor: relocate theme-ui as plugin

* chore: update scripts

* refactor: relocate theme-ui as plugin

* refactor: relocate theme-ui as plugin

* refactor: relocate theme-ui as plugin

* refactor: relocate theme-ui as plugin
2021-04-03 20:52:04 +02:00
Juan Picado
fb18fc4879 enable CLI E2e on 5.x (#2011)
* test: enable e2e

* test: improve setup

* chore: update setup

* test: publish on temp folder

* chore: initial setup example

* chore: add global install to pnpm

* chore: update test script

* test: add info command

* chore: add install tests

* chore: add debug enabled code

* chore: update pnpm lock file
2021-04-03 20:52:03 +02:00
github-actions[bot]
3b0cc2c41f chore: update versions (alpha) (#1916)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2021-04-03 20:52:01 +02:00
Juan Picado
59d529a2e1 chore: verdaccio as root dependency to avoid changesets override 2021-04-03 20:52:00 +02:00
Juan Picado
70cf4cff12 chore: update lock file 2021-04-03 20:52:00 +02:00
Juan Picado
8a76992c35 chore: update lock file 2021-04-03 20:52:00 +02:00
Juan Picado
7e83e4e37a chore: update pnpm changeset versions (#2002) 2021-04-03 20:52:00 +02:00
Juan Picado
fcf4cf4d7e chore: update pnpm changeset action 2021-04-03 20:51:59 +02:00
Juan Picado
8b39837b23 chore: remove a package, move constants (#2001)
* chore: remove a package, move constants

* chore: remove *
2021-04-03 20:51:59 +02:00
Juan Picado
79ca7954ad deps: update typescript 4 (#2000) 2021-04-03 20:51:59 +02:00
Juan Picado
0c94890ab7 feat: logger pretty only as dev mode (#1999) 2021-04-03 20:51:58 +02:00
Juan Picado
7beeaf7af9 chore: add missing dependency 2021-04-03 20:51:58 +02:00
Juan Picado
4915752cb4 refactor: config module, experiments renamed to flags (#1996)
* refactor: config security refactor

* chore: add changeset

* chore: rename self_path to config_path on test

* chore: fix test

* chore: remove self_path on init
2021-04-03 20:51:58 +02:00
Juan Picado
3ff8af4a59 chore: update versions 2021-04-03 20:51:58 +02:00
Juan Picado
71f5ef2d59 refactor: config module (#1995)
* refactor: clean up config

* refactor: config, move methods

* chore: remove js-yaml from utils
2021-04-03 20:51:57 +02:00
Juan Picado
71af2686cb chore: disable rules for examples 2021-04-03 20:51:57 +02:00
Juan Picado
d8ea9e69e5 docs: relocate docker-examples to 5.x (#1990)
* docs: relocate docker-examples to 5.x

* chore: update readme

* chore: remove license

we have already one at root
2021-04-03 20:51:57 +02:00
Juan Picado
9ca3dfb3fa fix: cleanup warnings (#1986)
* fix: lint warnings

* fix: test
2021-04-03 20:51:56 +02:00
Juan Picado
36a3a38839 refactor: relocate verdaccio-active-directory plugin (#1981) 2021-04-03 20:51:56 +02:00
Juan Picado
be65079c17 refactor: relocate verdaccio-google-cloud-storage plugin (#1978) 2021-04-03 20:51:56 +02:00
Dina Basumatary
8c7d984dd1 fix: typos and toc (#1980)
* updated table of content
* corrected spelling and grammar in a few places
* header levels
2021-04-03 20:51:56 +02:00
Dina Basumatary
89f52e98cd fix: eslint errors (#1973)
* fix: eslint errors

* fix: rename a test

* fix: broken integration test

due to removing next argument in the middleware.

* changeset
2021-04-03 20:51:55 +02:00
Juan Picado
8abcbd620a refactor: relocate verdaccio-aws-storage plugin (#1977) 2021-04-03 20:51:55 +02:00
Juan Picado
45415b2850 refactor: relocate verdaccio-audit plugin (#1976) 2021-04-03 20:51:55 +02:00
Juan Picado
a10fc4dc33 refactor: relocate verdaccio-auth-memory plugin (#1975) 2021-04-03 20:51:55 +02:00
Juan Picado
531f89da88 refactor: relocate verdaccio-memory plugin (#1974) 2021-04-03 20:51:54 +02:00
ike
7d2fc97b53 fix: improving typescript practices in packages/web/src/endpoint/package.ts (#1972)
* chore: 1. Remove @ts-ignore, 2. Remove :any and infer from existed lib, 3. Prevent variable re-assign

* chore: add changeset
2021-04-03 20:51:54 +02:00
Juan Picado
0969d29b44 feat: improve legacy token signature by removing deprecated crypto.cr… (#1953)
* feat: improve legacy token signature by removing deprecated crypto.createDecipher

* fix: wrong reference

* chore: add debug
2021-04-03 20:51:54 +02:00
mknj
a33b3289b5 fix urls in some packages/*/package.json (#1952) 2021-04-03 20:51:52 +02:00
Juan Picado
5717720544 refactor: auth-utils (#1951)
* chore: refactor auth utils

* chore: relocate crypto utils
2021-04-03 20:51:52 +02:00
Juan Picado
7126fa2071 chore: update dev deps (#1950) 2021-04-03 20:51:51 +02:00
Juan Picado
b60ed45359 refactor: migrate request to node-fetch at hooks package (#1946)
* refactor(hooks): new structure for notifications

* chore: fix build

* chore: add debug

* chore: add changeset
2021-04-03 20:51:51 +02:00
Juan Picado
3c0fc27c42 refactor: max-len and printWidth to 100 (#1941)
* refactor: max-len and printWidth to 100

* chore: ci specific pnpm version

* fix: add types peer package

literally get rid of types package
2021-04-03 20:51:51 +02:00
Juan Picado
c27112488f chore: website drawer for navigation (#1940)
* feat(website): add drawer navigation

* chore: create index by language

* Update Header.tsx
2021-04-03 20:51:48 +02:00
Juan Picado
23dbb756f9 chore: prepare website for development (#1935)
* chore: fix missing dependencies

* clean index page and sidebar

* improve layout for doc page

* format

* basic layout

* Update what-is-verdaccio.md

* check format
2021-04-03 20:51:48 +02:00
Juan Picado
b269716694 docs: update contribution guidelines, scripts to debug and additional notes (#1918)
* chore: debug improments

* update guides

* docs: update contribution guidelines

* chore: add debug notest

* chore: format code
2021-04-03 20:51:47 +02:00
Juan Picado
e4571d631e feat: add typescript project references settings (#1933)
Add two different settings for compile and develop.

https://www.typescriptlang.org/docs/handbook/project-references.html
2021-04-03 20:51:47 +02:00
Abraham Schilling
537f586873 build: configure prettier as formatter for json, yaml and markdown (#1930)
* build: configure pretter as formatter for most files

* chore: reformat code (#1931)

* chore: re-format all files

* chore: force run quality anaylsis test

Co-authored-by: Juan Picado @jotadeveloper <juanpicado19@gmail.com>

Co-authored-by: Juan Picado @jotadeveloper <juanpicado19@gmail.com>
2021-04-03 20:51:47 +02:00
Juan Picado @jotadeveloper
750c5f4b08 chore: downgrade pnpm changeset workflow 2021-04-03 20:51:44 +02:00
Juan Picado
8f53047c5e chore: patch changesets example (#1929)
* chore: test changesets

* chore: add changeset
2021-04-03 20:51:43 +02:00
Abraham Schilling
392458aa07 build: add missing os matrix (#1928) 2021-04-03 20:51:43 +02:00
Abraham Schilling
09942448df 5.x tests on windows (#1919) 2021-04-03 20:51:43 +02:00
Juan Picado
ad70d4b283 chore: restore website build (#1920) 2021-04-03 20:51:43 +02:00
Juan Picado @jotadeveloper
211a52ad57 reenable docker publish 2021-04-03 20:51:42 +02:00
Juan Picado @jotadeveloper
5becb4e255 chore: ignore pnpm store 2021-04-03 20:51:42 +02:00
Juan Picado @jotadeveloper
853c77d212 chore: ci include release pr 2021-04-03 20:51:42 +02:00
Juan Picado @jotadeveloper
9f79713e96 chore: add missing script 2021-04-03 20:51:42 +02:00
Juan Picado @jotadeveloper
8a3c30b134 chore: install right dep npm-run-all 2021-04-03 20:51:41 +02:00
Juan Picado @jotadeveloper
9aa0b92e79 chore add run-s dependency 2021-04-03 20:51:41 +02:00
Juan Picado @jotadeveloper
e9b36249ef chore: update changesets workflow 2021-04-03 20:51:41 +02:00
Juan Picado @jotadeveloper
b13ab88f85 chore: update changesets workflow 2021-04-03 20:51:41 +02:00
Juan Picado @jotadeveloper
e27c080d97 chore: update changesets workflow 2021-04-03 20:51:41 +02:00
Juan Picado @jotadeveloper
c014af3300 chore: add changesets workflow 2021-04-03 20:51:40 +02:00
Juan Picado
91734f58b2 feat: enable changesets (#1913)
* chore: add changeset deps

* chore: enable prerelease mode

* enable changesets
2021-04-03 20:51:40 +02:00
Juan Picado
5290b9fa2d feat: improve workspace and dependencies debug
* feat: using workspace @verdaccio/types

* feat: use core local-storage plugin

* chore: add missing dependencies

* chore: replace trace by debug

* chore: plugin loader uses debug
2021-04-03 20:51:40 +02:00
Juan Picado @jotadeveloper
cbb6c657a5 chore: update typescript and lint plugins 2021-04-03 20:51:40 +02:00
Juan Picado @jotadeveloper
9915b73e73 chore: update wrong imports 2021-04-03 20:51:39 +02:00
Juan Picado @jotadeveloper
3f2aa98fcb feat: add @verdaccio/commons-api package
Update local references
2021-04-03 20:51:39 +02:00
Juan Picado
4ff5d28487 feat: relocate core packages (#1906)
* chore: clean lint warnings

* refactor: move core packages
2021-04-03 20:51:39 +02:00
Juan Picado @jotadeveloper
850afccbb7 chore: update branch for ci 2021-04-03 20:51:38 +02:00
Juan Picado @jotadeveloper
9195f0bce7 chore: ignore codeql analysis
I shutdown this temporary while is in development
2021-04-03 20:51:38 +02:00
Juan Picado @jotadeveloper
0126893055 chore: extend lint rules to root 2021-04-03 20:51:38 +02:00
Juan Picado
79cdf449f5 chore: lint prettier update (#1904)
* chore: update prettier@2.x

* chore: prettier auto fix

* chore: fake circleci

we don't need it but I want make dissapear the error
2021-04-03 20:51:36 +02:00
Juan Picado
0c150fa869 chore: update readme 2021-04-03 20:51:35 +02:00
Juan Picado @jotadeveloper
8c6f251590 chore: update snapshot 2021-04-03 20:51:35 +02:00
Juan Picado
914da01729 refactor: devDependencies strictly defined in each package (#1884)
* refactor: new babel preset

* chore: using pnpm

let's see how it goes, all seems works fine by far, pretty solid.
2021-04-03 20:51:35 +02:00
Juan Picado @jotadeveloper
e91a3ee8a3 chore: rebase from master 2021-04-03 20:51:35 +02:00
Juan Picado @jotadeveloper
16bc81f985 chore: update lock file 2021-04-03 20:51:34 +02:00
Juan Picado
f395e375fe refactor: test api refactor (#1826)
* test: add test for whoami

* Update middleware.ts

* test for user api

* more test for user api

* remove repeated code

* refactor

* Update index.spec.ts

* add package test

refactor others

* chore: upgrade deps

* chore: add test for package

* chore: update test

* update lock file

* Update ci.yml

* Update ci.yml

* Update package.spec.ts

* chore: update ci settings

* chore: update deps

* chore: update test
2021-04-03 20:51:34 +02:00
Juan Picado @jotadeveloper
3e1ab6910c chore: remove duplication 2021-04-03 20:51:34 +02:00
Juan Picado @jotadeveloper
9051fd8f76 chore: update readme 2021-04-03 20:51:34 +02:00
Juan Picado
c262209871 chore: website scaffolding (#1843)
* chore: upload gatsby website

* chore: update header

* chore: add background header

* chore: add ci for website

* Update ci-website.yml

* chore: update patch mach ci

* chore: update ci settings

* chore: update docker version
2021-04-03 20:51:33 +02:00
Juan Picado
c20d9bb6b2 chore: update dependencies (maintenance)
* chore: update deps

* chore: update deps

* chore: fix dependencies

* chore: update deps

* chore: update deps

* chore: add types

* chore: update jest
2021-04-03 20:51:31 +02:00
dependabot-preview[bot]
16cdae1921 build(deps): bump @verdaccio/readme from 9.3.0 to 9.5.0 (#1797)
Bumps [@verdaccio/readme](https://github.com/verdaccio/monorepo/tree/HEAD/core/readme) from 9.3.0 to 9.5.0.
- [Release notes](https://github.com/verdaccio/monorepo/releases)
- [Changelog](https://github.com/verdaccio/monorepo/blob/9.x/core/readme/CHANGELOG.md)
- [Commits](https://github.com/verdaccio/monorepo/commits/v9.5.0/core/readme)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2021-04-03 20:51:31 +02:00
Juan Picado @jotadeveloper
8006e73d0a feat: migrate from buyan to pinojs (#1760)
* feat: migrate from buyan to pinojs

* chore: fix lint

* chore: release utils from import

* chore: fix test

* chore: add missing dep

* chore: add dependency

* chore: add prettifier module

* chore: add pretty stamp option

* chore: fix package name location

* chore: crash on try use rotating file type

* chore: remove arg
2021-04-03 20:51:31 +02:00
Juan Picado @jotadeveloper
4e0017a089 chore: disable test publish 2021-04-03 20:51:28 +02:00
Juan Picado @jotadeveloper
a606c6e125 chore: re-enable coverage 2021-04-03 20:51:28 +02:00
Juan Picado @jotadeveloper
8f835eb265 chore: fix merge 2021-04-03 20:51:27 +02:00
dependabot-preview[bot]
fb19e2052d build(deps): [security] bump acorn from 5.7.3 to 5.7.4 (#1752)
Bumps [acorn](https://github.com/acornjs/acorn) from 5.7.3 to 5.7.4. **This update includes a security fix.**
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/5.7.3...5.7.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2021-04-03 20:51:27 +02:00
Juan Picado @jotadeveloper
000a5e2be5 build: publish Docker image to GitHub registry (5.x) (#1744)
* chore: test

* chore: test

* chore: test

* chore: test

* chore: test

* chore: test

* chore: test

* chore: restore previous check file
2021-04-03 20:51:27 +02:00
Juan Picado @jotadeveloper
4c9f611da0 feat: remove support for allow_ prefix (#1741)
allow_access, allow_publish and proxy_access were supported as package access but this commit drop that support and ignore the properties
2021-04-03 20:51:24 +02:00
Juan Picado @jotadeveloper
84584948a9 refactor: fix import 2021-04-03 20:51:24 +02:00
Juan Picado @jotadeveloper
24524f5ea4 refactor: fix imports 2021-04-03 20:51:24 +02:00
Juan Picado @jotadeveloper
9c9484df5d refactor: utilities and auth 2021-04-03 20:51:23 +02:00
Juan Picado @jotadeveloper
424ee24a08 chore: update dependencies 2021-04-03 20:51:23 +02:00
Juan Picado @jotadeveloper
d4f5f2fc18 chore: reuse jest config 2021-04-03 20:51:23 +02:00
Juan Picado @jotadeveloper
e1947aaba6 build(deps-dev): bump @octokit/rest from 16.28.9 to 17.0.0 (#1729)
Bumps [@octokit/rest](https://github.com/octokit/rest.js) from 16.28.9 to 17.0.0.
- [Release notes](https://github.com/octokit/rest.js/releases)
- [Commits](https://github.com/octokit/rest.js/compare/v16.28.9...v17.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-03 20:51:23 +02:00
Juan Picado @jotadeveloper
489a5c82bd chore: update readme 2021-04-03 20:51:22 +02:00
Juan Picado @jotadeveloper
a08fd39e0e feat: migrate yarn workspaces (#1546) 2021-04-03 20:51:20 +02:00
1876 changed files with 305163 additions and 127312 deletions

245
.all-contributorsrc Normal file
View File

@@ -0,0 +1,245 @@
{
"projectName": "verdaccio",
"projectOwner": "verdaccio",
"repoType": "github",
"repoHost": "https://github.com",
"commitConvention": "none",
"files": [
"CONTRIBUTORS.md"
],
"contributors": [
{
"login": "juanpicado",
"name": "Juan Picado",
"avatar_url": "https://avatars0.githubusercontent.com/u/558752?v=4",
"profile": "https://www.linkedin.com/in/jotadeveloper/",
"contributions": [
"doc",
"code",
"infra",
"eventOrganizing",
"blog",
"maintenance"
]
},
{
"login": "sergiohgz",
"name": "Sergio Herrera",
"avatar_url": "https://avatars3.githubusercontent.com/u/14012309?v=4",
"profile": "https://github.com/sergiohgz",
"contributions": [
"infra",
"maintenance"
]
},
{
"login": "DanielRuf",
"name": "Daniel Ruf",
"avatar_url": "https://avatars1.githubusercontent.com/u/827205?v=4",
"profile": "https://daniel-ruf.de/",
"contributions": [
"security",
"infra",
"maintenance"
]
},
{
"login": "priscilawebdev",
"name": "Priscila Oliveira",
"avatar_url": "https://avatars1.githubusercontent.com/u/29228205?v=4",
"profile": "https://priscilawebdev.github.io/priscilaoliveira/",
"contributions": [
"design",
"code",
"maintenance"
]
},
{
"login": "ayusharma",
"name": "Ayush Sharma",
"avatar_url": "https://avatars0.githubusercontent.com/u/6918450?v=4",
"profile": "http://ayusharma.github.io/",
"contributions": [
"infra",
"code",
"design"
]
},
{
"login": "trentearl",
"name": "Trent Earl",
"avatar_url": "https://avatars2.githubusercontent.com/u/802857?v=4",
"profile": "https://github.com/trentearl",
"contributions": [
"code"
]
},
{
"login": "jmwilkinson",
"name": "jmwilkinson",
"avatar_url": "https://avatars0.githubusercontent.com/u/17836030?v=4",
"profile": "https://github.com/jmwilkinson",
"contributions": [
"code"
]
},
{
"login": "bufferoverflow",
"name": "Roger Meier",
"avatar_url": "https://avatars2.githubusercontent.com/u/378909?v=4",
"profile": "https://github.com/bufferoverflow",
"contributions": [
"plugin"
]
},
{
"login": "jamesgeorge007",
"name": "James George",
"avatar_url": "https://avatars2.githubusercontent.com/u/25279263?v=4",
"profile": "https://ghuser.io/jamesgeorge007",
"contributions": [
"code"
]
},
{
"login": "AvailCat",
"name": "AvailCat",
"avatar_url": "https://avatars3.githubusercontent.com/u/19658647?v=4",
"profile": "https://github.com/AvailCat",
"contributions": [
"code",
"infra",
"maintenance"
]
},
{
"login": "lgaitan",
"name": "Lucius Gaitán",
"avatar_url": "https://avatars0.githubusercontent.com/u/5970350?v=4",
"profile": "https://www.luciusgaitan.com/",
"contributions": [
"code"
]
},
{
"login": "ramonornela",
"name": "Ramon Henrique Ornelas",
"avatar_url": "https://avatars1.githubusercontent.com/u/187946?v=4",
"profile": "https://github.com/ramonornela",
"contributions": [
"code"
]
},
{
"login": "UnitedMarsupials-zz",
"name": "UnitedMarsupials-zz",
"avatar_url": "https://avatars1.githubusercontent.com/u/1486340?v=4",
"profile": "https://people.freebsd.org/~mi/resume/",
"contributions": [
"code"
]
},
{
"login": "ryan-codingintrigue",
"name": "Ryan Graham",
"avatar_url": "https://avatars0.githubusercontent.com/u/9048902?v=4",
"profile": "http://www.codingintrigue.co.uk/",
"contributions": [
"code"
]
},
{
"login": "coolsp",
"name": "coolsp",
"avatar_url": "https://avatars1.githubusercontent.com/u/1246647?v=4",
"profile": "https://github.com/coolsp",
"contributions": [
"code"
]
},
{
"login": "ashishsurana",
"name": "Ashish Surana",
"avatar_url": "https://avatars0.githubusercontent.com/u/5610944?v=4",
"profile": "http://ashishsurana.in/",
"contributions": [
"code"
]
},
{
"login": "buffaybu",
"name": "Wang Yifei",
"avatar_url": "https://avatars3.githubusercontent.com/u/2025661?v=4",
"profile": "https://github.com/buffaybu",
"contributions": [
"code"
]
},
{
"login": "lirantal",
"name": "Liran Tal",
"avatar_url": "https://avatars1.githubusercontent.com/u/316371?v=4",
"profile": "https://twitter.com/liran_tal",
"contributions": [
"code"
]
},
{
"login": "brenordr",
"name": "Breno Rodrigues",
"avatar_url": "https://avatars2.githubusercontent.com/u/19731692?v=4",
"profile": "https://github.com/brenordr",
"contributions": [
"code"
]
},
{
"login": "jachstet-sea",
"name": "jachstet-sea",
"avatar_url": "https://avatars0.githubusercontent.com/u/7993508?v=4",
"profile": "https://github.com/jachstet-sea",
"contributions": [
"code"
]
},
{
"login": "Vrtak-CZ",
"name": "Patrik Votoček",
"avatar_url": "https://avatars1.githubusercontent.com/u/112567?v=4",
"profile": "https://patrik.votocek.cz/",
"contributions": [
"code"
]
},
{
"login": "monkeywithacupcake",
"name": "jess",
"avatar_url": "https://avatars3.githubusercontent.com/u/7316730?v=4",
"profile": "https://github.com/monkeywithacupcake",
"contributions": [
"code"
]
},
{
"login": "toolsofraj",
"name": "toolsofraj",
"avatar_url": "https://avatars0.githubusercontent.com/u/2507152?v=4",
"profile": "https://github.com/toolsofraj",
"contributions": [
"code"
]
},
{
"login": "ddhp",
"name": "Jian-Chen Chen (jesse)",
"avatar_url": "https://avatars1.githubusercontent.com/u/1715380?v=4",
"profile": "https://github.com/ddhp",
"contributions": [
"translation",
"code"
]
}
],
"skipCi": true,
"contributorsPerLine": 7
}

26
.babelrc Normal file
View File

@@ -0,0 +1,26 @@
{
"presets": [ [
"@babel/env",
{
"useBuiltIns": "usage",
"corejs": {
"version": 3, "proposals": true
},
"targets": {
"node": 12
}
}
],
"@babel/typescript"
],
"plugins": [
"babel-plugin-dynamic-import-node",
"@babel/proposal-class-properties",
"@babel/proposal-object-rest-spread",
"@babel/plugin-proposal-optional-chaining",
"@babel/plugin-proposal-nullish-coalescing-operator"
],
"ignore": [
"**/*.d.ts"
]
}

8
.changeset/README.md Normal file
View File

@@ -0,0 +1,8 @@
# Changesets
Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
with multi-package repos, or single-package repos to help you version and publish your code. You can
find the full documentation for it [in our repository](https://github.com/changesets/changesets)
We have a quick list of common questions to get you started engaging with this project in
[our documentation](https://github.com/changesets/changesets/blob/master/docs/common-questions.md)

View File

@@ -0,0 +1,23 @@
---
'@verdaccio/local-storage': major
'@verdaccio/url': major
'verdaccio-aws-s3-storage': major
'verdaccio-google-cloud': major
'verdaccio-memory': major
'@verdaccio/store': major
---
# async storage plugin bootstrap
Gives a storage plugin the ability to perform asynchronous tasks on initialization
## Breaking change
Plugin must have an init method in which asynchronous tasks can be executed
```js
public async init(): Promise<void> {
this.data = await this._fetchLocalPackages();
this._sync();
}
```

10
.changeset/config.json Normal file
View File

@@ -0,0 +1,10 @@
{
"$schema": "https://unpkg.com/@changesets/config@1.3.0/schema.json",
"changelog": "@changesets/cli/changelog",
"commit": false,
"linked": [],
"access": "public",
"baseBranch": "6.x",
"updateInternalDependencies": "patch",
"ignore": []
}

View File

@@ -0,0 +1,46 @@
---
'@verdaccio/api': major
'@verdaccio/auth': major
'@verdaccio/cli': major
'@verdaccio/config': major
'@verdaccio/commons-api': major
'@verdaccio/file-locking': major
'verdaccio-htpasswd': major
'@verdaccio/local-storage': major
'@verdaccio/readme': major
'@verdaccio/streams': major
'@verdaccio/types': major
'@verdaccio/hooks': major
'@verdaccio/loaders': major
'@verdaccio/logger': major
'@verdaccio/logger-prettify': major
'@verdaccio/middleware': major
'@verdaccio/mock': major
'@verdaccio/node-api': major
'@verdaccio/active-directory': major
'verdaccio-audit': major
'verdaccio-auth-memory': major
'verdaccio-aws-s3-storage': major
'verdaccio-google-cloud': major
'verdaccio-memory': major
'@verdaccio/proxy': major
'@verdaccio/server': major
'@verdaccio/store': major
'@verdaccio/dev-types': major
'@verdaccio/utils': major
'verdaccio': major
'@verdaccio/web': major
'@verdaccio/website': major
---
feat!: experiments config renamed to flags
- The `experiments` configuration is renamed to `flags`. The functionality is exactly the same.
```js
flags: token: false;
search: false;
```
- The `self_path` property from the config file is being removed in favor of `config_file` full path.
- Refactor `config` module, better types and utilities

View File

@@ -0,0 +1,6 @@
---
'@verdaccio/middleware': patch
'@verdaccio/web': patch
---
Remove @ts-ignore and any in packages/web/src/endpoint/package.ts

View File

@@ -0,0 +1,44 @@
---
'@verdaccio/api': major
'@verdaccio/auth': major
'@verdaccio/cli': major
'@verdaccio/config': major
'@verdaccio/commons-api': major
'@verdaccio/file-locking': major
'verdaccio-htpasswd': major
'@verdaccio/local-storage': major
'@verdaccio/readme': major
'@verdaccio/streams': major
'@verdaccio/types': major
'@verdaccio/hooks': major
'@verdaccio/loaders': major
'@verdaccio/logger': major
'@verdaccio/logger-prettify': major
'@verdaccio/middleware': major
'@verdaccio/mock': major
'@verdaccio/node-api': major
'@verdaccio/proxy': major
'@verdaccio/server': major
'@verdaccio/store': major
'@verdaccio/dev-types': major
'@verdaccio/utils': major
'verdaccio': major
'@verdaccio/web': major
---
- Replace signature handler for legacy tokens by removing deprecated crypto.createDecipher by createCipheriv
- Introduce environment variables for legacy tokens
### Code Improvements
- Add debug library for improve developer experience
### Breaking change
- The new signature invalidates all previous tokens generated by Verdaccio 4 or previous versions.
- The secret key must have 32 characters long.
### New environment variables
- `VERDACCIO_LEGACY_ALGORITHM`: Allows to define the specific algorithm for the token signature which by default is `aes-256-ctr`
- `VERDACCIO_LEGACY_ENCRYPTION_KEY`: By default, the token stores in the database, but using this variable allows to get it from memory

View File

@@ -0,0 +1,39 @@
---
'@verdaccio/local-storage': patch
'@verdaccio/ui-theme': patch
'@verdaccio/server': patch
'@verdaccio/api': patch
'@verdaccio/auth': patch
'@verdaccio/cli': patch
'@verdaccio/config': patch
'@verdaccio/commons-api': patch
'@verdaccio/file-locking': patch
'verdaccio-htpasswd': patch
'@verdaccio/readme': patch
'@verdaccio/streams': patch
'@verdaccio/types': patch
'@verdaccio/hooks': patch
'@verdaccio/loaders': patch
'@verdaccio/logger': patch
'@verdaccio/logger-prettify': patch
'@verdaccio/middleware': patch
'@verdaccio/mock': patch
'@verdaccio/node-api': patch
'@verdaccio/active-directory': patch
'verdaccio-audit': patch
'verdaccio-auth-memory': patch
'verdaccio-aws-s3-storage': patch
'verdaccio-google-cloud': patch
'verdaccio-memory': patch
'@verdaccio/proxy': patch
'@verdaccio/store': patch
'@verdaccio/dev-types': patch
'@verdaccio/utils': patch
'verdaccio': patch
'@verdaccio/web': patch
'@verdaccio/e2e-cli': patch
'@verdaccio/e2e-ui': patch
'@verdaccio/website': patch
---
chore: add release step to private regisry on merge changeset pr

View File

@@ -0,0 +1,20 @@
---
'@verdaccio/api': minor
'verdaccio-htpasswd': minor
'@verdaccio/local-storage': minor
---
feat: remove level dependency by lowdb for npm token cli as storage
### new npm token database
There will be a new database located in your storage named `.token-db.json` which
will store all references to created tokens, **it does not store tokens**, just
mask of them and related metadata required to reference them.
#### Breaking change
If you were relying on `npm token` experiment. This PR will replace the
used database (level) by a json plain based one (lowbd) which does not
require Node.js C++ compilation step and has less dependencies. Since was
a experiment there is no migration step.

View File

@@ -0,0 +1,6 @@
---
'@verdaccio/hooks': patch
'@verdaccio/proxy': patch
---
refactor: migrate request to node-fetch at hooks package

View File

@@ -0,0 +1,6 @@
---
'@verdaccio/ui-theme': minor
'verdaccio': minor
---
feat: ui theme plugin part of the application

View File

@@ -0,0 +1,51 @@
---
'@verdaccio/api': minor
'@verdaccio/auth': minor
'@verdaccio/cli': minor
'@verdaccio/config': minor
'@verdaccio/commons-api': minor
'@verdaccio/file-locking': minor
'verdaccio-htpasswd': minor
'@verdaccio/local-storage': minor
'@verdaccio/readme': minor
'@verdaccio/streams': minor
'@verdaccio/types': minor
'@verdaccio/hooks': minor
'@verdaccio/loaders': minor
'@verdaccio/logger': minor
'@verdaccio/logger-prettify': minor
'@verdaccio/middleware': minor
'@verdaccio/mock': minor
'@verdaccio/node-api': minor
'@verdaccio/active-directory': minor
'verdaccio-audit': minor
'verdaccio-auth-memory': minor
'verdaccio-aws-s3-storage': minor
'verdaccio-google-cloud': minor
'verdaccio-memory': minor
'@verdaccio/ui-theme': minor
'@verdaccio/proxy': minor
'@verdaccio/server': minor
'@verdaccio/store': minor
'@verdaccio/dev-types': minor
'@verdaccio/utils': minor
'verdaccio': minor
'@verdaccio/web': minor
---
feat: add server rate limit protection to all request
To modify custom values, use the server settings property.
```markdown
server:
## https://www.npmjs.com/package/express-rate-limit#configuration-options
rateLimit:
windowMs: 1000
max: 10000
```
The values are intended to be high, if you want to improve security of your server consider
using different values.

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/cli': major
---
feat: use clipanion over commander

View File

@@ -0,0 +1,30 @@
---
'@verdaccio/auth': major
'verdaccio-htpasswd': major
'verdaccio-audit': major
'@verdaccio/server': major
'@verdaccio/cli-standalone': major
---
feat: standalone registry with no dependencies
## Usage
To install a server with no dependencies
```bash
npm install -g @verdaccio/standalone
```
with no internet required
```bash
npm install -g ./tarball.tar.gz
```
Bundles htpasswd and audit plugins.
### Breaking Change
It does not allow anymore the `auth` and `middleware` property at config file empty,
it will fallback to those plugins by default.

View File

@@ -0,0 +1,36 @@
---
'@verdaccio/api': minor
'@verdaccio/auth': minor
'@verdaccio/cli': minor
'@verdaccio/config': minor
'@verdaccio/commons-api': minor
'@verdaccio/file-locking': minor
'verdaccio-htpasswd': minor
'@verdaccio/local-storage': minor
'@verdaccio/readme': minor
'@verdaccio/streams': minor
'@verdaccio/types': minor
'@verdaccio/hooks': minor
'@verdaccio/loaders': minor
'@verdaccio/logger': minor
'@verdaccio/logger-prettify': minor
'@verdaccio/middleware': minor
'@verdaccio/mock': minor
'@verdaccio/node-api': minor
'@verdaccio/proxy': minor
'@verdaccio/server': minor
'@verdaccio/store': minor
'@verdaccio/dev-types': minor
'@verdaccio/utils': minor
'verdaccio': minor
'@verdaccio/web': minor
'@verdaccio/website': minor
---
feat: add typescript project references settings
Reading https://ebaytech.berlin/optimizing-multi-package-apps-with-typescript-project-references-d5c57a3b4440 I realized I can use project references to solve the issue to pre-compile modules on develop mode.
It allows to navigate (IDE) trough the packages without need compile the packages.
Add two `tsconfig`, one using the previous existing configuration that is able to produce declaration files (`tsconfig.build`) and a new one `tsconfig` which is enables [_projects references_](https://www.typescriptlang.org/docs/handbook/project-references.html).

View File

@@ -0,0 +1,6 @@
---
'@verdaccio/cli': minor
'@verdaccio/node-api': minor
---
feat: improve cli loggin on start up

66
.changeset/pre.json Normal file
View File

@@ -0,0 +1,66 @@
{
"mode": "pre",
"tag": "6-next",
"initialVersions": {
"@verdaccio/api": "6.0.0-alpha.0",
"@verdaccio/auth": "6.0.0-alpha.0",
"@verdaccio/cli": "6.0.0-alpha.0",
"@verdaccio/config": "6.0.0-alpha.0",
"@verdaccio/commons-api": "11.0.0-alpha.0",
"@verdaccio/file-locking": "11.0.0-alpha.0",
"verdaccio-htpasswd": "11.0.0-alpha.0",
"@verdaccio/local-storage": "11.0.0-alpha.0",
"@verdaccio/readme": "11.0.0-alpha.0",
"@verdaccio/streams": "11.0.0-alpha.0",
"@verdaccio/types": "11.0.0-alpha.0",
"@verdaccio/hooks": "6.0.0-alpha.0",
"@verdaccio/loaders": "6.0.0-alpha.0",
"@verdaccio/logger": "6.0.0-alpha.0",
"@verdaccio/logger-prettify": "6.0.0-alpha.0",
"@verdaccio/middleware": "6.0.0-alpha.0",
"@verdaccio/mock": "6.0.0-alpha.0",
"@verdaccio/node-api": "6.0.0-alpha.0",
"@verdaccio/proxy": "6.0.0-alpha.0",
"@verdaccio/server": "6.0.0-alpha.0",
"@verdaccio/store": "6.0.0-alpha.0",
"@verdaccio/dev-types": "6.0.0-alpha.0",
"@verdaccio/utils": "6.0.0-alpha.0",
"verdaccio": "6.0.0-alpha.0",
"@verdaccio/web": "6.0.0-alpha.0",
"@verdaccio/active-directory": "11.0.0-alpha.0",
"verdaccio-audit": "11.0.0-alpha.0",
"verdaccio-auth-memory": "11.0.0-alpha.0",
"verdaccio-aws-s3-storage": "11.0.0-alpha.0",
"verdaccio-google-cloud": "11.0.0-alpha.0",
"verdaccio-memory": "11.0.0-alpha.0",
"@verdaccio/website": "0.0.1",
"@verdaccio/ui-theme": "6.0.0-alpha.1",
"@verdaccio/e2e-cli": "1.0.0",
"@verdaccio/e2e-ui": "1.0.0",
"@verdaccio/cli-standalone": "6.0.0-alpha.3",
"@verdaccio/cli-ui": "6.0.0-alpha.3",
"@verdaccio/tarball": "11.0.0-alpha.3",
"@verdaccio/url": "11.0.0-alpha.3"
},
"changesets": [
"big-lobsters-sin",
"few-cooks-destroy",
"fifty-jars-rest",
"gentle-trains-switch",
"hip-hounds-destroy",
"late-adults-love",
"late-parents-act",
"modern-spies-tell",
"neat-toes-report",
"perfect-kangaroos-agree",
"plenty-news-remember",
"plenty-spiders-melt",
"plenty-tables-refuse",
"pretty-hounds-tap",
"shiny-chefs-heal",
"smart-apricots-kneel",
"spicy-frogs-press",
"tender-bags-call",
"three-pots-sit"
]
}

View File

@@ -0,0 +1,29 @@
---
'@verdaccio/api': patch
'@verdaccio/auth': patch
'@verdaccio/cli': patch
'@verdaccio/config': patch
'@verdaccio/commons-api': patch
'@verdaccio/file-locking': patch
'verdaccio-htpasswd': patch
'@verdaccio/local-storage': patch
'@verdaccio/readme': patch
'@verdaccio/streams': patch
'@verdaccio/types': patch
'@verdaccio/hooks': patch
'@verdaccio/loaders': patch
'@verdaccio/logger': patch
'@verdaccio/logger-prettify': patch
'@verdaccio/middleware': patch
'@verdaccio/mock': patch
'@verdaccio/node-api': patch
'@verdaccio/proxy': patch
'@verdaccio/server': patch
'@verdaccio/store': patch
'@verdaccio/dev-types': patch
'@verdaccio/utils': patch
'verdaccio': patch
'@verdaccio/web': patch
---
Enable prerelease mode with **changesets**

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/api': patch
---
testing changesets

View File

@@ -0,0 +1,79 @@
---
'@verdaccio/ui-theme': major
'@verdaccio/cli-standalone': major
'@verdaccio/web': major
---
feat: flexible user interface generator
**breaking change**
The UI does not provide a pre-generated `index.html`, instead the server generates
the body of the web application based in few parameters:
- Webpack manifest
- User configuration details
It allows inject html tags, javascript and new CSS to make the page even more flexible.
### Web new properties for dynamic template
The new set of properties are made in order allow inject _html_ and _JavaScript_ scripts within the template. This
might be useful for scenarios like Google Analytics scripts or custom html in any part of the body.
- metaScripts: html injected before close the `head` element.
- scriptsBodyAfter: html injected before close the `body` element.
- bodyAfter: html injected after _verdaccio_ JS scripts.
```yaml
web:
scriptsBodyAfter:
- '<script type="text/javascript" src="https://my.company.com/customJS.min.js"></script>'
metaScripts:
- '<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>'
- '<script type="text/javascript" src="https://browser.sentry-cdn.com/5.15.5/bundle.min.js"></script>'
- '<meta name="robots" content="noindex" />'
bodyBefore:
- '<div id="myId">html before webpack scripts</div>'
bodyAfter:
- '<div id="myId">html after webpack scripts</div>'
```
### UI plugin changes
- `index.html` is not longer used, template is generated based on `manifest.json` generated by webpack.
- Plugin must export:
- the manifest file.
- the manifest files: matcher (array of id that generates required scripts to run the ui)
- static path: The absolute path where the files are located in `node_modules`
```
exports.staticPath = path.join(__dirname, 'static');
exports.manifest = require('./static/manifest.json');
exports.manifestFiles = {
js: ['runtime.js', 'vendors.js', 'main.js'],
css: [],
ico: 'favicon.ico',
};
```
- Remove font files
- CSS is inline on JS (this will help with #2046)
### Docker v5 Examples
- Move all current examples to v4 folder
- Remove any v3 example
- Create v5 folder with Nginx Example
#### Related tickets
https://github.com/verdaccio/verdaccio/issues/1523
https://github.com/verdaccio/verdaccio/issues/1297
https://github.com/verdaccio/verdaccio/issues/1593
https://github.com/verdaccio/verdaccio/discussions/1539
https://github.com/verdaccio/website/issues/264
https://github.com/verdaccio/verdaccio/issues/1565
https://github.com/verdaccio/verdaccio/issues/1251
https://github.com/verdaccio/verdaccio/issues/2029
https://github.com/verdaccio/docker-examples/issues/29

View File

@@ -0,0 +1,32 @@
---
'verdaccio-htpasswd': major
---
feat: allow other password hashing algorithms (#1917)
**breaking change**
The current implementation of the `htpasswd` module supports multiple hash formats on verify, but only `crypt` on sign in.
`crypt` is an insecure old format, so to improve the security of the new `verdaccio` release we introduce the support of multiple hash algorithms on sign in step.
### New hashing algorithms
The new possible hash algorithms to use are `bcrypt`, `md5`, `sha1`. `bcrypt` is chosen as a default, because of its customizable complexity and overall reliability. You can read more about them [here](https://httpd.apache.org/docs/2.4/misc/password_encryptions.html).
Two new properties are added to `auth` section in the configuration file:
- `algorithm` to choose the way you want to hash passwords.
- `rounds` is used to determine `bcrypt` complexity. So one can improve security according to increasing computational power.
Example of the new `auth` config file section:
```yaml
auth:
htpasswd:
file: ./htpasswd
max_users: 1000
# Hash algorithm, possible options are: "bcrypt", "md5", "sha1", "crypt".
algorithm: bcrypt
# Rounds number for "bcrypt", will be ignored for other algorithms.
rounds: 10
```

View File

@@ -0,0 +1,9 @@
---
'@verdaccio/logger': major
---
logging prettifier only in development mode
- Verdaccio prettify `@verdaccio/logger-prettify` the logging which looks beautiful. But there are scenarios which does not make sense in production. This feature enables disable by default the prettifies if production `NODE_ENV` is enabled.
- Updates pino.js to `^6.7.0`.
- Suppress the warning when prettifier is enabled `suppressFlushSyncWarning`

View File

@@ -0,0 +1,33 @@
---
'@verdaccio/api': patch
'@verdaccio/auth': patch
'@verdaccio/cli': patch
'@verdaccio/config': patch
'@verdaccio/commons-api': patch
'@verdaccio/file-locking': patch
'verdaccio-htpasswd': patch
'@verdaccio/local-storage': patch
'@verdaccio/readme': patch
'@verdaccio/types': patch
'@verdaccio/hooks': patch
'@verdaccio/loaders': patch
'@verdaccio/logger': patch
'@verdaccio/logger-prettify': patch
'@verdaccio/middleware': patch
'@verdaccio/mock': patch
'@verdaccio/node-api': patch
'@verdaccio/proxy': patch
'@verdaccio/server': patch
'@verdaccio/store': patch
'@verdaccio/dev-types': patch
'@verdaccio/utils': patch
'verdaccio': patch
---
ESLint Warnings Fixed
Related to issue #1461
- max-len: most of the sensible max-len errors are fixed
- no-unused-vars: most of these types of errors are fixed by deleting not needed declarations
- @typescript-eslint/no-unused-vars: same as above

View File

@@ -8,22 +8,22 @@
.*
# you can add exceptions like in .gitignore to maintain a whitelist:
# e.g.
!babel.config.js
!eslintrc.js
!.prettierrc
!.babelrc
!.eslintrc
!.prettierrc.json
!.prettierignore
!.eslintignore
!.stylelintrc
!.jest.config.js
!.jestEnvironment.js
!.yarnrc.yml
!.yarn/releases/yarn-*.cjs
!.yarn/plugins/*
!.pnp.js
# just in case, yarn 2 pnp is enabled
# do not copy over node_modules we will run `pnpm install` anyway
node_modules
.husky/
.git/
website
jest
docs
contrib
docker-examples
website
systemd
# output from test runs and similar things
*.log
@@ -33,21 +33,7 @@ coverage/
# IDE config files
jsconfig.json
*.iml
# let's not get too recursive ;)
Dockerfile*
docker-compose*.yaml
.github/
.husky/
*.log
coverage/
.vscode/
*.md
contrib/
docs/
docker-examples/
systemd/
assets/
jest*.js
test/
wiki/
debug/

View File

@@ -7,6 +7,7 @@ end_of_line = lf
insert_final_newline = true
# 2 space indentation
[{.,}*.{js,jsx,yml,yaml}]
[{.,}*.{ts,tsx,js,jsx,yml,yaml}]
indent_style = space
indent_size = 2
quote_type = single

11
.eslintignore Normal file
View File

@@ -0,0 +1,11 @@
**/fixtures/**
**/mock/store/**
**/partials/**
**/types/custom.d.ts
build/
coverage/
flow-typed/
node_modules/
static/
website/
wiki/

102
.eslintrc Normal file
View File

@@ -0,0 +1,102 @@
{
"extends": [
"eslint:recommended",
"google",
"plugin:react/recommended",
"plugin:jest/recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"plugin:import/typescript",
"plugin:jsx-a11y/recommended",
"prettier"
],
"plugins": ["import", "jest", "jsx-a11y", "react-hooks"],
"env": {
"es6": true,
"node": true,
"jest": true
},
"globals": {
"__APP_VERSION__": true
},
"parserOptions": {
"allowImportExportEverywhere": true,
"sourceType": "module",
"ecmaVersion": 11,
"ecmaFeatures": {
"impliedStrict": true,
"jsx": true
}
},
"settings": {
"import/resolver": {
"node": {
"extensions": [".js", ".jsx", ".ts", ".tsx"]
}
}
},
"parser": "@typescript-eslint/parser",
"rules": {
"curly": ["error", "all"],
"react/prop-types": 0,
"jest/no-export": 0,
"jest/no-test-callback": 0,
"jest/expect-expect": 0,
"jest/no-try-expect": 0,
"jest/no-done-callback": "off",
"jest/no-conditional-expect": "off",
"keyword-spacing": "off",
"no-tabs": "off",
"no-useless-escape": "off",
"padded-blocks": "off",
"require-jsdoc": "off",
"valid-jsdoc": "off",
"import/order": ["error"],
"eol-last": "error",
"no-irregular-whitespace": "error",
"no-mixed-spaces-and-tabs": ["error", "smart-tabs"],
"no-trailing-spaces": "error",
"camelcase": "off",
"guard-for-in": "error",
"new-cap": "error",
"max-len": ["error", 100],
"no-console": ["error", { "allow": ["warn"] }],
"no-constant-condition": "error",
"no-debugger": "error",
"no-empty": "error",
"no-fallthrough": "error",
"no-invalid-this": "error",
"no-new-require": "error",
"no-undef": "error",
"no-unreachable": "error",
"no-var": "error",
"one-var": "error",
"prefer-rest-params": "error",
"prefer-spread": "error",
"handle-callback-err": 0,
"prefer-const": 0,
"@typescript-eslint/camelcase": 0,
"@typescript-eslint/ban-ts-ignore": 0,
"@typescript-eslint/no-var-requires": 0,
"@typescript-eslint/no-inferrable-types": 0,
"@typescript-eslint/no-empty-function": 0,
"@typescript-eslint/no-this-alias": 0,
"@typescript-eslint/no-use-before-define": 0,
"@typescript-eslint/array-type": ["error"],
"@typescript-eslint/no-explicit-any": 0,
"@typescript-eslint/indent": 0,
"@typescript-eslint/ban-ts-comment": 0,
"@typescript-eslint/ban-types": 0,
"@typescript-eslint/explicit-module-boundary-types": 0,
// rules to fix
"no-unused-vars": ["warn", { "vars": "all", "args": "none" }],
"jest/no-identical-title": ["warn"],
"prefer-promise-reject-errors": ["warn"],
"jest/no-disabled-tests": ["warn"],
"jest/no-commented-out-tests": ["warn"],
"@typescript-eslint/prefer-optional-chain": ["warn"],
"@typescript-eslint/explicit-member-accessibility": ["warn"],
"@typescript-eslint/no-unused-vars": ["warn"]
}
}

199
.gitattributes vendored Normal file
View File

@@ -0,0 +1,199 @@
## GITATTRIBUTES FOR WEB PROJECTS
#
# These settings are for any web project.
#
# Details per file setting:
# text These files should be normalized (i.e. convert CRLF to LF).
# binary These files are binary and should be left untouched.
#
# Note that binary is a macro for -text -diff.
######################################################################
# Auto detect
## Handle line endings automatically for files detected as
## text and leave all files detected as binary untouched.
## This will handle all files NOT defined below.
* text=lf
# Source code
*.bash text eol=lf
*.bat text eol=crlf
*.cmd text eol=crlf
*.coffee text eol=lf
*.css text eol=lf
*.htm text diff=html
*.html text diff=html
*.inc text eol=lf
*.ini text eol=lf
*.js text eol=lf
*.json text eol=lf
*.jsx text eol=lf
*.less text eol=lf
*.ls text eol=lf
*.map text -diff
*.od text eol=lf
*.onlydata text eol=lf
*.php text diff=php
*.pl text eol=lf
*.ps1 text eol=crlf
*.py text diff=python
*.rb text diff=ruby
*.sass text eol=lf
*.scm text eol=lf
*.scss text diff=css
*.sh text eol=lf
*.sql text eol=lf
*.styl text eol=lf
*.tag text eol=lf
*.ts text eol=lf
*.tsx text eol=lf
*.xml text eol=lf
*.xhtml text diff=html
# Docker
Dockerfile text eol=lf
# Documentation
*.ipynb text eol=lf
*.markdown text eol=lf
*.md text eol=lf
*.mdwn text eol=lf
*.mdown text eol=lf
*.mkd text eol=lf
*.mkdn text eol=lf
*.mdtxt text eol=lf
*.mdtext text eol=lf
*.txt text eol=lf
AUTHORS text eol=lf
CHANGELOG text eol=lf
CHANGES text eol=lf
CONTRIBUTING text eol=lf
COPYING text eol=lf
copyright text eol=lf
*COPYRIGHT* text eol=lf
INSTALL text eol=lf
license text eol=lf
LICENSE text eol=lf
NEWS text eol=lf
readme text eol=lf
*README* text eol=lf
TODO text eol=lf
# Templates
*.dot text eol=lf
*.ejs text eol=lf
*.haml text eol=lf
*.handlebars text eol=lf
*.hbs text eol=lf
*.hbt text eol=lf
*.jade text eol=lf
*.latte text eol=lf
*.mustache text eol=lf
*.njk text eol=lf
*.phtml text eol=lf
*.tmpl text eol=lf
*.tpl text eol=lf
*.twig text eol=lf
*.vue text eol=lf
# Configs
*.cnf text eol=lf
*.conf text eol=lf
*.config text eol=lf
.editorconfig text eol=lf
.env text eol=lf
.gitattributes text eol=lf
.gitconfig text eol=lf
.htaccess text eol=lf
*.lock text -diff
package-lock.json text -diff
*.toml text eol=lf
*.yaml text eol=lf
*.yml text eol=lf
browserslist text eol=lf
Makefile text eol=lf
makefile text eol=lf
# Heroku
Procfile text eol=lf
# Graphics
*.ai binary
*.bmp binary
*.eps binary
*.gif binary
*.gifv binary
*.ico binary
*.jng binary
*.jp2 binary
*.jpg binary
*.jpeg binary
*.jpx binary
*.jxr binary
*.pdf binary
*.png binary
*.psb binary
*.psd binary
# SVG treated as an asset (binary) by default.
*.svg text eol=lf
# If you want to treat it as binary,
# use the following line instead.
# *.svg binary
*.svgz binary
*.tif binary
*.tiff binary
*.wbmp binary
*.webp binary
# Audio
*.kar binary
*.m4a binary
*.mid binary
*.midi binary
*.mp3 binary
*.ogg binary
*.ra binary
# Video
*.3gpp binary
*.3gp binary
*.as binary
*.asf binary
*.asx binary
*.fla binary
*.flv binary
*.m4v binary
*.mng binary
*.mov binary
*.mp4 binary
*.mpeg binary
*.mpg binary
*.ogv binary
*.swc binary
*.swf binary
*.webm binary
# Archives
*.7z binary
*.gz binary
*.jar binary
*.rar binary
*.tar binary
*.zip binary
# Fonts
*.ttf binary
*.eot binary
*.otf binary
*.woff binary
*.woff2 binary
# Executables
*.exe binary
*.pyc binary
# RC files (like .babelrc or .eslintrc)
*.*rc text eol=lf
# Ignore files (like .npmignore or .gitignore)
*.*ignore text eol=lf

View File

@@ -7,9 +7,11 @@ assignees: ''
---
**Describe the bug**
<!-- A clear and concise description of what the bug is. -->
**To Reproduce**
<!-- IMPORTANT:
- How to reproduce the issue
- Steps to reproduce the issue
@@ -18,9 +20,11 @@ Be aware, the lack of reproducible steps the issue might cause your ticket to be
-->
**Expected behavior**
<!-- A clear and concise description of what you expected to happen. -->
**Screenshots**
<!-- If applicable, add screenshots to help explain your problem. -->
**Configuration File (cat ~/.config/verdaccio/config.yaml)**
@@ -28,16 +32,17 @@ Be aware, the lack of reproducible steps the issue might cause your ticket to be
<!-- Please be careful do not leak any sensitive information, remove tokens -->
**Environment information**
<!-- Please paste the results of running `verdaccio --info` -->
**Debugging output**
- `$ NODE_DEBUG=request verdaccio` display request calls (verdaccio <--> uplinks)
- `$ DEBUG=express:* verdaccio` enable extreme verdaccio debug mode (verdaccio api)
- `$ npm -ddd` prints:
- `$ npm config get registry` prints:
- `$ NODE_DEBUG=request verdaccio` display request calls (verdaccio <--> uplinks)
- `$ DEBUG=express:* verdaccio` enable extreme verdaccio debug mode (verdaccio api)
- `$ npm -ddd` prints:
- `$ npm config get registry` prints:
<!--
IMPORTANT: please do not attach external files, all content should be visible from any device.
-->

View File

@@ -1,10 +1,9 @@
---
name: "Feature Request \U0001F52E"
name: 'Feature Request 🔮'
about: You want a feature request.
title: ''
labels: 'topic: feature request'
assignees: ''
---
<!--

View File

@@ -5,23 +5,21 @@
version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
- package-ecosystem: 'github-actions'
directory: '/'
schedule:
interval: "weekly"
interval: 'weekly'
# Maintain dependencies for npm
- package-ecosystem: "npm"
directory: "/"
- package-ecosystem: 'npm'
directory: '/'
schedule:
interval: "daily"
allow:
- dependency-name: "@verdaccio/*"
- dependency-name: "verdaccio-*"
interval: 'daily'
allow:
- dependency-name: '@verdaccio/*'
- dependency-name: 'verdaccio-*'
assignees:
- "verdacciobot"
- 'verdacciobot'
labels:
- "bot: dependencies"
- 'bot: dependencies'

View File

@@ -0,0 +1,131 @@
on:
schedule:
- cron: '0 3 * * 5'
pull_request:
branches:
- '**'
name: 'E2E Angular CLI with verdaccio'
jobs:
# todo: fix yarn global issue, cannot find ng
# yarn:
# strategy:
# fail-fast: false
# matrix:
# os: [ubuntu-latest, windows-latest]
#
# name: '${{ matrix.os }} / yarn:angular example'
# runs-on: ${{ matrix.os }}
#
# steps:
# - uses: actions/checkout@v2.3.1
#
# - name: 'Use Node.js 10.x'
# uses: actions/setup-node@v2.1.1
# with:
# node-version: 10.x
# - name: Install Dependencies
# run: yarn install --pure-lockfile
# - name: 'Run verdaccio in the background'
# run: |
# nohup node ./scripts/run-verdaccio.js &
# - name: 'Ping to verdaccio'
# run: |
# npm ping --registry http://localhost:4873
# - name: 'Running the integration test'
# run: |
# source scripts/e2e-setup-ci.sh
# yarn init --yes
#
# yarn global add @angular/cli
# which nodemon
# ng new verdaccio-angular --interactive=false
#
# cd verdaccio-angular
# echo "registry=http://localhost:4873" > ~/.npmrc
# yarn add @angular-devkit/core@next @babel/preset-env @babel/core -D
#
# ng build --aot
npm:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
name: '${{ matrix.os }} / npm:angular example'
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2.3.1
- name: 'Use Node.js 10.x'
uses: actions/setup-node@v2.1.1
with:
node-version: 10.x
- name: 'install latest npm'
run: npm i -g npm
- name: Install Dependencies
run: yarn install --pure-lockfile
- name: 'Run verdaccio in the background'
run: |
nohup node ./scripts/run-verdaccio.js &
- name: 'Ping to verdaccio'
run: |
npm ping --registry http://localhost:4873
- name: 'Running the integration test'
run: |
source scripts/e2e-setup-ci.sh
echo "registry=http://localhost:4873" > ~/.npmrc
npm config set loglevel="http"
npm config set fetch-retries="5"
npm config set fetch-retry-factor="50"
npm config set fetch-retry-mintimeout="20000"
npm config set fetch-retry-maxtimeout="80000"
npm install -g @angular/cli
ng new verdaccio-angular --interactive=false
cd verdaccio-angular
npm install @angular-devkit/core@next @babel/preset-env @babel/core -D
npm run ng build --aot
# pnpm throws errors worth to check why
# pnpm:
# strategy:
# fail-fast: false
# matrix:
# os: [ubuntu-latest, windows-latest]
#
# name: '${{ matrix.os }} / pnpm:angular example'
# runs-on: ${{ matrix.os }}
#
# steps:
# - uses: actions/checkout@v2.3.1
#
# - name: 'Use Node.js 10.x'
# uses: actions/setup-node@v2.1.1
# with:
# node-version: 10.x
# - name: 'install latest pnpm'
# run: npm i -g pnpm
# - name: Install Dependencies
# run: yarn install --pure-lockfile
# - name: 'Run verdaccio in the background'
# run: |
# nohup node ./scripts/run-verdaccio.js &
# - name: 'Ping to verdaccio'
# run: |
# pnpm ping --registry http://localhost:4873
# - name: 'Running the integration test'
# run: |
# source scripts/e2e-setup-ci.sh
# pnpm init --force
#
# pnpm install -g @angular/cli
# ng new verdaccio-angular --interactive=false
#
# cd verdaccio-angular
# echo "registry=http://localhost:4873" > ~/.npmrc
# pnpm install @angular-devkit/core@next @babel/preset-env @babel/core -D
#
# pnpm run ng build --aot

View File

@@ -0,0 +1,49 @@
on:
schedule:
- cron: '0 3 * * 5'
pull_request:
branches:
- '**'
name: 'E2E Gatsby.js CLI with verdaccio'
jobs:
npm:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
name: '${{ matrix.os }} / npm:gatsby example'
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2.3.3
- name: 'Use Node.js 14.x'
uses: actions/setup-node@v2.1.5
with:
node-version: 14.x
- name: 'install latest npm'
run: npm i -g npm@latest-6
- name: Install Dependencies
run: yarn install
- name: 'Run verdaccio in the background'
run: |
nohup node ./scripts/run-verdaccio.js --config ./scripts/e2e-config.yaml &
- name: 'Ping to verdaccio'
run: |
npm ping --registry http://localhost:4873
- name: 'Running the integration test'
run: |
source scripts/e2e-setup-ci.sh
echo "registry=http://localhost:4873
loglevel="silent"
fetch-retries=10
fetch-retry-factor=2
fetch-retry-mintimeout=10000
fetch-retry-maxtimeout=80000" > ~/.npmrc
npm config list
npm i -g gatsby
gatsby new my-gatsby
cd my-gatsby
npm run build

121
.github/disabled/e2e-jest-workflow.yml vendored Normal file
View File

@@ -0,0 +1,121 @@
on:
schedule:
- cron: '0 3 * * 5'
pull_request:
branches:
- '**'
name: 'E2E Jest with verdaccio'
jobs:
yarn:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
name: '${{ matrix.os }} / yarn:jest example'
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2.3.1
- name: 'Use Node.js 10.x'
uses: actions/setup-node@v2.1.1
with:
node-version: 10.x
- name: Install Dependencies
run: yarn install --pure-lockfile
- name: 'Run verdaccio in the background'
run: |
nohup node ./scripts/run-verdaccio.js &
- name: 'Ping to verdaccio'
run: |
npm ping --registry http://localhost:4873
- name: 'Running the integration test'
run: |
source scripts/e2e-setup-ci.sh
yarn init --yes
yarn add jest --registry http://localhost:4873
echo "it('should pass', () => { expect(true).toBeTruthy(); });" | tee pass.test.js
yarn jest pass.test.js
yarn add left-pad --registry http://localhost:4873 --verbose
echo "const leftPad = require('left-pad'); it('should resolve a module', () => { expect(typeof leftPad).toBe('function');});" | tee module.test.js
yarn jest module.test.js
npm:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
name: '${{ matrix.os }} / npm:jest example'
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2.3.1
- name: 'Use Node.js 10.x'
uses: actions/setup-node@v2.1.1
with:
node-version: 10.x
- name: 'install latest npm'
run: npm i -g npm
- name: Install Dependencies
run: yarn install --pure-lockfile
- name: 'Run verdaccio in the background'
run: |
nohup node ./scripts/run-verdaccio.js &
- name: 'Ping to verdaccio'
run: |
npm ping --registry http://localhost:4873
- name: 'Running the integration test'
run: |
source scripts/e2e-setup-ci.sh
npm init --force
npm install jest --registry http://localhost:4873
echo "it('should pass', () => { expect(true).toBeTruthy(); });" | tee pass.test.js
yarn jest pass.test.js
yarn add left-pad --registry http://localhost:4873 --verbose
echo "const leftPad = require('left-pad'); it('should resolve a module', () => { expect(typeof leftPad).toBe('function');});" | tee module.test.js
yarn jest module.test.js
pnpm:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
name: '${{ matrix.os }} / pnpm:jest example'
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2.3.1
- name: 'Use Node.js 10.x'
uses: actions/setup-node@v2.1.1
with:
node-version: 10.x
- name: 'install latest pnpm'
run: npm i -g pnpm
- name: Install Dependencies
run: yarn install --pure-lockfile
- name: 'Run verdaccio in the background'
run: |
nohup node ./scripts/run-verdaccio.js &
- name: 'Ping to verdaccio'
run: |
pnpm ping --registry http://localhost:4873
- name: 'Running the integration test'
run: |
source scripts/e2e-setup-ci.sh
pnpm init --force
pnpm install jest --registry http://localhost:4873
echo "it('should pass', () => { expect(true).toBeTruthy(); });" | tee pass.test.js
yarn jest pass.test.js
yarn add left-pad --registry http://localhost:4873 --verbose
echo "const leftPad = require('left-pad'); it('should resolve a module', () => { expect(typeof leftPad).toBe('function');});" | tee module.test.js
yarn jest module.test.js

13
.github/disabled/registry.yml vendored Normal file
View File

@@ -0,0 +1,13 @@
name: Test local registry for js vulnerabilities
on:
schedule:
- cron: '0 4 * * 4'
jobs:
security:
runs-on: ubuntu-latest
steps:
- name: Test for public javascript library vulnerabilities
uses: lirantal/is-website-vulnerable@1.15.10
with:
scan-url: 'https://registry.verdaccio.org'

35
.github/disabled/release-canary.yml vendored Normal file
View File

@@ -0,0 +1,35 @@
name: Canary Release to Verdaccio
on:
pull_request:
paths:
- .github/workflows/release-canary.yml
- 'packages/**'
- 'package.json'
- 'lerna.json'
jobs:
release:
name: Release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Use Node (latest)
uses: actions/setup-node@v1
with:
node_version: 13
- name: Install
run: yarn --frozen-lockfile
- name: Clean
run: yarn clean
- name: Lint
run: yarn lint
- name: Build
run: yarn build
- name: Test
run: yarn test
- name: Publish
run: |
echo "//registry.verdaccio.org/:_authToken=${{ secrets.VERDACCIO_TOKEN }}" > .npmrc
git update-index --assume-unchanged .npmrc
yarn publish:canary

35
.github/lock.yml vendored Normal file
View File

@@ -0,0 +1,35 @@
# Configuration for lock-threads - https://github.com/dessant/lock-threads
# Number of days of inactivity before a closed issue or pull request is locked
daysUntilLock: 90
# Issues and pull requests with these labels will not be locked. Set to `[]` to disable
exemptLabels: []
# Label to add before locking, such as `outdated`. Set to `false` to disable
lockLabel: false
# Comment to post before locking. Set to `false` to disable
lockComment: >
🤖This thread has been automatically locked 🔒 since there has not been
any recent activity after it was closed.
We lock tickets after 90 days with the idea to encourage you to open a ticket with new fresh data
and to provide you better feedback 🤝and better visibility 👀.
If you consider, you can attach this ticket 📨 to the new one as a reference for better context.
Thanks for being a part of the Verdaccio community! 💘
# Limit to only `issues` or `pulls`
# only: issues
# Optionally, specify configuration settings just for `issues` or `pulls`
issues:
exemptLabels:
- help-wanted
lockLabel: outdated
pulls:
daysUntilLock: 90
lockLabel: outdated

26
.github/stale.yml vendored Normal file
View File

@@ -0,0 +1,26 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 15
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 10
# Issues with these labels will never be considered stale
exemptLabels:
- dev: high priority
- topic: feature request
- issue: need verification
- issue: bug
- dev: discuss
# Label to use when marking an issue as stale
staleLabel: 'issue: wontfix'
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
Hi pal 👋🏼!
This issue has gone quiet 😶.
We get a lot of issues, so we currently close issues after 25 days of inactivity. Its been at least 15 days since the last update here.
If we missed this issue or if you want to keep it open, please reply here. You can also add/suggest the label "discuss" to keep this issue open!
As a friendly reminder: the best way to see this issue, or any other, fixed is to open a Pull Request. Check out [https://github.com/verdaccio/contributing](https://github.com/verdaccio/contributing) for more information about opening PRs, triaging issues, and contributing!
Thanks for being a part of the Verdaccio community! 💘
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

63
.github/workflows/changesets.yml vendored Normal file
View File

@@ -0,0 +1,63 @@
name: Changesets
on:
schedule:
- cron: '0 0 * * *'
push:
branches:
- 6.x
env:
CI: true
PNPM_CACHE_FOLDER: .pnpm-store
jobs:
# Update package versions from changesets.
version:
timeout-minutes: 14
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/6.x' && github.repository == 'verdaccio/verdaccio'
steps:
- name: checkout code repository
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: setup node.js
uses: actions/setup-node@v2
with:
node-version: 14
registry-url: 'https://registry.verdaccio.org'
env:
NODE_AUTH_TOKEN: ${{ secrets.VERDACCIO_TOKEN }}
- name: install pnpm
run: npm i pnpm@latest -g
env:
NODE_AUTH_TOKEN: ${{ secrets.VERDACCIO_TOKEN }}
- name: setup pnpm config
run: pnpm config set store-dir $PNPM_CACHE_FOLDER
- name: setup pnpm config registry
run: pnpm config set registry https://registry.verdaccio.org
- name: install dependencies
run: pnpm install
env:
NODE_AUTH_TOKEN: ${{ secrets.VERDACCIO_TOKEN }}
- name: build
run: pnpm build
- name: create versions
uses: changesets/action@master
with:
version: pnpm ci:version
commit: 'chore: update versions'
title: 'chore: update versions'
publish: pnpm ci:publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.VERDACCIO_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.VERDACCIO_TOKEN }}

45
.github/workflows/ci-e2e-ui.yml vendored Normal file
View File

@@ -0,0 +1,45 @@
name: E2E UI
on:
push:
branches:
- 6.x
- 'changeset-release/6.x'
pull_request:
paths:
- .github/workflows/ci.yml
- 'packages/**'
- 'jest/**'
- 'package.json'
- 'pnpm-workspace.yaml'
- 'test/**'
jobs:
ci:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
node_version: [14]
name: ${{ matrix.os }} / Node ${{ matrix.node_version }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2.3.1
- name: Use Node ${{ matrix.node_version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node_version }}
- name: Install pnpm
run: npm i -g pnpm@latest
- name: Install
run: pnpm recursive install
- name: Clean
run: pnpm clean
- name: Build
run: pnpm build
- name: Test UI
run: pnpm test:e2e:ui
env:
DEBUG: verdaccio:e2e*

45
.github/workflows/ci-e2e.yml vendored Normal file
View File

@@ -0,0 +1,45 @@
name: E2E CLI
on:
push:
branches:
- 5.x
- 'changeset-release/6.x'
pull_request:
paths:
- .github/workflows/ci.yml
- 'packages/**'
- 'jest/**'
- 'package.json'
- 'pnpm-workspace.yaml'
- 'test/**'
jobs:
ci:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
node_version: [14]
name: ${{ matrix.os }} / Node ${{ matrix.node_version }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2.3.1
- name: Use Node ${{ matrix.node_version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node_version }}
- name: Install pnpm
run: npm i -g pnpm@latest
- name: Install
run: pnpm recursive install
- name: Clean
run: pnpm clean
- name: Build
run: pnpm build
- name: Test CLI
run: pnpm test:e2e:cli
env:
DEBUG: verdaccio:e2e*

View File

@@ -1,10 +0,0 @@
name: CI Lint
on: [push, pull_request]
permissions:
contents: read
jobs:
lint:
uses: verdaccio/verdaccio/.github/workflows/yarn-ci-lint.yml@master

49
.github/workflows/ci-pnpm-dev.yml vendored Normal file
View File

@@ -0,0 +1,49 @@
name: CI with pnpm 6
on:
push:
branches:
- 5.x
- 'changeset-release/6.x'
pull_request:
paths:
- .changeset/**
- .github/workflows/ci.yml
- 'packages/**'
- 'jest/**'
- 'package.json'
- 'pnpm-workspace.yaml'
jobs:
ci:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
node_version: [12, 15]
name: ${{ matrix.os }} / Node ${{ matrix.node_version }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2.3.1
- name: Use Node ${{ matrix.node_version }}
uses: actions/setup-node@v2
with:
node_version: ${{ matrix.node_version }}
- name: Install pnpm
run: sudo npm i pnpm@dev -g
- name: Install
run: pnpm recursive install
- name: Format
run: pnpm format:check
- name: Lint
run: pnpm lint
- name: Clean
run: pnpm clean
- name: Build
run: pnpm build
- name: Test
run: pnpm test
env:
DEBUG: verdaccio:web:*

39
.github/workflows/ci-website.yml vendored Normal file
View File

@@ -0,0 +1,39 @@
name: CI Website
on:
push:
branches:
- master
pull_request:
paths:
- .github/workflows/ci-website.yml
- 'website/**'
jobs:
ci:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
node_version: [14]
name: ${{ matrix.os }} / Node ${{ matrix.node_version }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v1
- name: Use Node ${{ matrix.node_version }}
uses: actions/setup-node@v1
with:
node_version: ${{ matrix.node_version }}
- name: Install pnpm
run: npm i -g pnpm
- name: Install
run: pnpm recursive install
- name: Format
run: pnpm format:check
- name: Lint
run: pnpm lint
- name: Build website
run: |
cd website
pnpm build

View File

@@ -1,19 +1,49 @@
name: CI
on: [push, pull_request]
permissions:
contents: read
concurrency:
group: ci-${{ github.ref }}-6.x
cancel-in-progress: true
on:
push:
branches:
- 6.x
- 'changeset-release/6.x'
pull_request:
paths:
- .changeset/**
- .github/workflows/ci.yml
- 'packages/**'
- 'jest/**'
- 'package.json'
- 'pnpm-workspace.yaml'
jobs:
build:
ci:
strategy:
fail-fast: false
matrix:
node_version: [18, 20, 22, 24]
uses: verdaccio/verdaccio/.github/workflows/yarn-ci.yml@master
with:
node_version: ${{ matrix.node_version }}
os: [ubuntu-latest, windows-latest]
node_version: [12, 14]
name: ${{ matrix.os }} / Node ${{ matrix.node_version }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2.3.1
- name: Use Node ${{ matrix.node_version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node_version }}
- name: Install pnpm
run: npm i pnpm@latest -g
- name: Install
run: pnpm recursive install
- name: Format
run: pnpm format:check
- name: Lint
run: pnpm lint
- name: Clean
run: pnpm clean
- name: Build
run: pnpm build
- name: Test
run: pnpm test
env:
DEBUG: verdaccio:web:*

57
.github/workflows/codeql-analysis.yml vendored Normal file
View File

@@ -0,0 +1,57 @@
name: 'Code scanning - action'
on:
push:
branches-ignore:
- 5.x
- 'changeset-release/6.x'
- 'dev/**'
pull_request:
paths:
- .github/workflows/ci.yml
- 'packages/**'
schedule:
- cron: '0 2 * * 4'
jobs:
CodeQL-Build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2.3.1
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
# If this run was triggered by a pull request event, then checkout
# the head of the pull request instead of the merge commit.
- run: git checkout HEAD^2
if: ${{ github.event_name == 'pull_request' }}
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
# Override language selection by uncommenting this and choosing your languages
# with:
# languages: go, javascript, csharp, python, cpp, java
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1

View File

@@ -0,0 +1,30 @@
name: Docker & Publish Pre-check
on:
pull_request:
paths:
- .github/workflows/docker-publish-pre-check.yml
- 'packages/**'
- 'docker-bin/**'
- 'package.json'
- 'lerna.json'
jobs:
testDocker:
name: Test Docker Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.1
- name: Build
run: npm run docker
env:
VERDACCIO_BUILD_REGISTRY: https://registry.verdaccio.org
# testVerdaccio:
# name: Test Verdaccio Publish
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v1
# - name: Publish
# uses: verdaccio/github-actions/publish@v0.4.0
# with:
# args: -d

View File

@@ -4,25 +4,48 @@ on:
push:
paths:
- .github/workflows/docker-publish.yml
- 'src/**'
- 'conf/**'
- 'types/**'
- .github/workflows/docker-publish.yml
- 'packages/**'
- 'docker-bin/**'
- 'bin/**'
- 'package.json'
- 'yarn.lock'
- '.yarn/**'
- '.yarnrc.yaml'
- 'pnpm-*.yaml'
- 'Dockerfile'
- '.dockerignore'
branches:
- '**'
- '6.x'
tags:
- 'v*'
- 'v*'
jobs:
docker-publish:
secrets: inherit
uses: verdaccio/verdaccio/.github/workflows/shared-docker-publish.yml@master
with:
tag-latest: true
tag-custom: 6.x-next
tag-custom-only: ${{ github.ref == 'refs/heads/6.x' }}
docker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker/setup-qemu-action@v1
- uses: docker/setup-buildx-action@v1
with:
driver-opts: network=host
- uses: docker/login-action@v1
name: Login Docker Hub
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Prepare docker image tags
id: docker_meta
uses: crazy-max/ghaction-docker-meta@v1
with:
images: ${{ github.repository }}
tag-custom: 6.x-next
tag-custom-only: ${{ github.ref == 'refs/heads/6.x' }}
tag-semver: |
{{version}}
{{major}}
{{major}}.{{minor}}
- name: Build & Push
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
platforms: linux/amd64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.docker_meta.outputs.tags }}
labels: ${{ steps.docker_meta.outputs.labels }}

View File

@@ -1,12 +0,0 @@
on:
pull_request:
push:
concurrency:
group: e2e-audit-${{ github.ref }}-6.x
cancel-in-progress: true
name: 'Plugin Audit E2E'
jobs:
e2e:
uses: verdaccio/verdaccio/.github/workflows/x-e2e-audit-workflow.yml@master

View File

@@ -1,17 +0,0 @@
on:
pull_request:
concurrency:
group: e2e-cli-${{ github.ref }}-6.x
cancel-in-progress: true
name: 'E2E install CLI libraries through verdaccio'
jobs:
e2e-gatsbyjs:
uses: verdaccio/verdaccio/.github/workflows/x-e2e-gatsbyjs-cli-workflow.yml@master
e2e-jest:
uses: verdaccio/verdaccio/.github/workflows/x-e2e-jest-workflow.yml@master
e2e-angular-cli:
uses: verdaccio/verdaccio/.github/workflows/x-e2e-angular-cli-workflow.yml@master

View File

@@ -1,11 +0,0 @@
name: Release Canary
on:
workflow_dispatch:
push:
branches:
- 6.x
jobs:
snapshot:
secrets: inherit
uses: verdaccio/verdaccio/.github/workflows/x-release-snapshot.yml@master

View File

@@ -1,11 +0,0 @@
name: Release
on:
push:
tags:
- '*'
jobs:
snapshot:
secrets: inherit
uses: verdaccio/verdaccio/.github/workflows/x-release.yml@master

View File

@@ -1,17 +0,0 @@
name: Docker Smoke Test
on:
workflow_dispatch:
push:
permissions:
contents: read
concurrency:
group: e2e-docker-pkgs-${{ github.ref }}-6.x
cancel-in-progress: true
jobs:
smoke:
uses: verdaccio/verdaccio/.github/workflows/x-smok-test-docker.yml@master
with:
docker_tag: '6.x-next'
module_tag: '@latest'

View File

@@ -1,90 +0,0 @@
name: Import Module Smoke Test
on: [pull_request]
permissions:
contents: read
concurrency:
group: smoke-test-import-module-${{ github.ref }}-6x
cancel-in-progress: true
jobs:
test:
strategy:
fail-fast: false
matrix:
node_version: [18, 20, 22, 24]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Use Node ${{ matrix.node_version }}
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: ${{ matrix.node_version }}
- name: Docker test
run: |
docker run -d -it --rm --name verdaccio -p 4873:4873 -e "DEBUG=verdaccio*" verdaccio/verdaccio:6
- name: login
run: npx npm-cli-login -u test -p 1234 -e test@domain.test -r http://localhost:4873
- name: Install dependencies
run: yarn
- name: Bump up package and save version
run: |
npm version prerelease --no-git-tag-version --preid $(date +%s%N)
echo "VERDACCIO_VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_ENV
- name: Build
run: yarn build
- name: publish verdaccio
run: npm publish --tag next --registry http://localhost:4873
- name: 'Running runServer / export the integration test'
run: |
source scripts/e2e-setup-ci.sh
npm init --force
npm install vitest --registry http://localhost:4873
npm install verdaccio@${{ env.VERDACCIO_VERSION }} --loglevel info --registry http://localhost:4873
echo "import { describe, expect, test } from 'vitest';
import { runServer, getDefaultConfig, fileUtils } from 'verdaccio';
test('runServer should start correctly with default config', async () => {
const storage = await fileUtils.createTempStorageFolder('basic-test');
expect(typeof runServer).toBe('function');
const defaultConfig = {...getDefaultConfig(), storage}
console.log('Default Config:', defaultConfig);
const server = await runServer(defaultConfig);
expect(server).toBeDefined();
expect(server).toHaveProperty('listen');
if (server && typeof server.close === 'function') {
await server.close();
}
});" | tee module.spec.js
cat module.spec.js
DEBUG=verdaccio* yarn vitest run module.spec --reporter verbose
- name: 'Running startVerdaccio / export integration test'
run: |
source scripts/e2e-setup-ci.sh
npm init --force
npm install vitest --registry http://localhost:4873
npm install verdaccio@${{ env.VERDACCIO_VERSION }} --loglevel info --registry http://localhost:4873
echo "import { describe, expect, test } from 'vitest';
import { startVerdaccio, getDefaultConfig, fileUtils } from 'verdaccio';
test('run server should be able to listen', async () => {
const storage = await fileUtils.createTempStorageFolder('basic-test');
expect(typeof startVerdaccio).toBe('function');
const defaultConfig = {...getDefaultConfig(), storage}
console.log('Default Config:', defaultConfig);
return new Promise((done) => {
startVerdaccio(defaultConfig, '5000', storage, '1.0.0', 'verdaccio', (server, addr) => {
expect(server).toBeDefined();
expect(addr).toBeDefined();
expect(addr.port).toBe('5000');
server.close();
done(true);
});
});
});" | tee legacy.module.spec.js
cat legacy.module.spec.js
DEBUG=verdaccio* yarn vitest run legacy.module.spec.js --reporter verbose

View File

@@ -1,148 +0,0 @@
name: Test Docker Build
on: [push, pull_request]
concurrency:
group: ci-${{ github.ref }}-docker-build-test
cancel-in-progress: true
jobs:
testDocker:
name: Test Docker Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
- name: Build Docker image
run: docker build -t verdaccio-test .
env:
VERDACCIO_BUILD_REGISTRY: https://registry.npmjs.org
- name: Run Verdaccio in background
run: |
docker run -d --name verdaccio-test -e "DEBUG=verdaccio*" -p 4873:4873 verdaccio-test
sleep 10 # Give Verdaccio some time to start
- name: Test npm install from local Verdaccio
run: |
npm set registry http://localhost:4873
npm install -g verdaccio
- name: Show Verdaccio logs (for debugging)
if: always()
run: docker logs verdaccio-test
- name: Stop Verdaccio
if: always()
run: docker stop verdaccio-test
testStorageVolume:
name: Test Storage Volume
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
- name: Build Docker image
run: docker build -t verdaccio-test .
env:
VERDACCIO_BUILD_REGISTRY: https://registry.npmjs.org
- name: Prepare storage directory
run: |
mkdir -p storage
sudo chown -R 10001:root storage
- name: Run Verdaccio with storage volume
run: |
docker run -d --name verdaccio-test -e "DEBUG=verdaccio*" -p 4873:4873 \
-v $PWD/storage:/verdaccio/storage \
verdaccio-test
sleep 10
- name: Test npm install from local Verdaccio
run: |
npm set registry http://localhost:4873
npm install -g verdaccio
- name: Show Verdaccio logs (for debugging)
if: always()
run: docker logs verdaccio-test
- name: Stop Verdaccio
if: always()
run: docker stop verdaccio-test
testConfigVolume:
name: Test Config Volume
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
- name: Build Docker image
run: docker build -t verdaccio-test .
env:
VERDACCIO_BUILD_REGISTRY: https://registry.npmjs.org
- name: Create config.yaml without comments
run: |
cat > config.yaml <<'EOF'
storage: /verdaccio/storage/data
plugins: /verdaccio/plugins
web:
title: Verdaccio
auth:
htpasswd:
file: /verdaccio/storage/htpasswd
uplinks:
npmjs:
url: https://registry.npmjs.org/
yarn:
url: https://registry.yarnpkg.com/
packages:
'@*/*':
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: npmjs
'**':
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: yarn
server:
keepAliveTimeout: 60
middlewares:
audit:
enabled: true
log:
type: stdout
format: pretty
level: http
i18n:
web: en-US
EOF
- name: Set permissions for config.yaml
run: |
sudo chown 10001:root config.yaml
sudo chmod 644 config.yaml
- name: Run Verdaccio with config volume
run: |
docker run -d --name verdaccio-test -e "DEBUG=verdaccio*" -p 4873:4873 \
-v $PWD/config.yaml:/verdaccio/conf/config.yaml \
verdaccio-test
sleep 10
- name: Test npm install from local Verdaccio
run: |
npm set registry http://localhost:4873
npm install -g verdaccio
- name: Show Verdaccio logs (for debugging)
if: always()
run: docker logs verdaccio-test
- name: Stop Verdaccio
if: always()
run: docker stop verdaccio-test

View File

@@ -1,9 +0,0 @@
name: Test Publish Package
on: [push, pull_request]
jobs:
testVerdaccio:
uses: verdaccio/verdaccio/.github/workflows/test-publish-package.yml@master
with:
verdaccio-version: "6"

40
.gitignore vendored
View File

@@ -1,41 +1,47 @@
*.log*
verdaccio-*.tgz
.DS_Store
build/
.eslintcache
./dist
### Test
test/unit/partials/store/test-*-storage/*
test/unit/partials/store/*-storage/*
test/unit/partials/store/storage_default_storage/*
.verdaccio-db.json
.sinopia-db.json
###
!bin/verdaccio
test-storage*
access-storage*
.verdaccio_test_env
node_modules
package-lock.json
npm_test-fails-add-tarball*
yarn-error.log
.yarn/cache
./conf/*.yaml
yarn.lock
# coverage
# docker examples
docker-examples/v5/reverse_proxy/nginx/relative_path/storage/*
docker-examples/v5/**/storage/*
# jest
reports/
coverage/
# IDE
## IDE
.idea/
# Compiled script
static/*
packages/partials
tsconfig.tsbuildinfo
# This is the Yarn build state; it's local to each clone
/.yarn/build-state.yml
## bundle files
packages/standalone/dist/
## ui
packages/plugins/ui-theme/static
# This is the Yarn install state cache, it can be rebuilt anytime
/.yarn/install-state.gz
.history
# website
website/public
website/.cache
# CI Pnpm cache
.pnpm-store/

View File

@@ -1,15 +1,18 @@
## npm
npm-debug.log
yarn-error.log
node_modules
verdaccio-*.tgz
docker-compose.yaml
Dockerfile
crowdin.yaml
scripts/
src/
/.*
.vscode/
.circleci/
debug/
docker-examples/
reports/
## assets and website
@@ -37,12 +40,3 @@ jest.config.js
contrib/
storage_default_storage/
docker-bin/
tsconfig.json
*.md
prettier.config.js
eslintrc.cjs
babel.config.js
debug/*
tsconfig*
vitest.config.mjs

4
.npmrc
View File

@@ -1,2 +1,4 @@
always-auth = true
fetch-retries="10"
recursive-install = true
registry = https://registry.verdaccio.org
loglevel=warn

2
.nvmrc
View File

@@ -1 +1 @@
22
14

View File

@@ -3,23 +3,23 @@
**/corrupted.json
**/invalid.js
**/invalid.json
**/pnpm-lock.yaml
**/verdaccio-corrupted.db.json
**/wrong.package.json
/website/.cache/
/website/crowdin/
/website/public/
/website/src/dictionaries/
CHANGELOG.md
README.md
CONTRIBUTORS.md
test/unit/partials/config/js/*
node_modules/
**/coverage/**
**/static/*.js
**/build/*.js
build/*
.github/
packages/core/local-storage/_storage/**
packages/standalone/dist/bundle.js
docker-examples/v5/reverse_proxy/nginx/relative_path/storage/*
docker-examples/
build/
.vscode/
.yarnrc.yml
.yarn/
test/functional/store/*
storage_default_storage/*
.prettierignore
.npmignore
.gitignore
*.ico
.github/

View File

@@ -1,15 +0,0 @@
{
"endOfLine": "lf",
"useTabs": false,
"printWidth": 100,
"tabWidth": 2,
"singleQuote": true,
"bracketSpacing": true,
"trailingComma": "es5",
"semi": true,
"plugins": ["@trivago/prettier-plugin-sort-imports"],
"importOrder": ["^@verdaccio/(.*)$", "^[./]"],
"importOrderSeparation": true,
"importOrderParserPlugins": ["typescript", "classProperties", "jsx"],
"importOrderSortSpecifiers": true
}

11
.prettierrc.json Normal file
View File

@@ -0,0 +1,11 @@
{
"endOfLine": "lf",
"useTabs": false,
"printWidth": 100,
"tabWidth": 2,
"singleQuote": true,
"bracketSpacing": true,
"jsxBracketSameLine": true,
"trailingComma": "es5",
"semi": true
}

3552
.secrets-baseline Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1 +0,0 @@

View File

@@ -1,10 +0,0 @@
{
// See http://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.
// Extension identifier format: ${publisher}.${name}. Example: vscode.csharp
// List of extensions which should be recommended for users of this workspace.
"recommendations": [
"EditorConfig.EditorConfig"
],
// List of extensions recommended by VS Code that should not be recommended for users of this workspace.
"unwantedRecommendations": []
}

91
.vscode/launch.json vendored
View File

@@ -1,14 +1,81 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach by Process ID",
"processId": "${command:PickProcess}",
"request": "attach",
"skipFiles": [
"<node_internals>/**"
],
"type": "node"
}
]
// Use IntelliSense to learn about possible Node.js debug attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Verdaccio Debug",
"port": 9229,
"request": "attach",
"skipFiles": ["<node_internals>/**"],
"type": "pwa-node"
},
{
"type": "node",
"request": "launch",
"name": "CLI Babel Registry",
"stopOnEntry": false,
"program": "${workspaceFolder}/debug/bootstrap.js",
"args": ["-l", "0.0.0.0:4873"],
"env": {
"BABEL_ENV": "registry"
},
"preLaunchTask": "npm: build:webui",
"console": "integratedTerminal"
},
{
"name": "Unit Tests",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/node_modules/bin/jest",
"stopOnEntry": false,
"args": ["--debug=true"],
"cwd": "${workspaceRoot}",
"runtimeExecutable": null,
"runtimeArgs": ["--nolazy"],
"env": {
"NODE_ENV": "test",
"TZ": "UTC"
},
"console": "integratedTerminal"
},
{
"name": "Functional Tests",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/node_modules/.bin/jest",
"stopOnEntry": false,
"args": [
"--config",
"./test/jest.config.functional.js",
"--testPathPattern",
"./test/functional/index*",
"--debug=false",
"--verbose",
"--useStderr",
"--detectOpenHandles"
],
"cwd": "${workspaceRoot}",
"env": {
"BABEL_ENV": "testOldEnv",
"VERDACCIO_DEBUG": "true",
"VERDACCIO_DEBUG_INJECT": "true",
"NODE_DEBUG": "TO_DEBUG_REQUEST_REMOVE_THIS_request"
},
"preLaunchTask": "pre-test",
"console": "integratedTerminal",
"runtimeExecutable": null,
"runtimeArgs": ["--nolazy"]
},
{
"type": "node",
"request": "launch",
"name": "Verdaccio Compiled",
"preLaunchTask": "npm: code:build",
"program": "${workspaceRoot}/bin/verdaccio",
"args": ["-l", "0.0.0.0:4873"],
"console": "integratedTerminal"
}
]
}

17
.vscode/settings.json vendored
View File

@@ -1,15 +1,12 @@
// Place your settings in this file to overwrite default and user settings.
{
"files.exclude": {
"**/.idea": true,
"**/coverage": true
"**/.nyc_output": true,
"**/build": false,
"**/coverage": true,
".idea": true,
"storage_default_storage": true,
".yarn": true
},
"editor.formatOnSave": true,
"search.exclude": {
"**/.yarn": true ,
"**/node_modules": true,
"**/build": true,
},
"editor.defaultFormatter": "esbenp.prettier-vscode",
"typescript.tsdk": "node_modules/typescript/lib"
}

21
.vscode/tasks.json vendored Normal file
View File

@@ -0,0 +1,21 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"type": "npm",
"script": "build:webui",
"problemMatcher": []
},
{
"type": "npm",
"script": "code:build",
"problemMatcher": []
},
{
"label": "pre-test",
"dependsOn": ["npm: code:build", "npm: test:clean"]
}
]
}

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +0,0 @@
defaultSemverRangePrefix: ""
nodeLinker: node-modules
npmRegistryServer: "https://registry.npmjs.org"
yarnPath: .yarn/releases/yarn-4.9.2.cjs

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,345 @@
# Contributing to Verdaccio
# Contributing
Full text for contributing can be read [here](https://verdaccio.org/community/contributing).
> Any change matters, whatever the size, just do it.
## Especifics for the branch 6.x
We are happy that you are willing to contribute. For that reason, we
have prepared these guidelines for you:
The 6.x uses `yarn berry` with Plug and Play enabled, thus some advices are required for helping contributing:
**Table of Contents**
### Debugging Jest
- [Contributing](#contributing)
- [How Do I Contribute?](#how-do-i-contribute)
- [Development Setup](#development-setup)
- [Building the project](#building-the-project)
- [Running test](#running-test)
- [Running and debugging](#running-and-debugging)
- [Debugging compiled code](#debugging-compiled-code)
- [Reporting Bugs](#reporting-bugs)
- [Read the documentation](#read-the-documentation)
- [What's is not considered a bug?](#whats-is-not-considered-a-bug)
- [Issue Search](#issue-search)
- [Chat](#chat)
- [Request Features](#request-features)
- [Contributing Guidelines](#contributing-guidelines)
- [Submitting a Pull Request](#submitting-a-pull-request)
- [Make Changes and Commit](#make-changes-and-commit)
- [Caveats](#caveats)
- [Before Commit](#before-commit)
- [Commit Guidelines](#commit-guidelines)
- [Adding a changeset](#adding-a-changeset)
- [Update Tests](#update-tests)
- [Develop Plugins](#develop-plugins)
## How Do I Contribute?
There are different ways to contribute, each comes with a different levels
of tasks, such as:
- Report a bug.
- Request a feature you think would be great for verdaccio.
- Fix bugs.
- Test and triage reported bugs by others.
- Work on requested/approved features.
- Improve the codebase (lint, naming, comments, test descriptions, etc...)
Verdaccio has several areas of involvement, which might fit you better, eg:
- **Core**: The [core](https://github.com/verdaccio/verdaccio) is the main repository, built with **Node.js**.
- **Website**: we uses **Gatsby.js** for the **website** and if you are familiar with this technology, you might become the official webmaster.
- **User Interface**: The [user Interface](https://github.com/verdaccio/ui) is based in **react** and **material-ui** and looking for front-end contributors.
- **Kubernetes and Helm**: Ts the official repository for the [**Helm chart**](https://github.com/verdaccio/charts).
> There are other areas to contribute, like documentation, translation which are not hosted on this repo but check the last section of this notes for further information.
## Development Setup
Verdaccio uses [_pnpm_](https://pnpm.js.org/) as package manager for development in this repository. Please install the latest one:
```
npm i -g pnpm
```
First step is installing all dependencies:
```
pnpm install
```
### Building the project
To build the project run
```
pnpm build
```
### Running test
```
pnpm test
```
Verdaccio is a mono repository, for running an specific test or package go the specific package eg:
```
cd packages/store
pnpm test
```
or an specific test in that package
```
pnpm test test/merge.dist.tags.spec.ts
```
or a single test unit
```
pnpm test test/merge.dist.tags.spec.ts -- -t 'simple'
```
The coverage is enabled by default, to speed up test running
```
pnpm test test/merge.dist.tags.spec.ts -- -t 'simple' --coverage=false
```
To increase debug output, we use `debug`, to enable it in your test just add
```
DEBUG=verdaccio* pnpm test
```
More details in the debug section
### Running and debugging
We uses [`debug`](https://www.npmjs.com/package/debug) for debug outcome. Each package has it owns namespace.
### Debugging compiled code
Currently you can only run in debug mode pre-compiled packages, to enable debug while running add the `verdaccio` namespace using the `DEBUG` environment variable, like this:
```
DEBUG=verdaccio:* node packages/verdaccio/debug/bootstrap.js
```
On this way can be reviewed every package, but if you need to filter out and display more specific output, increase the name space filter.
```
DEBUG=verdaccio:plugin:* node packages/verdaccio/debug/bootstrap.js
```
The debug code is intended to analyze what is happening under the hood and none of the output is gathered with the logger module.
## Reporting Bugs
**Bugs are considered features that are not working as described in documentation.**
If you've found a bug in Verdaccio **that isn't a security risk**, please file
a report in our [issue tracker](https://github.com/verdaccio/verdaccio/issues).
> **NOTE: Verdaccio still does not support all npm commands. Some were not
> considered important and others have not been requested yet.**
### Read the documentation
Check whether you are using the software in the way is documented [documentation](http://www.verdaccio.org/docs/en/installation.html).
### What's is not considered a bug?
- _Third party integrations_: proxies integrations, external plugins.
- _Package managers_: If a package manager does not support a specific command or cannot be reproduced with another package manager.
- _Features clearly flagged as not supported_.
- _Node.js issues installation in any platform_: If you cannot install the global package ( this is considered external issue)
- Any ticket which has the flagged as [external issue](https://github.com/verdaccio/verdaccio/labels/external-issue).
If you intent to report a **security** issue, please follow our [Security policy guidelines](https://github.com/verdaccio/verdaccio/security/policy).
### Issue Search
Before consider report a bug, please follow this steps before:
- Search if has already been reported via the issue search.
- Look for the **question** label: we have labelled questions for easy follow-up as [questions](https://github.com/verdaccio/verdaccio/labels/question).
In case any of those match with your search, up-vote it (using GitHub reactions) or add additional helpful details to the existing issue to show that it's affecting multiple people.
### Chat
Questions can be asked via [Discord](http://chat.verdaccio.org/)
**Please use the `#help` channel.**
## Request Features
New feature requests are welcome. Analyse whether the idea fits within scope of
the project. Then, detail your request, ensuring context and use case is provided.
**Please provide:**
- A detailed description the advantages of your request
- Whether or not it's compatible with `npm`, `pnpm` and [_yarn classic_](https://github.com/yarnpkg/yarn) or [_yarn berry_](https://github.com/yarnpkg/berry).
- A potential implementation or design
- Whatever else you have in your mind 🤓
## Contributing Guidelines
This is the most exciting part, when you became a Verdaccio contributor 🙌🏼, to ensure a fast code review and merge, please follow the next guidelines:
> Any contribution gives you the right to be part of this organization as _collaborator_.
### Submitting a Pull Request
The following are the steps you should follow when creating a pull request.
Subsequent pull requests only need to follow step 3 and beyond.
1. Fork the repository on GitHub
2. Clone the forked repository to your machine
3. Make your changes and commit them to your local repository
4. Rebase and push your commits to your GitHub remote fork/repository
5. Issue a Pull Request to the official repository
6. Your Pull Request is reviewed by a committer and merged into the repository
**NOTE**: While there are other ways to accomplish the steps using other tools,
the examples here will assume most actions will be performed via `git` on
command line.
For more information on maintaining a fork, please see the GitHub Help article
titled [Fork a Repo](https://help.github.com/articles/fork-a-repo/), and
information on [rebasing](https://git-scm.com/book/en/v2/Git-Branching-Rebasing).
### Make Changes and Commit
#### Caveats
Feel free to commit as much times you want in your branch, but keep on mind on this repository we `git squash` on merge by default, any other way is forbidden since we intent to have a clean git history.
#### Before Commit
Before committing, **you must ensure there are no linting errors and
all tests pass.**
To do this, run these commands before create the PR:
```bash
yarn node --inspect-brk --expose-gc $(yarn bin jest) test --runInBand --silent --logHeapUsage test/unit/modules/api/publish.spec.ts
pnpm lint
pnpm format
pnpm build
pnpm test
```
> note: eslint and formatting are running separately, keep code formatting before push.
All good? perfect, then you should create the pull request.
#### Commit Guidelines
For example:
- `feat: A new feature`
- `fix: A bug fix`
A commit of the type feat introduces a new feature to the codebase
(this correlates with MINOR in semantic versioning).
e.g.:
```
feat: xxxxxxxxxx
```
A commit of the type fix patches a bug in your codebase (this correlates with PATCH in semantic versioning).
e.g.:
```
fix: xxxxxxxxxxx
```
Commits types such as as `docs:`,`style:`,`refactor:`,`perf:`,`test:`
and `chore:` are valid but have no effect on versioning. **It would be great if you use them.**
All commits message are going to be validated when they are created using husky hooks.
> Please, try to provide one single commit to help a clean and easy merge process.
### Adding a changeset
We use [changesets](https://github.com/atlassian/changesets) in order to generate a detailed Changelog as possible.
Add a changeset with your Pull Request is essential if you want your contribution get merged. To create a changeset please run:
```
pnpm changeset
```
Then select the packages you want to include in your changeset navigating through them and press the spacebar to check it, on finish press enter to move to the next step.
```
🦋 Which packages would you like to include? …
✔ changed packages
changed packages
✔ @verdaccio/api
✔ @verdaccio/auth
✔ @verdaccio/cli
✔ @verdaccio/config
✔ @verdaccio/commons-api
```
The next question would be if you want a _major bump_, this is not the usual scenario, most likely would be a patch, in that case press enter 2 times (to skip minor)
```
🦋 Which packages should have a major bump? …
✔ all packages
✔ @verdaccio/config@5.0.0-alpha.0
```
Once the desired bump you need, the CLI will ask for a summary, here you have fully freedom what to include.
```
🦋 Which packages would you like to include? · @verdaccio/config
🦋 Which packages should have a major bump? · No items were selected
🦋 Which packages should have a minor bump? · No items were selected
🦋 The following packages will be patch bumped:
🦋 @verdaccio/config@5.0.0-alpha.0
🦋 Please enter a summary for this change (this will be in the changelogs). Submit empty line to open external editor
🦋 Summary
```
The last step is confirm your changeset or abort the operation.
```
🦋 Is this your desired changeset? (Y/n) · true
🦋 Changeset added! - you can now commit it
🦋
🦋 If you want to modify or expand on the changeset summary, you can find it here
🦋 info /Users/user/verdaccio.clone/.changeset/light-scissors-smell.md
```
Once the changeset is added (all will have an unique name) you can freely edit using markdown, adding additional information, code snippets or what you consider is relevant.
All that information will be part of the **changelog**, be concise but informative. It is considered a good option to add your nickname and GitHub link to your profile.
**PRs that do not follow the commit message guidelines will not be merged.**
### Update Tests
**Any change in source code must include test updates**.
If you need help with how testing works, please [refer to the following guide](https://github.com/verdaccio/verdaccio/wiki/Running-and-Debugging-tests).
**If you are introducing new features, you MUST include new tests. PRs for
features without tests will not be merged.**
## Develop Plugins
Plugins are add-ons that extend the functionality of the application.
If you want to develop your own plugin:
1. Check whether there is a legacy Sinopia plugin for the feature that you need
via [npmjs](https://www.npmjs.com/search?q=sinopia)
2. Keep in mind the [life-cycle to load a plugin](https://verdaccio.org/docs/en/dev-plugins)
3. You are free to host your plugin in your repository
4. Provide a detailed description of your plugin to help users understand how to use it.

View File

@@ -1,5 +1,4 @@
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
@@ -37,5 +36,4 @@
</table>
<!-- markdownlint-enable -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->

View File

@@ -1,37 +1,25 @@
FROM --platform=${BUILDPLATFORM:-linux/amd64} node:22.13.1-alpine as builder
FROM --platform=${BUILDPLATFORM:-linux/amd64} node:14.15.1-alpine as builder
ENV NODE_ENV=production \
VERDACCIO_BUILD_REGISTRY=https://registry.npmjs.org \
HUSKY_SKIP_INSTALL=1 \
CI=true \
HUSKY_DEBUG=1
ENV NODE_ENV=development \
VERDACCIO_BUILD_REGISTRY=https://registry.verdaccio.org
RUN apk add --force-overwrite && \
apk --no-cache add openssl ca-certificates wget && \
apk --no-cache add g++ gcc libgcc libstdc++ linux-headers make python3 && \
RUN apk --no-cache add openssl ca-certificates wget && \
apk --no-cache add g++ gcc libgcc libstdc++ linux-headers make python && \
wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
wget -q https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-2.35-r0.apk && \
apk add --force-overwrite glibc-2.35-r0.apk
wget -q https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.25-r0/glibc-2.25-r0.apk && \
apk add glibc-2.25-r0.apk
WORKDIR /opt/verdaccio-build
COPY . .
## build the project and create a tarball of the project for later
## global installation
RUN yarn config set npmRegistryServer $VERDACCIO_BUILD_REGISTRY && \
yarn config set enableProgressBars true && \
yarn config set enableScripts false && \
yarn install --immutable && \
yarn build
## pack the project
RUN yarn pack --out verdaccio.tgz \
&& mkdir -p /opt/tarball \
&& mv /opt/verdaccio-build/verdaccio.tgz /opt/tarball
## clean up and reduce bundle size
RUN rm -Rf /opt/verdaccio-build
RUN npm -g i pnpm@latest && \
pnpm config set registry $VERDACCIO_BUILD_REGISTRY && \
pnpm recursive install --frozen-lockfile --ignore-scripts && \
pnpm run build
# FIXME: need to remove devDependencies from the build
# RUN pnpm install --prod --ignore-scripts
FROM node:22.13.1-alpine
FROM node:14.15.1-alpine
LABEL maintainer="https://github.com/verdaccio/verdaccio"
ENV VERDACCIO_APPDIR=/opt/verdaccio \
@@ -42,63 +30,28 @@ ENV VERDACCIO_APPDIR=/opt/verdaccio \
ENV PATH=$VERDACCIO_APPDIR/docker-bin:$PATH \
HOME=$VERDACCIO_APPDIR
# yarn version included in [`node:alpine` Docker image](https://github.com/nodejs/docker-node/blob/b3d8cc15338c545a4328286b2df806b511e2b31b/22/alpine3.21/Dockerfile#L81)
ENV YARN_VERSION=1.22.22
WORKDIR $VERDACCIO_APPDIR
# https://github.com/Yelp/dumb-init
RUN apk --no-cache add openssl dumb-init
RUN mkdir -p /verdaccio/storage /verdaccio/plugins /verdaccio/conf
COPY --from=builder /opt/tarball .
COPY --from=builder /opt/verdaccio-build .
USER root
# install verdaccio as a global package so is fully handled by npm
# ensure none dependency is being missing and is prod by default
RUN npm install -g $VERDACCIO_APPDIR/verdaccio.tgz \
# copy default config file
&& cp /usr/local/lib/node_modules/verdaccio/node_modules/@verdaccio/config/build/conf/docker.yaml /verdaccio/conf/config.yaml \
## clean up cache
&& npm cache clean --force \
&& rm -Rf .npm/ \
&& rm $VERDACCIO_APPDIR/verdaccio.tgz \
# yarn is not need it after this step
# Also remove the symlinks added in the [`node:alpine` Docker image](https://github.com/nodejs/docker-node/blob/b3d8cc15338c545a4328286b2df806b511e2b31b/22/alpine3.21/Dockerfile#L99-L100).
&& rm -Rf /opt/yarn-v$YARN_VERSION/ /usr/local/bin/yarn /usr/local/bin/yarnpkg
RUN ls packages/config/src/conf
ADD packages/config/src/conf/docker.yaml /verdaccio/conf/config.yaml
ADD docker-bin $VERDACCIO_APPDIR/docker-bin
# Create a non-root system user for running Verdaccio securely
# - Uses custom UID from $VERDACCIO_USER_UID
# - Sets home directory to $VERDACCIO_APPDIR
# - Assigns a shell of /sbin/nologin to prevent login access
RUN adduser -u $VERDACCIO_USER_UID -S -D -h $VERDACCIO_APPDIR -g "$VERDACCIO_USER_NAME user" -s /sbin/nologin $VERDACCIO_USER_NAME && \
# Ensure Verdaccio's CLI entry points and custom docker binaries are executable
chmod -R +x /usr/local/lib/node_modules/verdaccio/bin/verdaccio $VERDACCIO_APPDIR/docker-bin && \
# Give ownership of critical runtime folders to the Verdaccio user
chown -R $VERDACCIO_USER_UID:root /verdaccio/storage /verdaccio/conf && \
# Allow group access to config and storage so other containers (e.g., volumes or init containers) can read/write if needed
chmod -R g=u /verdaccio/storage /verdaccio/conf /etc/passwd
chmod -R +x $VERDACCIO_APPDIR/packages/verdaccio/bin $VERDACCIO_APPDIR/docker-bin && \
chown -R $VERDACCIO_USER_UID:root /verdaccio/storage && \
chmod -R g=u /verdaccio/storage /etc/passwd
# Switch to the non-root Verdaccio user by UID for improved security
# This ensures all following operations (including `CMD`) run as an unprivileged user
USER $VERDACCIO_USER_UID
# Expose Verdaccio's listening port (default: 4873) to the host
# This does not publish the port — that's handled at runtime with `-p` or `--publish`
EXPOSE $VERDACCIO_PORT
# Declare the storage directory as a Docker volume
# This allows data (packages, logs, etc.) to persist outside the container lifecycle
VOLUME /verdaccio/storage
# Set the entrypoint script
# - Used to adjust UID/GID dynamically in runtime (e.g. OpenShift)
# - Keeps CMD intact and allows passing custom commands
ENTRYPOINT ["uid_entrypoint"]
# Default command to start Verdaccio using the custom config
# - Uses environment variables for protocol and port binding
CMD verdaccio --config /verdaccio/conf/config.yaml --listen $VERDACCIO_PROTOCOL://0.0.0.0:$VERDACCIO_PORT
CMD $VERDACCIO_APPDIR/packages/verdaccio/bin/verdaccio --config /verdaccio/conf/config.yaml --listen $VERDACCIO_PROTOCOL://0.0.0.0:$VERDACCIO_PORT

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2023 Verdaccio contributors
Copyright (c) 2018 Verdaccio community
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

255
README.md
View File

@@ -1,8 +1,6 @@
![verdaccio logo](https://cdn.verdaccio.dev/readme/verdaccio@2x.png)
![verdaccio gif](https://cdn.verdaccio.dev/readme/readme-website.png)
# Version 6
# Version 6.x (Under development)
[Verdaccio](https://verdaccio.org/) is a simple, **zero-config-required local private npm registry**.
No need for an entire database just to get started! Verdaccio comes out of the box with
@@ -12,233 +10,57 @@ For those looking to extend their storage capabilities, Verdaccio
**supports various community-made plugins to hook into services such as Amazon's s3,
Google Cloud Storage** or create your own plugin.
[![verdaccio (latest)](https://img.shields.io/npm/v/verdaccio/latest.svg)](https://www.npmjs.com/package/verdaccio)
[![verdaccio (downloads)](https://img.shields.io/npm/dy/verdaccio.svg)](https://www.npmjs.com/package/verdaccio)
[![docker pulls](https://img.shields.io/docker/pulls/verdaccio/verdaccio.svg?maxAge=43200)](https://verdaccio.org/docs/en/docker.html)
[![backers](https://opencollective.com/verdaccio/tiers/backer/badge.svg?label=Backer&color=brightgreen)](https://opencollective.com/verdaccio)
[![discord](https://img.shields.io/discord/388674437219745793.svg)](https://discord.gg/7qWJxBf)
[![stackshare](https://img.shields.io/badge/Follow%20on-StackShare-blue.svg?logo=stackshare&style=flat)](https://stackshare.io/verdaccio)
[![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/verdaccio/localized.svg)](https://crowdin.com/project/verdaccio)
[![TODOs](https://badgen.net/https/api.tickgit.com/badgen/github.com/verdaccio/verdaccio)](https://www.tickgit.com/browse?repo=github.com/verdaccio/verdaccio)
[![Twitter followers](https://img.shields.io/twitter/follow/verdaccio_npm.svg?style=social&label=Follow)](https://twitter.com/verdaccio_npm)
[![Github](https://img.shields.io/github/stars/verdaccio/verdaccio.svg?style=social&label=Stars)](https://github.com/verdaccio/verdaccio/stargazers)
[![StandWithUkraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://github.com/vshymanskyy/StandWithUkraine/blob/main/docs/README.md)
## Install
## Install 6.x
Install with npm:
> ⚠️ Not available on npmjs
With docker
```bash
npm install --global verdaccio
```
**Node.js v18 or higher is required for Verdaccio**
> It's recommended using Node.js 20 (or latest LTS)
or pull [Docker official image](https://verdaccio.org/docs/docker)
```bash
docker pull verdaccio/verdaccio
```
and run
```bash
docker run -it --rm --name verdaccio -p 4873:4873 verdaccio/verdaccio
```
or with _helm_ [official chart](https://github.com/verdaccio/charts).
```bash
helm repo add verdaccio https://charts.verdaccio.org
helm repo update
helm install verdaccio/verdaccio
```
## Programmatic API
Verdaccio can be used as a module for launch a server programmatically, [you can find more info at the website](https://verdaccio.org/docs/verdaccio-programmatically#using-the-module-api).
```
import {runServer} from 'verdaccio';
const app = await runServer(); // default configuration
const app = await runServer('./config/config.yaml');
const app = await runServer({ configuration });
app.listen(4873, (event) => {
// do something
});
```
## Plugins
You can develop your own [plugins](https://verdaccio.org/docs/plugins) with the [verdaccio generator](https://github.com/verdaccio/generator-verdaccio-plugin). Installing [Yeoman](https://yeoman.io/) is required.
Learn more [here](https://verdaccio.org/docs/dev-plugins) how to develop plugins. Share your plugins with the community.
## Donations
Verdaccio is run by **volunteers**; nobody is working full-time on it. If you find this project to be useful and would like to support its development and maintenance.
You can donate at **[Open Collective](https://opencollective.com/verdaccio)** 💵👍🏻 starting from _$1/month_ or just one single contribution.
## What does Verdaccio do for me?
### Use private packages
If you want to use all benefits of npm package system in your company without sending all code to the public, and use your private packages just as easy as public ones.
### Cache npmjs.org registry
If you have more than one server you want to install packages on, you might want to use this to decrease latency
(presumably "slow" npmjs.org will be connected to only once per package/version) and provide limited failover (if npmjs.org is down, we might still find something useful in the cache) or avoid issues like _[How one developer just broke Node, Babel and thousands of projects in 11 lines of JavaScript](https://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/)_, _[Many packages suddenly disappeared](https://github.com/npm/registry-issue-archive/issues/255)_ or _[Registry returns 404 for a package I have installed before](https://github.com/npm/registry-issue-archive/issues/329)_.
### Link multiple registries
If you use multiples registries in your organization and need to fetch packages from multiple sources in one single project you might take advance of the uplinks feature with Verdaccio, chaining multiple registries and fetching from one single endpoint.
### Override public packages
If you want to use a modified version of some 3rd-party package (for example, you found a bug, but maintainer didn't accept pull request yet), you can publish your version locally under the same name. See in detail [here](https://verdaccio.org/docs/en/best#override-public-packages).
### E2E Testing
Verdaccio has proved to be a lightweight registry that can be
booted in a couple of seconds, fast enough for any CI. Many open source projects use verdaccio for end to end testing, to mention some examples, **create-react-app**, **mozilla neutrino**, **pnpm**, **storybook**, **babel.js**, **angular-cli** or **docusaurus**. You can read more in [here](https://verdaccio.org/docs/e2e).
Furthermore, here few examples how to start:
- [e2e-ci-example-gh-actions](https://github.com/juanpicado/e2e-ci-example-gh-actions)
- [verdaccio-end-to-end-tests](https://github.com/juanpicado/verdaccio-end-to-end-tests)
- [verdaccio-fork](https://github.com/juanpicado/verdaccio-fork)
## Talks
- [**NodeTLV 20222** - Deep dive into Verdaccio, a lightweight Node.js registry - **Juan Picado**](https://portal.gitnation.org/contents/five-ways-of-taking-advantage-of-verdaccio-your-private-and-proxy-nodejs-registry)
- [Five Ways of Taking Advantage of Verdaccio, Your Private and Proxy Node.js Registry **Node Congress 2022** - **Juan Picado**](https://portal.gitnation.org/contents/five-ways-of-taking-advantage-of-verdaccio-your-private-and-proxy-nodejs-registry)
- [Using Docker and Verdaccio to make Integration Testing Easy - **Docker All Hands #4 December - 2021** - **Juan Picado**](https://www.youtube.com/watch?v=zRI0skF1f8I)
[View more in the YouTube channel](https://www.youtube.com/channel/UC5i20v6o7lSjXzAHOvatt0w).
## Get Started
Run in your terminal
```bash
verdaccio
```
You would need set some npm configuration, this is optional.
```bash
$ npm set registry http://localhost:4873/
```
For one-off commands or to avoid setting the registry globally:
```bash
NPM_CONFIG_REGISTRY=http://localhost:4873 npm i
```
Now you can navigate to [http://localhost:4873/](http://localhost:4873/) where your local packages will be listed and can be searched.
> Warning: Verdaccio [does not currently support PM2's cluster mode](https://github.com/verdaccio/verdaccio/issues/1301#issuecomment-489302298), running it with cluster mode may cause unknown behavior.
## Publishing
#### 1. create a user and log in
```bash
npm adduser --registry http://localhost:4873
```
> if you use HTTPS, add an appropriate CA information ("null" means get CA list from OS)
```bash
$ npm set ca null
```
#### 2. publish your package
```bash
npm publish --registry http://localhost:4873
```
This will prompt you for user credentials which will be saved on the `verdaccio` server.
## Docker
Below are the most commonly needed information,
every aspect of Docker and verdaccio is [documented separately](https://www.verdaccio.org/docs/en/docker.html)
```
docker pull verdaccio/verdaccio
```
Available as [tags](https://hub.docker.com/r/verdaccio/verdaccio/tags/).
```
docker pull verdaccio/verdaccio:6.x-next
```
### Running verdaccio using Docker
## Development
To run the docker container:
Please check [docs/development.md](docs/development.md) for further notes.
```bash
docker run -it --rm --name verdaccio -p 4873:4873 verdaccio/verdaccio
```
## Roadmap
Docker examples are available [in this repository](https://github.com/verdaccio/docker-examples).
Please check [the roadmap](https://github.com/verdaccio/verdaccio/discussions/1690) if you are willing to contribute.
## Compatibility
## Donations
Verdaccio aims to support all features of a standard npm client that make sense to support in private repository. Unfortunately, it isn't always possible.
Verdaccio is run by **volunteers**; nobody is working full-time on it. If you find this project to be useful and would like to support its development, consider making a donation - **your logo might end up in this readme.** 😉
### Basic features
- Installing packages (`npm install`, `npm upgrade`, etc.) - **supported**
- Publishing packages (`npm publish`) - **supported**
### Advanced package control
- Unpublishing packages (`npm unpublish`) - **supported**
- Tagging (`npm tag`) - **supported**
- Deprecation (`npm deprecate`) - **supported**
### User management
- Registering new users (`npm adduser {newuser}`) - **supported**
- Change password (`npm profile set password`) - **supported**
- Transferring ownership (`npm owner add {user} {pkg}`) - not supported, _PR-welcome_
- Token (`npm token`) - **supported** (under flag)
### Miscellany
- Search (`npm search`) - **supported** (cli (`/-/all` and `v1`) / browser)
- Ping (`npm ping`) - **supported**
- Starring (`npm star`, `npm unstar`, `npm stars`) - **supported**
### Security
- npm/yarn audit - **supported**
**[Donate](https://opencollective.com/verdaccio)** 💵👍🏻 starting from _\$1/month_ or just one single contribution.
## Report a vulnerability
If you want to report a security vulnerability, please follow the steps which we have defined for you in our [security policy](https://github.com/verdaccio/verdaccio/security/policy).
## Contributors
## Open Collective Sponsors
| [Juan Picado](https://github.com/juanpicado) | [Ayush Sharma](https://github.com/ayusharma) | [Sergio Hg](https://github.com/sergiohgz) |
| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| ![jotadeveloper](https://avatars3.githubusercontent.com/u/558752?s=80&v=4) | ![ayusharma](https://avatars2.githubusercontent.com/u/6918450?s=80&v=4) | ![sergiohgz](https://avatars2.githubusercontent.com/u/14012309?s=80&v=4) |
| [@jotadeveloper](https://fosstodon.org/@jotadeveloper) | [@ayusharma\_](https://twitter.com/ayusharma_) | [@sergiohgz](https://twitter.com/sergiohgz) |
| [Priscila Oliveria](https://github.com/priscilawebdev) | [Daniel Ruf](https://github.com/DanielRuf) |
| ![priscilawebdev](https://avatars2.githubusercontent.com/u/29228205?s=80&v=4) | ![DanielRuf](https://avatars3.githubusercontent.com/u/827205?s=80&v=4) |
| [@priscilawebdev](https://twitter.com/priscilawebdev) | [@DanielRufde](https://twitter.com/DanielRufde) |
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio#sponsor)]
[See the full list of contributors is at the website.](https://verdaccio.org/contributors)
[![sponsor](https://opencollective.com/verdaccio/sponsor/0/avatar.svg)](https://opencollective.com/verdaccio/sponsor/0/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/1/avatar.svg)](https://opencollective.com/verdaccio/sponsor/1/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/2/avatar.svg)](https://opencollective.com/verdaccio/sponsor/2/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/3/avatar.svg)](https://opencollective.com/verdaccio/sponsor/3/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/4/avatar.svg)](https://opencollective.com/verdaccio/sponsor/4/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/5/avatar.svg)](https://opencollective.com/verdaccio/sponsor/5/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/6/avatar.svg)](https://opencollective.com/verdaccio/sponsor/6/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/7/avatar.svg)](https://opencollective.com/verdaccio/sponsor/7/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/8/avatar.svg)](https://opencollective.com/verdaccio/sponsor/8/website)
[![sponsor](https://opencollective.com/verdaccio/sponsor/9/avatar.svg)](https://opencollective.com/verdaccio/sponsor/9/website)
## Open Collective Backers
@@ -248,16 +70,11 @@ Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com
## Special Thanks
Thanks to the following companies to help us to achieve our goals providing free open source licenses. Every company provides enough resources to move this project forward.
Thanks to the following companies to help us to achieve our goals providing free open source licenses.
| Company | Logo | License |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| JetBrains | [![jetbrain](assets/thanks/jetbrains/logo.png)](https://www.jetbrains.com/) | JetBrains provides licenses for products for active maintainers, renewable yearly |
| Crowdin | [![crowdin](assets/thanks/crowdin/logo.png)](https://crowdin.com/) | Crowdin provides platform for translations |
| BrowserStack | [![browserstack](https://cdn.verdaccio.dev/readme/browserstack_logo.png)](https://www.browserstack.com/) | BrowserStack provides plan to run End to End testing for the UI |
| Netlify | [![netlify](https://www.netlify.com/img/global/badges/netlify-color-accent.svg)](https://www.netlify.com/) | Netlify provides pro plan for website deployment |
| Algolia | [![algolia](https://cdn.verdaccio.dev/sponsor/logo/algolia/logo.png)](https://algolia.com/) | Algolia provides search services for the website |
| Docker | [![docker](https://cdn.verdaccio.dev/sponsor/logo/docker/docker.png)](https://www.docker.com/community/open-source/application) | Docker offers unlimited pulls and unlimited egress to any and all users |
[![jetbrain](assets/thanks/jetbrains/logo.png)](https://www.jetbrains.com/)
[![crowdin](assets/thanks/crowdin/logo.png)](https://crowdin.com/)
[![balsamiq](assets/thanks/balsamiq/logo.jpg)](https://balsamiq.com/)
## Contributors
@@ -271,16 +88,16 @@ If you have any issue you can try the following options, do no desist to ask or
- [Blog](https://verdaccio.org/blog/)
- [Donations](https://opencollective.com/verdaccio)
- [Reporting an issue](https://github.com/verdaccio/verdaccio/issues/new/choose)
- [Reporting an issue](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md#reporting-a-bug)
- [Running discussions](https://github.com/verdaccio/verdaccio/issues?q=is%3Aissue+is%3Aopen+label%3Adiscuss)
- [Chat](https://discord.gg/7qWJxBf)
- [Chat](http://chat.verdaccio.org/)
- [Logos](https://verdaccio.org/docs/en/logo)
- [Docker Examples](https://github.com/verdaccio/verdaccio/tree/master/docker-examples)
- [FAQ](https://github.com/verdaccio/verdaccio/discussions/categories/q-a)
- [Docker Examples](https://github.com/verdaccio/docker-examples)
- [FAQ](https://github.com/verdaccio/verdaccio/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Aquestion%20)
### License
Verdaccio is [MIT licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
The Verdaccio documentation and logos (excluding /thanks, e.g., .md, .png, .sketch) files within the /assets folder) is
[Creative Commons licensed](https://creativecommons.org/licenses/by/4.0/).
[Creative Commons licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE-docs).

View File

@@ -1,5 +1,75 @@
# Security Policy
For the latest version of the security policy, please refer to the official page:
## Supported versions
[Verdaccio Security Policy](https://github.com/verdaccio/verdaccio/blob/master/SECURITY.md)
The following table describes the versions of this project that are currently supported with security updates:
| Version | Supported |
| ------- | ------------------ |
| 2.x | :x: |
| 3.x | :x: |
| 4.x | :white_check_mark: |
## Responsible disclosure security policy
A responsible disclosure policy helps protect users of the project from publicly disclosed security vulnerabilities without a fix by employing a process where vulnerabilities are first triaged in a private manner, and only publicly disclosed after a reasonable time period that allows patching the vulnerability and provides an upgrade path for users.
When contacting us directly via email, we will do our best efforts to respond in a reasonable time to resolve the issue. When contacting a security program their disclosure policy will provide details on timeframe, processes and paid bounties.
We kindly ask you to refrain from malicious acts that put our users, the project, or any of the projects team members at risk.
## Reporting a security issue
> Please do not use the provided email address to report issues which are not related to security vulnerabilities
At Verdaccio, we consider the security of our systems a top priority. But no matter how much effort we put into system security, there can still be vulnerabilities present.
If you discover a security vulnerability, please use one of the following means of communications to report it to us:
- Report the security issue to the Node.js Security WG through the [HackerOne program](https://hackerone.com/nodejs-ecosystem) for ecosystem modules on npm, or to [Snyk Security Team](https://snyk.io/vulnerability-disclosure). They will help triage the security issue and work with all involved parties to remediate and release a fix.
Note that time-frame and processes are subject to each programs own policy.
- Report the security issue to the project maintainers directly at verdaccio@pm.me. If the report contains highly sensitive information, please be advised to encrypt your findings using our [PGP key](https://verdaccio.nyc3.digitaloceanspaces.com/gpg/publickey.verdaccio@pm.me.asc) which is also available in this document.
Your efforts to responsibly disclose your findings are sincerely appreciated and will be taken into account to acknowledge your contributions.
## PGP key
The following is this projects PGP key which should be used to encrypt any sensitive information shared on unsecured medium such as e-mails:
```
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: OpenPGP.js v4.5.1
Comment: https://openpgpjs.org
xsBNBFzm3asBCACxnJDv1r6dxiM2e8iqS6B7fxY2I3X1Rc+3m8mhXOwVwRG4
AOrQ417oSzsVLf4iocg+DWrtxzY79odTLJEovVt79rxwqIIl4y96tH+29kLB
ao7eaYZacfstonVkBAmxBLaYv1x7cqWuukm6sBCOxapW1X9BcbR3vOghDziY
/1AwNjupAOPvKNMtghjrdh3w0iMfZS1hw28zjM1oCeezEil+CTjgQDN+69qS
UFG/BInJ7CVn9TvhU85inSwpxVa576fkhvFoNUrGvFvYRWtXRJndbRdBodVj
C9At/Gb2IeNf7xqXH2KloZ1yaVNVSzLX4jqrMWeF+9Z12SjUyL6G9TwDABEB
AAHNIXZlcmRhY2Npb0BwbS5tZSA8dmVyZGFjY2lvQHBtLm1lPsLAdQQQAQgA
HwUCXObdqwYLCQcIAwIEFQgKAgMWAgECGQECGwMCHgEACgkQpSvoGbwFJYhn
2wf+JF+yLQXh1EFMih6lpbx243hvglgOWmcigYVRh5mSfULcdW2pmkPQXqhE
DW73qqwN9G9piiPnGMw7sKoB7XJVuFKyvHOYKtem5UQVRvs2rTxnSc5qFcUJ
0w3Tw/pZ9B3fYAEYti2B/GsSOzaECfBKCFOg15xXGAdwfgff5FsorN1Gb6MG
eCO9c8faSF/+fQUCfokwMDVzxXQFZEMx3q/rHVJ/Fm+XelZ+00c9fdyiuPW5
dM9gATle7lz0iPtxaUDGLW8QZ/7b6O8IJ1kle0tL4AE++bXsVWxNdzhlNohH
Hn09sIdFnG4ySTz4YJjiDd70ZdQjOGEGvutymEIN1xcNq87ATQRc5t2rAQgA
yX2ZhUCtrz7lzK0992yveB+duVF//yo9Pei2ra9Z3GNmA+oWlRH1FTWpAmVH
uDdUchTnxAwaKntabt3Mb1AgEZwrdiG4LuHFbdx2ls93BJ5lXdp7vB6pVf3N
IrhHKyQ/Y5L5kMSj/GjrhO19zmj6mPPEgb3M3ZIZjQUF4pro0pExuAPA9Wxe
awn5+0BUYFs4mZQDtTdiVuz5tWA0fNtt1aBfOPA97tmn18y4b1b0iQIJQpep
BVVnFLeAZOevDcBJFbmQOdAjufWSSgpzX+FZ3rx6RVwwKxUiVQyUuwSQkKh5
RufZ5zE0y7Fe/YlWXbKoj4zNJqYtjPSPngQRWf7UpwARAQABwsBfBBgBCAAJ
BQJc5t2rAhsMAAoJEKUr6Bm8BSWIoYQH+QDw0Z84tZK4N1lh49hYyohs6vNU
9kG69nKLQA5NymPtTxh8YOJhdJL697FkvKI4OGEO2FXUmcJS3CBJ2nBVKMq2
1biDRKC4OhIU2RgFhS6bHy6VOn24EYs77T+zX8YXpz8ulYVln2b0QZCubN0Z
L50tEC8HnuVMVN+/pqITdD3FjzwGZgHdW8qkKgD6qhObHCl8/cW2buCsaIAY
eZWVPgPY1S1U0V608qYNtUCkrmUW5Sl6YLvz7JTvTsaym5mzyFXF3ErAURgI
/v4XaWmRgNGIxbIxsFGuEs+KIKBQDJmtvJCVpBNS5IYnFf5h/LA5cfkwMKJt
wXhyE0b/iDs60ZM=
=QWXs
-----END PGP PUBLIC KEY BLOCK-----
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Some files were not shown because too many files have changed in this diff Show More