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
297 changed files with 14954 additions and 15369 deletions

View File

@@ -4,7 +4,7 @@
"commit": false,
"linked": [],
"access": "public",
"baseBranch": "master",
"baseBranch": "6.x",
"updateInternalDependencies": "patch",
"ignore": []
}

View File

@@ -1,11 +0,0 @@
---
'@verdaccio/config': patch
---
Feature
- add option to set storage from environment variable VERDACCIO_STORAGE_PATH
#### Related tickets
https://github.com/verdaccio/verdaccio/issues/1681

View File

@@ -1,16 +0,0 @@
---
'@verdaccio/tarball': patch
'@verdaccio/mock': patch
'@verdaccio/ui-theme': patch
'@verdaccio/server': patch
'@verdaccio/utils': patch
'verdaccio': patch
---
Bug Fixes
- fix escaped slash in namespaced packages
#### Related tickets
https://github.com/verdaccio/verdaccio/pull/2193

View File

@@ -47,11 +47,9 @@
"few-cooks-destroy",
"fifty-jars-rest",
"gentle-trains-switch",
"healthy-poets-compare",
"hip-hounds-destroy",
"late-adults-love",
"late-parents-act",
"many-vans-care",
"modern-spies-tell",
"neat-toes-report",
"perfect-kangaroos-agree",
@@ -63,7 +61,6 @@
"smart-apricots-kneel",
"spicy-frogs-press",
"tender-bags-call",
"three-pots-sit",
"two-dolls-check"
"three-pots-sit"
]
}

View File

@@ -1,28 +0,0 @@
---
'@verdaccio/cli': major
'@verdaccio/config': major
'@verdaccio/types': major
'@verdaccio/logger': major
'@verdaccio/node-api': major
'verdaccio-google-cloud': major
'verdaccio': major
---
feat: node api new structure based on promise
```js
import { runServer } from '@verdaccio/node-api';
// or
import { runServer } from 'verdaccio';
const app = await runServer(); // default configuration
const app = await runServer('./config/config.yaml');
const app = await runServer({ configuration });
app.listen(4000, (event) => {
// do something
});
```
### Breaking Change
If you are using the node-api, the new structure is Promise based and less arguments.

View File

@@ -9,4 +9,3 @@ node_modules/
static/
website/
wiki/
dist/

View File

@@ -6,7 +6,7 @@ on:
push:
branches:
- master
- 6.x
env:
CI: true
@@ -17,7 +17,7 @@ jobs:
version:
timeout-minutes: 14
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/master' && github.repository == 'verdaccio/verdaccio'
if: github.ref == 'refs/heads/6.x' && github.repository == 'verdaccio/verdaccio'
steps:
- name: checkout code repository
uses: actions/checkout@v2
@@ -51,7 +51,7 @@ jobs:
run: pnpm build
- name: create versions
uses: verdaccio/changeset-action@master
uses: changesets/action@master
with:
version: pnpm ci:version
commit: 'chore: update versions'

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*

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

@@ -3,8 +3,8 @@ name: CI
on:
push:
branches:
- master
- 'changeset-release/master'
- 6.x
- 'changeset-release/6.x'
pull_request:
paths:
- .changeset/**
@@ -13,228 +13,37 @@ on:
- 'jest/**'
- 'package.json'
- 'pnpm-workspace.yaml'
jobs:
prepare:
runs-on: ubuntu-latest
name: setup verdaccio
services:
verdaccio:
image: verdaccio/verdaccio:5
ports:
- 4873:4873
steps:
- uses: actions/checkout@v2.3.1
- name: Use Node 14
uses: actions/setup-node@v1
with:
node-version: 14
- name: Install pnpm
run: npm i pnpm@latest -g
- name: set store
run: |
mkdir ~/.pnpm-store
pnpm config set store-dir ~/.pnpm-store
- name: Install
run: pnpm recursive install --frozen-lockfile --registry http://localhost:4873
- name: Cache .pnpm-store
uses: actions/cache@v2
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
pnpm-
lint:
runs-on: ubuntu-latest
name: Lint
needs: prepare
steps:
- uses: actions/checkout@v2.3.1
- name: Use Node 16
uses: actions/setup-node@v1
with:
node-version: 16
- name: Install pnpm
run: npm i pnpm@latest -g
- uses: actions/cache@v2
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
- name: Install
run: pnpm recursive install --frozen-lockfile --ignore-scripts
- name: Lint
run: pnpm lint
format:
runs-on: ubuntu-latest
name: Format
needs: prepare
steps:
- uses: actions/checkout@v2.3.1
- name: Use Node 16
uses: actions/setup-node@v1
with:
node-version: 16
- name: Install pnpm
run: npm i pnpm@latest -g
- uses: actions/cache@v2
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
- name: Install
run: pnpm recursive install --frozen-lockfile --ignore-scripts
- name: Lint
run: pnpm format:check
build:
runs-on: ubuntu-latest
name: build
needs: [format, lint]
steps:
- uses: actions/checkout@v2.3.1
- name: Use Node 16
uses: actions/setup-node@v1
with:
node-version: 16
- name: Install pnpm
run: npm i pnpm@latest -g
- uses: actions/cache@v2
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
- name: Install
## we run scripts due gatsby needs it
## when website is excluded we can add --ignore-scripts
run: pnpm recursive install --frozen-lockfile --ignore-scripts
- name: build
run: pnpm build
- name: tar packages
run: |
tar -czvf ${{ github.workspace }}/pkg.tar.gz -C ${{ github.workspace }}/packages .
- uses: actions/upload-artifact@v2
with:
name: verdaccio-artifact
path: pkg.tar.gz
test:
needs: build
ci:
strategy:
fail-fast: true
fail-fast: false
matrix:
os: [ubuntu-latest]
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 }}
- uses: actions/download-artifact@v2
with:
name: verdaccio-artifact
- name: untar packages
run: tar -xzvf pkg.tar.gz -C ${{ github.workspace }}/packages
- name: Install pnpm
run: npm i pnpm@latest -g
- uses: actions/cache@v2
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
- name: Install
run: pnpm recursive install --frozen-lockfile --ignore-scripts
- name: Test
run: pnpm test
ci-e2e-ui:
needs: build
runs-on: ubuntu-latest
name: UI Test E2E Node 14
steps:
- uses: actions/checkout@v2.3.1
- uses: actions/setup-node@v1
with:
node-version: 14
- uses: actions/download-artifact@v2
with:
name: verdaccio-artifact
- name: untar packages
run: tar -xzvf pkg.tar.gz -C ${{ github.workspace }}/packages
- name: Install pnpm
run: npm i pnpm@latest -g
- uses: actions/cache@v2
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
- name: Install
## we need scripts, pupetter downloads aditional content
run: pnpm recursive install --frozen-lockfile
- name: Test UI
run: pnpm test:e2e:ui
env:
DEBUG: verdaccio:e2e*
ci-e2e-cli:
needs: build
runs-on: ubuntu-latest
name: CLI Test E2E Node 14
steps:
- uses: actions/checkout@v2.3.1
- uses: actions/setup-node@v1
with:
node-version: 14
- uses: actions/download-artifact@v2
with:
name: verdaccio-artifact
- name: untar packages
run: tar -xzvf pkg.tar.gz -C ${{ github.workspace }}/packages
- name: Install pnpm
run: npm i pnpm@latest -g
- uses: actions/cache@v2
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
- name: Install
## we need scripts, pupetter downloads aditional content
run: pnpm recursive install --frozen-lockfile
- name: Test CLI
run: pnpm test:e2e:cli
website:
needs: [format, lint]
runs-on: ubuntu-latest
name: website build node 14
steps:
- uses: actions/checkout@v2.3.1
- uses: actions/setup-node@v1
with:
node-version: 14
- name: Install pnpm
run: npm i pnpm@latest -g
- uses: actions/cache@v2
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
- name: Install
run: pnpm recursive install --frozen-lockfile
- name: Build website
run: |
cd website
pnpm build:website
test-windows:
needs: [format, lint]
runs-on: windows-latest
name: windows test node 14
steps:
- uses: actions/checkout@v2.3.1
- name: Use Node 14
uses: actions/setup-node@v1
with:
node-version: 14
- name: Install pnpm
run: npm i pnpm@latest -g
# pnpm cache is not working for windows (we need a solution)
- uses: actions/cache@v2
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
- name: Install
run: pnpm recursive install --frozen-lockfile --ignore-scripts
- name: build
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:*

View File

@@ -1,9 +1,14 @@
name: 'Code scanning - action'
on:
push:
branches-ignore:
- 5.x
- 'changeset-release/6.x'
- 'dev/**'
pull_request:
paths:
- .github/workflows/codeql-analysis.yml
- .github/workflows/ci.yml
- 'packages/**'
schedule:
- cron: '0 2 * * 4'

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

@@ -12,7 +12,7 @@ on:
- 'Dockerfile'
- '.dockerignore'
branches:
- 'master'
- '6.x'
tags:
- 'v*'
jobs:
@@ -34,8 +34,8 @@ jobs:
uses: crazy-max/ghaction-docker-meta@v1
with:
images: ${{ github.repository }}
tag-custom: nightly-master
tag-custom-only: ${{ github.ref == 'refs/heads/master' }}
tag-custom: 6.x-next
tag-custom-only: ${{ github.ref == 'refs/heads/6.x' }}
tag-semver: |
{{version}}
{{major}}

1
.npmrc
View File

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

View File

@@ -2,25 +2,6 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
## [5.0.0](https://github.com/verdaccio/verdaccio/compare/v5.0.0-alpha.7...v5.0.0) (2021-04-09)
### Features
* prepare release for v5 ([#2175](https://github.com/verdaccio/verdaccio/issues/2175)) ([82c5c4e](https://github.com/verdaccio/verdaccio/commit/82c5c4eb32bfcbf9aec7c96340b226b626526b45))
## [5.0.0-alpha.7](https://github.com/verdaccio/verdaccio/compare/v5.0.0-alpha.6...v5.0.0-alpha.7) (2021-04-08)
### Bug Fixes
* ui readme missing css ([#2174](https://github.com/verdaccio/verdaccio/issues/2174)) ([f49ca06](https://github.com/verdaccio/verdaccio/commit/f49ca06c68919f920e10f4f5878c34d5886b2e02))
* Upgrade Node from 14.16 to 14.16.1 for security fixes ([#2172](https://github.com/verdaccio/verdaccio/issues/2172)) ([6ab3163](https://github.com/verdaccio/verdaccio/commit/6ab31639fab97b1b3e6323c4da862a1cae3ae1c6)), closes [/github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V14.md#14](https://github.com/verdaccio//github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V14.md/issues/14)
## [5.0.0-alpha.6](https://github.com/verdaccio/verdaccio/compare/v5.0.0-alpha.5...v5.0.0-alpha.6) (2021-04-06)
## [5.0.0-alpha.5](https://github.com/verdaccio/verdaccio/compare/v5.0.0-alpha.4...v5.0.0-alpha.5) (2021-04-03)
## [5.0.0-alpha.4](https://github.com/verdaccio/verdaccio/compare/v5.0.0-alpha.3...v5.0.0-alpha.4) (2021-04-03)

View File

@@ -1,4 +1,4 @@
FROM --platform=${BUILDPLATFORM:-linux/amd64} node:14.16.1-alpine as builder
FROM --platform=${BUILDPLATFORM:-linux/amd64} node:14.15.1-alpine as builder
ENV NODE_ENV=development \
VERDACCIO_BUILD_REGISTRY=https://registry.verdaccio.org
@@ -19,7 +19,7 @@ RUN npm -g i pnpm@latest && \
# FIXME: need to remove devDependencies from the build
# RUN pnpm install --prod --ignore-scripts
FROM node:14.16.1-alpine
FROM node:14.15.1-alpine
LABEL maintainer="https://github.com/verdaccio/verdaccio"
ENV VERDACCIO_APPDIR=/opt/verdaccio \

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2021 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

214
README.md
View File

@@ -1,10 +1,6 @@
![verdaccio logo](https://cdn.verdaccio.dev/readme/verdaccio@2x.png)
![verdaccio gif](https://cdn.verdaccio.dev/readme/readme-website.png)
# Version 6 (Development branch)
> Looking for Verdaccio 5? Check branch `5.x`.
# 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
@@ -14,209 +10,43 @@ 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)
[![stackshare](https://img.shields.io/badge/Follow%20on-StackShare-blue.svg?logo=stackshare&style=flat)](https://stackshare.io/verdaccio)
[![discord](https://img.shields.io/discord/388674437219745793.svg)](http://chat.verdaccio.org/)
[![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)
## Install
## Install 6.x
Install with npm:
> ⚠️ Not available on npmjs
With docker
```bash
npm install --global verdaccio@6-next --https://registry.verdaccio.org/
docker pull verdaccio/verdaccio:6.x-next
```
> Published on a temporary registry while setup is ready to publish on npmjs
## Development
Please check [docs/development.md](docs/development.md) for further notes.
## Roadmap
Please check [the roadmap](https://github.com/verdaccio/verdaccio/discussions/1690) if you are willing to contribute.
## 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, consider making a donation - **your logo might end up in this readme.** 😉
**[Donate](https://github.com/sponsors/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**, **alfresco** or **eclipse theia**. You can read more in dedicated article to E2E in our blog.
## Talks
### **Node.js Dependency Confusion Attacks**.
[![verdaccio Node.js Dependency Confusion Attacks](https://cdn.verdaccio.dev/readme/devseccon.png)](https://www.youtube.com/watch?v=qTRADSp3Hpo)
You might want to check out as well our previous talks:
- [**OpenJS World 2020** about \*Cover your Projects with a Multi purpose Lightweight Node.js Registry - **Juan Picado\***](https://www.youtube.com/watch?v=oVCjDWeehAQ)
- [ViennaJS Meetup - Introduction to Verdaccio by **Priscila Olivera** and **Juan Picado**](https://www.youtube.com/watch?v=hDIFKzmoCa)
- [Open Source? trivago - Verdaccio (**Ayush** and **Juan Picado**) January 2020](https://www.youtube.com/watch?v=A5CWxJC9xzc)
- [GitNation Open Source Stage - How we have built a Node.js Registry with React - **Juan Picado** December 2019](https://www.youtube.com/watch?v=gpjC8Qp9B9A)
- [Verdaccio - A lightweight Private Proxy Registry built in Node.js | **Juan Picado** at The Destro Dev Show](https://www.youtube.com/watch?reload=9&v=P_hxy7W-IL4&ab_channel=TheDestroDevShow)
## 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:nightly-master
```
Available as [tags](https://hub.docker.com/r/verdaccio/verdaccio/tags/).
### Running verdaccio using Docker
To run the docker container:
```bash
docker run -it --rm --name verdaccio -p 4873:4873 verdaccio/verdaccio
```
Docker examples are available [in this repository](https://github.com/verdaccio/docker-examples).
## Compatibility
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.
### 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**
### Miscellany
- Searching (npm search) - **supported** (cli / 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).
## Core Team
| [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=120&v=4) | ![ayusharma](https://avatars2.githubusercontent.com/u/6918450?s=120&v=4) | ![sergiohgz](https://avatars2.githubusercontent.com/u/14012309?s=120&v=4) |
| [@jotadeveloper](https://twitter.com/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=120&v=4) | ![DanielRuf](https://avatars3.githubusercontent.com/u/827205?s=120&v=4) |
| [@priscilawebdev](https://twitter.com/priscilawebdev) | [@DanielRufde](https://twitter.com/DanielRufde) |
You can find and chat with then over Discord, click [here](http://chat.verdaccio.org) or follow them at _Twitter_.
## Who is using Verdaccio?
- [create-react-app](https://github.com/facebook/create-react-app/blob/master/CONTRIBUTING.md#customizing-e2e-registry-configuration) _(+86.2k ⭐️)_
- [Gatsby](https://github.com/gatsbyjs/gatsby) _(+49.2k ⭐️)_
- [Babel.js](https://github.com/babel/babel) _(+38.5k ⭐️)_
- [Vue CLI](https://github.com/vuejs/vue-cli) _(+27.4k ⭐️)_
- [Angular CLI](https://github.com/angular/angular-cli) _(+24.3k ⭐️)_
- [Uppy](https://github.com/transloadit/uppy) _(+23.8k ⭐️)_
- [bit](https://github.com/teambit/bit) _(+13k ⭐️)_
- [Aurelia Framework](https://github.com/aurelia/framework) _(+11.6k ⭐️)_
- [pnpm](https://github.com/pnpm/pnpm) _(+10.1k ⭐️)_
- [ethereum/web3.js](https://github.com/ethereum/web3.js) _(+9.8k ⭐️)_
- [NX](https://github.com/nrwl/nx) _(+6.1k ⭐️)_
- [webiny-js](https://github.com/webiny/webiny-js) _(+4.3k ⭐️)_
- [Mozilla Neutrino](https://github.com/neutrinojs/neutrino) _(+3.7k ⭐️)_
- [workshopper how to npm](https://github.com/workshopper/how-to-npm) _(+1k ⭐️)_
- [Amazon SDK v3](https://github.com/aws/aws-sdk-js-v3)
- [Amazon Encryption SDK for Javascript](https://github.com/aws/aws-encryption-sdk-javascript)
🤓 Don't be shy, you also can be in [the list](https://github.com/verdaccio/website/blob/master/docs/who-is-using.md).
## Open Collective Sponsors
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)]
@@ -244,9 +74,7 @@ Thanks to the following companies to help us to achieve our goals providing free
[![jetbrain](assets/thanks/jetbrains/logo.png)](https://www.jetbrains.com/)
[![crowdin](assets/thanks/crowdin/logo.png)](https://crowdin.com/)
[![browserstack](https://cdn.verdaccio.dev/readme/browserstack_logo.png)](https://www.browserstack.com/)
Verdaccio also is part of to the [Docker Open Source Program](https://www.docker.com/blog/expanded-support-for-open-source-software-projects/).
[![balsamiq](assets/thanks/balsamiq/logo.jpg)](https://balsamiq.com/)
## Contributors
@@ -259,17 +87,17 @@ This project exists thanks to all the people who contribute. [[Contribute](CONTR
If you have any issue you can try the following options, do no desist to ask or check our issues database, perhaps someone has asked already what you are looking for.
- [Blog](https://verdaccio.org/blog/)
- [Donations](https://github.com/sponsors/verdaccio)
- [Reporting an issue](https://github.com/verdaccio/verdaccio/issues/new/choose)
- [Donations](https://opencollective.com/verdaccio)
- [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](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,19 +1,44 @@
# Docker + Kubernetes Examples
This folder aims to create a collection of Docker and Kubernetes examples.
For more information about the **Helm** Chart, please check it [owns repo](https://github.com/verdaccio/charts).
> Feel free to contribute whether you consider any use case is relevant for the public in general.
## Examples
The following examples aim to be demonstrative and can be either improved or updated.
- [v4 examples](v4/README.md)
- [v5 examples](v5/README.md)
### Verdaccio 5
## Aditional data
- [Docker + Nginx + Verdaccio](v5/reverse_proxy/nginx/README.md)
This folder aims to create a collection of Docker and Kubernetes examples.
### Verdaccio 4
#### Proxies
- [Docker + Apache + Verdaccio](v4/apache-verdaccio/README.md)
- [Docker + Nginx + Verdaccio](v4/reverse_proxy/nginx/README.md)
- [Docker + https-portal Example](v4/https-portal-example/README.md)
#### Plugins
- [Docker + Uplinks Multi Registry](v4/multi-registry-uplink/README.md)
- [Docker + Local Storage](v4/docker-local-storage-volume/readme.md)
- [Docker + External Plugins](v4/docker-plugin-external/README.md)
#### Auth
- [Docker + LDAP (OpenLDAP) Server + Verdaccio 4](v4/ldap-verdaccio/readme.md) by **@kopax**
- [Docker + Gitlab](gitlab-verdaccio/README.md)
- [Docker + Active Directory](https://github.com/Mateus-Oli/verdaccio-ad-docker)
#### Storage
- [Docker + AWS S3 Plugin(localstack) + Verdaccio 4](v4/amazon-s3-docker-example/v4/README.md)
- [Docker + Minio](https://github.com/barolab/verdaccio-minio/tree/master/example)
For more information about the **Helm** Chart, please check it [owns repo](https://github.com/verdaccio/charts).
### Kubernetes
- Kubernetes (minikube) + Verdaccio (Basic Configuration)
@@ -21,7 +46,8 @@ For more information about the **Helm** Chart, please check it [owns repo](https
### External
- [Verdaccio examples for Google Cloud and K8s setups. https://github.com/papezt/verdaccio-examples](https://github.com/papezt/verdaccio-examples)
- [
Verdaccio examples for Google Cloud and K8s setups. https://github.com/papezt/verdaccio-examples](https://github.com/papezt/verdaccio-examples)
### Articles

View File

@@ -1,24 +0,0 @@
# Verdaccio 4
#### Proxies
- [Docker + Apache + Verdaccio](v4/apache-verdaccio/README.md)
- [Docker + Nginx + Verdaccio](v4/reverse_proxy/nginx/README.md)
- [Docker + https-portal Example](v4/https-portal-example/README.md)
#### Plugins
- [Docker + Uplinks Multi Registry](v4/multi-registry-uplink/README.md)
- [Docker + Local Storage](v4/docker-local-storage-volume/readme.md)
- [Docker + External Plugins](v4/docker-plugin-external/README.md)
#### Auth
- [Docker + LDAP (OpenLDAP) Server + Verdaccio 4](v4/ldap-verdaccio/readme.md) by **@kopax**
- [Docker + Gitlab](gitlab-verdaccio/README.md)
- [Docker + Active Directory](https://github.com/Mateus-Oli/verdaccio-ad-docker)
#### Storage
- [Docker + AWS S3 Plugin(localstack) + Verdaccio 4](v4/amazon-s3-docker-example/v4/README.md)
- [Docker + Minio](https://github.com/barolab/verdaccio-minio/tree/master/example)

View File

@@ -1,5 +0,0 @@
# Verdaccio 5
> Before run examples, build the local image by running `pnpm docker`.
- [Docker + Nginx + Verdaccio](v5/reverse_proxy/nginx/README.md)

View File

@@ -44,7 +44,3 @@ The default header to identify the protocol is `X-Forwarded-Proto`, but there ar
```
$ VERDACCIO_FORWARDED_PROTO=CloudFront-Forwarded-Proto verdaccio --listen 5000
```
#### VERDACCIO_STORAGE_PATH
By default, the storage is taken from config file, but using this variable allows to set it from environment variable.

View File

@@ -14,30 +14,30 @@
"url": "https://opencollective.com/verdaccio"
},
"devDependencies": {
"@babel/cli": "7.13.14",
"@babel/core": "7.13.15",
"@babel/node": "7.13.13",
"@babel/plugin-proposal-class-properties": "7.13.0",
"@babel/plugin-proposal-decorators": "7.13.15",
"@babel/cli": "7.12.13",
"@babel/core": "7.12.13",
"@babel/node": "7.12.13",
"@babel/plugin-proposal-class-properties": "7.12.13",
"@babel/plugin-proposal-decorators": "7.12.13",
"@babel/plugin-proposal-export-namespace-from": "7.12.13",
"@babel/plugin-proposal-function-sent": "7.12.13",
"@babel/plugin-proposal-json-strings": "7.13.8",
"@babel/plugin-proposal-nullish-coalescing-operator": "7.13.8",
"@babel/plugin-proposal-json-strings": "7.12.13",
"@babel/plugin-proposal-nullish-coalescing-operator": "7.12.13",
"@babel/plugin-proposal-numeric-separator": "7.12.13",
"@babel/plugin-proposal-object-rest-spread": "7.13.8",
"@babel/plugin-proposal-optional-chaining": "7.13.12",
"@babel/plugin-proposal-object-rest-spread": "7.12.13",
"@babel/plugin-proposal-optional-chaining": "7.12.13",
"@babel/plugin-proposal-throw-expressions": "7.12.13",
"@babel/plugin-syntax-dynamic-import": "7.8.3",
"@babel/plugin-syntax-import-meta": "7.10.4",
"@babel/plugin-transform-async-to-generator": "7.13.0",
"@babel/plugin-transform-classes": "7.13.0",
"@babel/plugin-transform-runtime": "7.13.15",
"@babel/plugin-transform-async-to-generator": "7.12.13",
"@babel/plugin-transform-classes": "7.12.13",
"@babel/plugin-transform-runtime": "7.12.15",
"@babel/polyfill": "7.12.1",
"@babel/preset-env": "7.13.15",
"@babel/preset-react": "7.13.13",
"@babel/preset-typescript": "7.13.0",
"@babel/register": "7.13.14",
"@babel/runtime": "7.13.10",
"@babel/preset-env": "7.12.13",
"@babel/preset-react": "7.12.13",
"@babel/preset-typescript": "7.12.13",
"@babel/register": "7.12.13",
"@babel/runtime": "7.12.13",
"@changesets/changelog-github": "^0.2.8",
"@changesets/cli": "^2.15.0",
"@changesets/get-dependents-graph": "^1.2.0",
@@ -78,7 +78,7 @@
"babel-plugin-emotion": "11.0.0",
"codecov": "3.8.1",
"concurrently": "^5.3.0",
"core-js": "^3.10.1",
"core-js": "^3.8.3",
"cross-env": "7.0.3",
"detect-secrets": "1.0.6",
"eslint": "7.19.0",
@@ -110,11 +110,11 @@
"prettier": "2.2.1",
"rimraf": "3.0.2",
"selfsigned": "1.10.8",
"standard-version": "8.0.0",
"supertest": "4.0.2",
"ts-node": "^9.1.1",
"typescript": "^4.2.4",
"update-ts-references": "2.3.0",
"verdaccio": "^5.0.1",
"typescript": "^4.1.3",
"verdaccio": "next",
"verdaccio-audit": "workspace:*",
"verdaccio-auth-memory": "workspace:*",
"verdaccio-htpasswd": "workspace:*",
@@ -147,8 +147,7 @@
"ci:version": "run-s ci:version:changeset ci:version:install",
"ci:version:install": "pnpm install --frozen-lockfile=false",
"ci:version:changeset": "changeset version",
"ci:publish": "changeset publish",
"ts:ref": "update-ts-references --discardComments"
"ci:publish": "changeset publish"
},
"license": "MIT",
"commitlint": {

View File

@@ -1,32 +1,5 @@
# @verdaccio/api
## 6.0.0-6-next.9
### Patch Changes
- Updated dependencies [1810ed0d]
- Updated dependencies [648575aa]
- @verdaccio/config@6.0.0-6-next.5
- @verdaccio/tarball@11.0.0-6-next.5
- @verdaccio/utils@6.0.0-6-next.4
- @verdaccio/auth@6.0.0-6-next.7
- @verdaccio/hooks@6.0.0-6-next.4
- @verdaccio/store@6.0.0-6-next.7
- @verdaccio/middleware@6.0.0-6-next.7
## 6.0.0-6-next.8
### Patch Changes
- Updated dependencies [5c5057fc]
- @verdaccio/config@6.0.0-6-next.4
- @verdaccio/logger@6.0.0-6-next.4
- @verdaccio/auth@6.0.0-6-next.6
- @verdaccio/hooks@6.0.0-6-next.4
- @verdaccio/store@6.0.0-6-next.6
- @verdaccio/tarball@11.0.0-6-next.4
- @verdaccio/middleware@6.0.0-6-next.6
## 6.0.0-6-next.7
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/api",
"version": "6.0.0-6-next.9",
"version": "6.0.0-6-next.7",
"description": "loaders logic",
"main": "./build/index.js",
"types": "build/index.d.ts",
@@ -39,15 +39,15 @@
},
"license": "MIT",
"dependencies": {
"@verdaccio/auth": "workspace:6.0.0-6-next.7",
"@verdaccio/auth": "workspace:6.0.0-alpha.5",
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3",
"@verdaccio/config": "workspace:6.0.0-6-next.5",
"@verdaccio/hooks": "workspace:6.0.0-6-next.4",
"@verdaccio/logger": "workspace:6.0.0-6-next.4",
"@verdaccio/middleware": "workspace:6.0.0-6-next.7",
"@verdaccio/store": "workspace:6.0.0-6-next.7",
"@verdaccio/tarball": "workspace:11.0.0-6-next.5",
"@verdaccio/utils": "workspace:6.0.0-6-next.4",
"@verdaccio/config": "workspace:6.0.0-alpha.3",
"@verdaccio/hooks": "workspace:6.0.0-alpha.3",
"@verdaccio/logger": "workspace:6.0.0-alpha.3",
"@verdaccio/middleware": "workspace:6.0.0-alpha.5",
"@verdaccio/store": "workspace:6.0.0-6-next.5",
"@verdaccio/tarball": "workspace:11.0.0-6-next.4",
"@verdaccio/utils": "workspace:6.0.0-alpha.3",
"cookies": "0.8.0",
"debug": "^4.1.1",
"express": "4.17.1",
@@ -56,8 +56,8 @@
"semver": "7.3.2"
},
"devDependencies": {
"@verdaccio/server": "workspace:6.0.0-6-next.10",
"@verdaccio/types": "workspace:11.0.0-6-next.4",
"@verdaccio/server": "workspace:6.0.0-6-next.8",
"@verdaccio/types": "workspace:11.0.0-alpha.3",
"body-parser": "1.19.0",
"lodash": "^4.17.20",
"supertest": "next"

View File

@@ -8,34 +8,40 @@
"exclude": ["src/**/*.test.ts"],
"references": [
{
"path": "../auth"
"path": "../utils"
},
{
"path": "../config"
},
{
"path": "../commons"
},
{
"path": "../hooks"
},
{
"path": "../store"
},
{
"path": "../middleware"
},
{
"path": "../auth"
},
{
"path": "../server"
},
{
"path": "../loaders"
},
{
"path": "../logger"
},
{
"path": "../core/commons-api"
},
{
"path": "../core/tarball"
},
{
"path": "../hooks"
},
{
"path": "../logger"
},
{
"path": "../middleware"
},
{
"path": "../server"
},
{
"path": "../store"
},
{
"path": "../utils"
}
]
}

View File

@@ -1,26 +1,5 @@
# @verdaccio/auth
## 6.0.0-6-next.7
### Patch Changes
- Updated dependencies [1810ed0d]
- Updated dependencies [648575aa]
- @verdaccio/config@6.0.0-6-next.5
- @verdaccio/utils@6.0.0-6-next.4
- @verdaccio/loaders@6.0.0-6-next.4
## 6.0.0-6-next.6
### Patch Changes
- Updated dependencies [5c5057fc]
- @verdaccio/config@6.0.0-6-next.4
- @verdaccio/logger@6.0.0-6-next.4
- @verdaccio/auth@6.0.0-6-next.6
- @verdaccio/loaders@6.0.0-6-next.4
- verdaccio-htpasswd@11.0.0-alpha.6
## 5.0.0-alpha.5
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/auth",
"version": "6.0.0-6-next.7",
"version": "6.0.0-alpha.5",
"description": "logger",
"main": "./build/index.js",
"types": "build/index.d.ts",
@@ -39,11 +39,12 @@
},
"license": "MIT",
"dependencies": {
"@verdaccio/auth": "workspace:6.0.0-alpha.5",
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3",
"@verdaccio/config": "workspace:6.0.0-6-next.5",
"@verdaccio/loaders": "workspace:6.0.0-6-next.4",
"@verdaccio/logger": "workspace:6.0.0-6-next.4",
"@verdaccio/utils": "workspace:6.0.0-6-next.4",
"@verdaccio/config": "workspace:6.0.0-alpha.3",
"@verdaccio/loaders": "workspace:6.0.0-alpha.3",
"@verdaccio/logger": "workspace:6.0.0-alpha.3",
"@verdaccio/utils": "workspace:6.0.0-alpha.3",
"verdaccio-htpasswd": "workspace:11.0.0-alpha.6",
"debug": "^4.1.1",
"express": "4.17.1",
@@ -51,8 +52,8 @@
"lodash": "4.17.15"
},
"devDependencies": {
"@verdaccio/mock": "workspace:6.0.0-6-next.5",
"@verdaccio/types": "workspace:11.0.0-6-next.4"
"@verdaccio/mock": "workspace:6.0.0-alpha.3",
"@verdaccio/types": "workspace:11.0.0-alpha.3"
},
"funding": {
"type": "opencollective",

View File

@@ -8,13 +8,10 @@
"exclude": ["src/**/*.test.ts"],
"references": [
{
"path": "../config"
"path": "../utils"
},
{
"path": "../core/commons-api"
},
{
"path": "../core/htpasswd"
"path": "../commons"
},
{
"path": "../loaders"
@@ -22,11 +19,17 @@
{
"path": "../logger"
},
{
"path": "../config"
},
{
"path": "../mock"
},
{
"path": "../utils"
"path": "../core/commons-api"
},
{
"path": "../core/htpasswd"
}
]
}

View File

@@ -1,42 +1,5 @@
# @verdaccio/cli
## 6.0.0-6-next.11
### Patch Changes
- Updated dependencies [1810ed0d]
- @verdaccio/config@6.0.0-6-next.5
- @verdaccio/node-api@6.0.0-6-next.11
## 6.0.0-6-next.10
### Major Changes
- 5c5057fc: feat: node api new structure based on promise
```js
import { runServer } from '@verdaccio/node-api';
// or
import { runServer } from 'verdaccio';
const app = await runServer(); // default configuration
const app = await runServer('./config/config.yaml');
const app = await runServer({ configuration });
app.listen(4000, event => {
// do something
});
```
### Breaking Change
If you are using the node-api, the new structure is Promise based and less arguments.
### Patch Changes
- Updated dependencies [5c5057fc]
- @verdaccio/config@6.0.0-6-next.4
- @verdaccio/node-api@6.0.0-6-next.10
## 6.0.0-6-next.9
### Major Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/cli",
"version": "6.0.0-6-next.11",
"version": "6.0.0-6-next.9",
"author": {
"name": "Juan Picado",
"email": "juanpicado19@gmail.com"
@@ -43,9 +43,9 @@
"build": "pnpm run build:js && pnpm run build:types"
},
"dependencies": {
"@verdaccio/config": "workspace:6.0.0-6-next.5",
"@verdaccio/config": "workspace:6.0.0-alpha.3",
"@verdaccio/cli-ui": "workspace:6.0.0-alpha.3",
"@verdaccio/node-api": "workspace:6.0.0-6-next.11",
"@verdaccio/node-api": "workspace:6.0.0-6-next.9",
"commander": "6.2.0",
"clipanion": "3.0.0-rc.11",
"envinfo": "7.4.0",

View File

@@ -2,9 +2,9 @@ import envinfo from 'envinfo';
import { Command } from 'clipanion';
export class InfoCommand extends Command {
public static paths = [[`--info`], [`-i`]];
static paths = [[`--info`], [`-i`]];
public async execute(): Promise<void> {
async execute() {
this.context.stdout.write('\nEnvironment Info:');
const data = await envinfo.run({
System: ['OS', 'CPU'],

View File

@@ -1,13 +1,15 @@
import { Command, Option } from 'clipanion';
import { ConfigRuntime } from '@verdaccio/types';
import { findConfigFile, parseConfigFile } from '@verdaccio/config';
import { initServer } from '@verdaccio/node-api';
import { startVerdaccio, listenDefaultCallback } from '@verdaccio/node-api';
export const DEFAULT_PROCESS_NAME: string = 'verdaccio';
export class InitCommand extends Command {
public static paths = [Command.Default];
static paths = [Command.Default];
private port = Option.String('-l,-p,--listen,--port', {
listen = Option.String('-l,--listen', {
description: 'host:port number to listen on (default: localhost:4873)',
});
@@ -23,8 +25,8 @@ export class InitCommand extends Command {
The optional arguments are:
- \`-l | --listen | -p | --port\` to switch the default server port,
- \`-c | --config\` to define a different configuration path location,
- \`--listen\` to switch the default server port,
- \`--config\` to define a different configuration path location,
`,
examples: [
@@ -37,24 +39,70 @@ export class InitCommand extends Command {
],
});
private config = Option.String('-c,--config', {
config = Option.String('-c,--config', {
description: 'use this configuration file (default: ./config.yaml)',
});
public async execute() {
async execute() {
let configPathLocation;
let verdaccioConfiguration: ConfigRuntime;
try {
const configPathLocation = findConfigFile(this.config as string);
const configParsed = parseConfigFile(configPathLocation);
const { web } = configParsed;
configPathLocation = findConfigFile(this.config as string);
verdaccioConfiguration = parseConfigFile(configPathLocation);
const { web, https } = verdaccioConfiguration;
process.title = web?.title || DEFAULT_PROCESS_NAME;
if (!https) {
verdaccioConfiguration = Object.assign({}, verdaccioConfiguration, {
https: { enable: false },
});
}
const { version, name } = require('../../package.json');
await initServer(configParsed, this.port as string, version, name);
startVerdaccio(
verdaccioConfiguration,
this.listen as string,
configPathLocation,
version,
name,
listenDefaultCallback
);
} catch (err) {
console.error(err);
process.exit(1);
}
}
}
// export default function initProgram(commander, pkgVersion, pkgName) {
// const cliListener = commander.listen;
// let configPathLocation;
// let verdaccioConfiguration: ConfigRuntime;
// try {
// configPathLocation = findConfigFile(commander.config);
// verdaccioConfiguration = parseConfigFile(configPathLocation);
// const { web, https } = verdaccioConfiguration;
// process.title = web?.title || DEFAULT_PROCESS_NAME;
// if (!https) {
// verdaccioConfiguration = Object.assign({}, verdaccioConfiguration, {
// https: { enable: false },
// });
// }
// // initLogger.warn({file: configPathLocation}, 'config file - @{file}');
// startVerdaccio(
// verdaccioConfiguration,
// cliListener,
// configPathLocation,
// pkgVersion,
// pkgName,
// listenDefaultCallback
// );
// } catch (err) {
// process.exit(1);
// }
// }

View File

@@ -11,10 +11,16 @@
"path": "../config"
},
{
"path": "../core/cli-ui"
"path": "../logger"
},
{
"path": "../node-api"
},
{
"path": "../core/cli-ui"
},
{
"path": "../utils"
}
]
}

View File

@@ -1,43 +1,5 @@
# @verdaccio/config
## 6.0.0-6-next.5
### Patch Changes
- 1810ed0d: Feature
- add option to set storage from environment variable VERDACCIO_STORAGE_PATH
#### Related tickets
https://github.com/verdaccio/verdaccio/issues/1681
- Updated dependencies [648575aa]
- @verdaccio/utils@6.0.0-6-next.4
## 6.0.0-6-next.4
### Major Changes
- 5c5057fc: feat: node api new structure based on promise
```js
import { runServer } from '@verdaccio/node-api';
// or
import { runServer } from 'verdaccio';
const app = await runServer(); // default configuration
const app = await runServer('./config/config.yaml');
const app = await runServer({ configuration });
app.listen(4000, event => {
// do something
});
```
### Breaking Change
If you are using the node-api, the new structure is Promise based and less arguments.
## 5.0.0-alpha.3
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/config",
"version": "6.0.0-6-next.5",
"version": "6.0.0-alpha.3",
"description": "logger",
"main": "./build/index.js",
"types": "build/index.d.ts",
@@ -40,7 +40,7 @@
},
"dependencies": {
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3",
"@verdaccio/utils": "workspace:6.0.0-6-next.4",
"@verdaccio/utils": "workspace:6.0.0-alpha.3",
"debug": "^4.2.0",
"js-yaml": "3.14.0",
"lodash": "^4.17.20",

View File

@@ -28,8 +28,8 @@ const debug = buildDebug('verdaccio:config');
* Find and get the first config file that match.
* @return {String} the config file path
*/
function findConfigFile(configPath: string | undefined): string {
if (typeof configPath !== 'undefined') {
function findConfigFile(configPath: string): string {
if (_.isNil(configPath) === false) {
return Path.resolve(configPath);
}

View File

@@ -50,7 +50,7 @@ class Config implements AppConfig {
public constructor(config: ConfigRuntime) {
const self = this;
this.storage = process.env.VERDACCIO_STORAGE_PATH || config.storage;
this.storage = config.storage;
this.config_path = config.config_path;
this.plugins = config.plugins;
this.security = _.merge(defaultSecurity, config.security);

View File

@@ -1,7 +1,14 @@
import path from 'path';
import { parseConfigFile } from '../src';
import { parseConfigurationFile } from './utils';
describe('Package access utilities', () => {
const parseConfigurationFile = (conf) => {
const { name, ext } = path.parse(conf);
const format = ext.startsWith('.') ? ext.substring(1) : 'yaml';
return path.join(__dirname, `./partials/config/${format}/${name}.${format}`);
};
describe('JSON format', () => {
test('parse default.json', () => {
const config = parseConfigFile(parseConfigurationFile('default.json'));

View File

@@ -10,7 +10,6 @@ import {
ROLES,
WEB_TITLE,
} from '../src';
import { parseConfigurationFile } from './utils';
const resolveConf = (conf) => {
const { name, ext } = path.parse(conf);
@@ -81,32 +80,6 @@ describe('check basic content parsed file', () => {
checkDefaultConfPackages(config);
});
test('should set storage to value set in VERDACCIO_STORAGE_PATH environment variable', () => {
const storageLocation = '/tmp/verdaccio';
process.env.VERDACCIO_STORAGE_PATH = storageLocation;
const config = new Config(parseConfigFile(resolveConf('default')));
expect(config.storage).toBe(storageLocation);
delete process.env.VERDACCIO_STORAGE_PATH;
});
test('should set storage path to VERDACCIO_STORAGE_PATH if both config and env are set', () => {
const storageLocation = '/tmp/verdaccio';
process.env.VERDACCIO_STORAGE_PATH = storageLocation;
const config = new Config(parseConfigFile(parseConfigurationFile('storage')));
expect(config.storage).toBe(storageLocation);
delete process.env.VERDACCIO_STORAGE_PATH;
});
test('should take storage from environment variable if not exists in configs', () => {
const storageLocation = '/tmp/verdaccio';
process.env.VERDACCIO_STORAGE_PATH = storageLocation;
const defaultConfig = parseConfigFile(resolveConf('default'));
delete defaultConfig.storage;
const config = new Config(defaultConfig);
expect(config.storage).toBe(storageLocation);
delete process.env.VERDACCIO_STORAGE_PATH;
});
test('parse docker.yaml', () => {
const config = new Config(parseConfigFile(resolveConf('docker')));
checkDefaultUplink(config);

View File

@@ -1,3 +1,4 @@
import path from 'path';
import _ from 'lodash';
import {
@@ -6,9 +7,15 @@ import {
PACKAGE_ACCESS,
} from '../src/package-access';
import { parseConfigFile } from '../src';
import { parseConfigurationFile } from './utils';
describe('Package access utilities', () => {
const parseConfigurationFile = (conf) => {
const { name, ext } = path.parse(conf);
const format = ext.startsWith('.') ? ext.substring(1) : 'yaml';
return path.join(__dirname, `./partials/config/${format}/${name}.${format}`);
};
describe('normalisePackageAccess', () => {
test('should test basic conversion', () => {
const { packages } = parseConfigFile(parseConfigurationFile('pkgs-basic'));

View File

@@ -1,7 +0,0 @@
---
storage: './storage_default_storage'
logs:
- type: stdout
format: pretty
level: warn

View File

@@ -1,8 +1,16 @@
import path from 'path';
import { hasProxyTo, sanityCheckUplinksProps, uplinkSanityCheck } from '../src/uplinks';
import { normalisePackageAccess, parseConfigFile } from '../src';
import { parseConfigurationFile } from './utils';
describe('Uplinks Utilities', () => {
const parseConfigurationFile = (conf) => {
const { name, ext } = path.parse(conf);
const format = ext.startsWith('.') ? ext.substring(1) : 'yaml';
return path.join(__dirname, `./partials/config/${format}/${name}.${format}`);
};
describe('uplinkSanityCheck', () => {
test('should test basic conversion', () => {
const uplinks = uplinkSanityCheck(

View File

@@ -1 +0,0 @@
export { parseConfigurationFile } from './parse-configuration-file';

View File

@@ -1,8 +0,0 @@
import path from 'path';
export const parseConfigurationFile = (conf: string) => {
const { name, ext } = path.parse(conf);
const format = ext.startsWith('.') ? ext.substring(1) : 'yaml';
return path.join(__dirname, `../partials/config/${format}/${name}.${format}`);
};

View File

@@ -7,11 +7,14 @@
"include": ["src/**/*.ts"],
"exclude": ["src/**/*.test.ts"],
"references": [
{
"path": "../utils"
},
{
"path": "../core/commons-api"
},
{
"path": "../utils"
"path": "../logger"
}
]
}

View File

@@ -40,7 +40,7 @@
"lockfile": "1.0.4"
},
"devDependencies": {
"@verdaccio/types": "workspace:11.0.0-6-next.4"
"@verdaccio/types": "workspace:11.0.0-alpha.3"
},
"scripts": {
"clean": "rimraf ./build",

View File

@@ -43,7 +43,7 @@
},
"devDependencies": {
"@types/bcryptjs": "^2.4.2",
"@verdaccio/types": "workspace:11.0.0-6-next.4",
"@verdaccio/types": "workspace:11.0.0-alpha.3",
"mockdate": "^3.0.2"
},
"scripts": {

View File

@@ -8,10 +8,10 @@
"exclude": ["src/**/*.test.ts"],
"references": [
{
"path": "../commons-api"
"path": "../file-locking"
},
{
"path": "../file-locking"
"path": "../commons-api"
}
]
}

View File

@@ -48,7 +48,7 @@
},
"devDependencies": {
"@types/minimatch": "^3.0.3",
"@verdaccio/types": "workspace:11.0.0-6-next.4",
"@verdaccio/types": "workspace:11.0.0-alpha.3",
"minimatch": "^3.0.4",
"rmdir-sync": "^1.0.1"
},

View File

@@ -8,13 +8,13 @@
"exclude": ["src/**/*.test.ts"],
"references": [
{
"path": "../commons-api"
"path": "../streams"
},
{
"path": "../file-locking"
},
{
"path": "../streams"
"path": "../commons-api"
}
]
}

View File

@@ -45,7 +45,7 @@
"marked": "1.1.1"
},
"devDependencies": {
"@verdaccio/types": "workspace:11.0.0-6-next.4"
"@verdaccio/types": "workspace:11.0.0-alpha.3"
},
"scripts": {
"clean": "rimraf ./build",

View File

@@ -34,7 +34,7 @@
"access": "public"
},
"devDependencies": {
"@verdaccio/types": "workspace:11.0.0-6-next.4"
"@verdaccio/types": "workspace:11.0.0-alpha.3"
},
"scripts": {
"clean": "rimraf ./build",

View File

@@ -1,20 +1,5 @@
# Change Log
## 11.0.0-6-next.5
### Patch Changes
- 648575aa: Bug Fixes
- fix escaped slash in namespaced packages
#### Related tickets
https://github.com/verdaccio/verdaccio/pull/2193
- Updated dependencies [648575aa]
- @verdaccio/utils@6.0.0-6-next.4
## 11.0.0-6-next.4
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/tarball",
"version": "11.0.0-6-next.5",
"version": "11.0.0-6-next.4",
"description": "tarball utilities resolver",
"keywords": [
"private",
@@ -38,10 +38,10 @@
"lodash": "^4.17.21",
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3",
"@verdaccio/url": "workspace:11.0.0-6-next.4",
"@verdaccio/utils": "workspace:6.0.0-6-next.4"
"@verdaccio/utils": "workspace:6.0.0-alpha.3"
},
"devDependencies": {
"@verdaccio/types": "workspace:11.0.0-6-next.4",
"@verdaccio/types": "workspace:11.0.0-alpha.3",
"express": "^4.17.1",
"node-mocks-http": "^1.10.1"
},

View File

@@ -2,6 +2,7 @@ import URL from 'url';
import { Request } from 'express';
import buildDebug from 'debug';
import { encodeScopedUri } from '@verdaccio/utils';
import { getPublicUrl } from '@verdaccio/url';
const debug = buildDebug('verdaccio:core:url');
@@ -31,5 +32,5 @@ export function getLocalRegistryTarballUri(
// header only set with proxy that setup with HTTPS
const domainRegistry = getPublicUrl(urlPrefix || '', req);
return `${domainRegistry}${pkgName}/-/${tarballName}`;
return `${domainRegistry}${encodeScopedUri(pkgName)}/-/${tarballName}`;
}

View File

@@ -8,11 +8,14 @@
"exclude": ["src/**/*.test.ts"],
"references": [
{
"path": "../../utils"
"path": "../types"
},
{
"path": "../commons-api"
},
{
"path": "../../utils"
},
{
"path": "../url"
}

View File

@@ -1,28 +1,5 @@
# Change Log
## 11.0.0-6-next.4
### Major Changes
- 5c5057fc: feat: node api new structure based on promise
```js
import { runServer } from '@verdaccio/node-api';
// or
import { runServer } from 'verdaccio';
const app = await runServer(); // default configuration
const app = await runServer('./config/config.yaml');
const app = await runServer({ configuration });
app.listen(4000, event => {
// do something
});
```
### Breaking Change
If you are using the node-api, the new structure is Promise based and less arguments.
## 10.0.0-alpha.3
### Patch Changes

View File

@@ -352,9 +352,10 @@ declare module '@verdaccio/types' {
export type ServerSettingsConf = {
// express-rate-limit settings
rateLimit: RateLimit;
// deprecated
keepAliveTimeout?: number;
// force http2 if https is defined
http2?: boolean;
//F
publicUrl?: string;
};
type URLPrefix = {

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/types",
"version": "11.0.0-6-next.4",
"version": "11.0.0-alpha.3",
"description": "verdaccio types definitions",
"keywords": [
"private",

View File

@@ -41,7 +41,7 @@
},
"devDependencies": {
"node-mocks-http": "^1.10.1",
"@verdaccio/types": "workspace:11.0.0-6-next.4"
"@verdaccio/types": "workspace:11.0.0-alpha.3"
},
"scripts": {
"clean": "rimraf ./build",

View File

@@ -7,6 +7,9 @@
"include": ["src/**/*"],
"exclude": ["src/**/*.test.ts"],
"references": [
{
"path": "../types"
},
{
"path": "../commons-api"
}

View File

@@ -1,12 +1,5 @@
# @verdaccio/hooks
## 6.0.0-6-next.4
### Patch Changes
- Updated dependencies [5c5057fc]
- @verdaccio/logger@6.0.0-6-next.4
## 5.0.0-alpha.3
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/hooks",
"version": "6.0.0-6-next.4",
"version": "6.0.0-alpha.3",
"description": "loaders logic",
"main": "./build/index.js",
"types": "build/index.d.ts",
@@ -31,17 +31,17 @@
},
"dependencies": {
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3",
"@verdaccio/logger": "workspace:6.0.0-6-next.4",
"@verdaccio/logger": "workspace:6.0.0-alpha.3",
"debug": "^4.2.0",
"handlebars": "4.5.3",
"node-fetch": "^2.6.1",
"request": "2.87.0"
},
"devDependencies": {
"@verdaccio/auth": "workspace:6.0.0-6-next.7",
"@verdaccio/auth": "workspace:6.0.0-alpha.5",
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3",
"@verdaccio/config": "workspace:6.0.0-6-next.5",
"@verdaccio/types": "workspace:11.0.0-6-next.4",
"@verdaccio/config": "workspace:6.0.0-alpha.3",
"@verdaccio/types": "workspace:11.0.0-alpha.3",
"nock": "^13.0.4"
},
"scripts": {

View File

@@ -7,17 +7,20 @@
"include": ["src/**/*"],
"exclude": ["src/**/*.test.ts"],
"references": [
{
"path": "../auth"
},
{
"path": "../config"
},
{
"path": "../core/commons-api"
"path": "../auth"
},
{
"path": "../commons"
},
{
"path": "../logger"
},
{
"path": "../core/commons-api"
}
]
}

View File

@@ -1,12 +1,5 @@
# @verdaccio/loaders
## 6.0.0-6-next.4
### Patch Changes
- Updated dependencies [5c5057fc]
- @verdaccio/logger@6.0.0-6-next.4
## 5.0.0-alpha.3
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/loaders",
"version": "6.0.0-6-next.4",
"version": "6.0.0-alpha.3",
"description": "loaders logic",
"main": "./build/index.js",
"types": "build/index.d.ts",
@@ -13,15 +13,15 @@
"url": "https://github.com/verdaccio/verdaccio"
},
"dependencies": {
"@verdaccio/logger": "workspace:6.0.0-6-next.4",
"@verdaccio/logger": "workspace:6.0.0-alpha.3",
"debug": "^4.1.1",
"lodash": "4.17.15"
},
"devDependencies": {
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3",
"@verdaccio/config": "workspace:6.0.0-6-next.5",
"@verdaccio/mock": "workspace:6.0.0-6-next.5",
"@verdaccio/types": "workspace:11.0.0-6-next.4"
"@verdaccio/config": "workspace:6.0.0-alpha.3",
"@verdaccio/mock": "workspace:6.0.0-alpha.3",
"@verdaccio/types": "workspace:11.0.0-alpha.3"
},
"homepage": "https://verdaccio.org",
"keywords": [

View File

@@ -10,14 +10,17 @@
{
"path": "../config"
},
{
"path": "../core/commons-api"
},
{
"path": "../logger"
},
{
"path": "../mock"
},
{
"path": "../node-api"
},
{
"path": "../core/commons-api"
}
]
}

View File

@@ -6,9 +6,5 @@
},
"include": ["src/**/*.ts"],
"exclude": ["src/**/*.test.ts"],
"references": [
{
"path": "../core/commons-api"
}
]
"references": [{ "path": "../commons" }, { "path": "../core/commons-api" }]
}

View File

@@ -1,28 +1,5 @@
# @verdaccio/logger
## 6.0.0-6-next.4
### Major Changes
- 5c5057fc: feat: node api new structure based on promise
```js
import { runServer } from '@verdaccio/node-api';
// or
import { runServer } from 'verdaccio';
const app = await runServer(); // default configuration
const app = await runServer('./config/config.yaml');
const app = await runServer({ configuration });
app.listen(4000, event => {
// do something
});
```
### Breaking Change
If you are using the node-api, the new structure is Promise based and less arguments.
## 5.0.0-alpha.3
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/logger",
"version": "6.0.0-6-next.4",
"version": "6.0.0-alpha.3",
"description": "logger",
"main": "./build/index.js",
"types": "build/index.d.ts",
@@ -46,7 +46,7 @@
},
"devDependencies": {
"@types/pino": "^6.3.3",
"@verdaccio/types": "workspace:11.0.0-6-next.4"
"@verdaccio/types": "workspace:11.0.0-alpha.3"
},
"funding": {
"type": "opencollective",

View File

@@ -74,7 +74,6 @@ export function createLogger(
export function getLogger() {
if (_.isNil(logger)) {
// FIXME: not sure about display here a warning
process.emitWarning('logger is not defined');
return;
}
@@ -154,6 +153,4 @@ export function setup(options: LoggerConfig | LoggerConfigItem = [DEFAULT_LOGGER
process.on('SIGQUIT', () => finalHandler(null, 'SIGQUIT'));
process.on('SIGTERM', () => finalHandler(null, 'SIGTERM'));
}
return logger;
}

View File

@@ -1,21 +1,5 @@
# @verdaccio/middleware
## 6.0.0-6-next.7
### Patch Changes
- Updated dependencies [648575aa]
- @verdaccio/utils@6.0.0-6-next.4
- @verdaccio/auth@6.0.0-6-next.7
## 6.0.0-6-next.6
### Patch Changes
- Updated dependencies [5c5057fc]
- @verdaccio/logger@6.0.0-6-next.4
- @verdaccio/auth@6.0.0-6-next.6
## 5.0.0-alpha.5
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/middleware",
"version": "6.0.0-6-next.7",
"version": "6.0.0-alpha.5",
"description": "loaders logic",
"main": "./build/index.js",
"types": "build/index.d.ts",
@@ -39,10 +39,10 @@
},
"dependencies": {
"debug": "^4.3.1",
"@verdaccio/auth": "workspace:6.0.0-6-next.7",
"@verdaccio/auth": "workspace:6.0.0-alpha.5",
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3",
"@verdaccio/logger": "workspace:6.0.0-6-next.4",
"@verdaccio/utils": "workspace:6.0.0-6-next.4",
"@verdaccio/logger": "workspace:6.0.0-alpha.3",
"@verdaccio/utils": "workspace:6.0.0-alpha.3",
"lodash": "4.17.15"
},
"funding": {

View File

@@ -8,10 +8,10 @@
"exclude": ["src/**/*.test.ts"],
"references": [
{
"path": "../auth"
"path": "../core/commons-api"
},
{
"path": "../core/commons-api"
"path": "../commons"
},
{
"path": "../logger"

View File

@@ -1,29 +1,5 @@
# @verdaccio/mock
## 6.0.0-6-next.5
### Patch Changes
- 648575aa: Bug Fixes
- fix escaped slash in namespaced packages
#### Related tickets
https://github.com/verdaccio/verdaccio/pull/2193
- Updated dependencies [1810ed0d]
- Updated dependencies [648575aa]
- @verdaccio/config@6.0.0-6-next.5
- @verdaccio/utils@6.0.0-6-next.4
## 6.0.0-6-next.4
### Patch Changes
- Updated dependencies [5c5057fc]
- @verdaccio/config@6.0.0-6-next.4
## 5.0.0-alpha.3
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/mock",
"version": "6.0.0-6-next.5",
"version": "6.0.0-alpha.3",
"author": {
"name": "Juan Picado",
"email": "juanpicado19@gmail.com"
@@ -40,8 +40,8 @@
},
"dependencies": {
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3",
"@verdaccio/config": "workspace:6.0.0-6-next.5",
"@verdaccio/utils": "workspace:6.0.0-6-next.4",
"@verdaccio/config": "workspace:6.0.0-alpha.3",
"@verdaccio/utils": "workspace:6.0.0-alpha.3",
"debug": "^4.2.0",
"fs-extra": "^8.1.0",
"lodash": "^4.17.20",
@@ -49,7 +49,7 @@
"supertest": "^4.0.2"
},
"devDependencies": {
"@verdaccio/types": "workspace:11.0.0-6-next.4"
"@verdaccio/types": "workspace:11.0.0-alpha.3"
},
"funding": {
"type": "opencollective",

View File

@@ -10,7 +10,7 @@ import {
HTTP_STATUS,
TOKEN_BEARER,
} from '@verdaccio/commons-api';
import { buildToken } from '@verdaccio/utils';
import { buildToken, encodeScopedUri } from '@verdaccio/utils';
import { generateRandomHexString } from '@verdaccio/utils';
import { Package } from '@verdaccio/types';
import { response } from 'express';
@@ -70,7 +70,7 @@ export function putPackage(
export function deletePackage(request: any, pkgName: string, token?: string): Promise<any[]> {
return new Promise((resolve) => {
const del = request
.put(`/${pkgName}/-rev/${generateRandomHexString(8)}`)
.put(`/${encodeScopedUri(pkgName)}/-rev/${generateRandomHexString(8)}`)
.set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON);
if (_.isNil(token) === false) {
@@ -216,13 +216,18 @@ export async function fetchPackageByVersionAndTag(
}
export async function isExistPackage(app, packageName) {
const [err] = await getPackage(request(app), '', packageName, HTTP_STATUS.OK);
const [err] = await getPackage(request(app), '', encodeScopedUri(packageName), HTTP_STATUS.OK);
return _.isNull(err);
}
export async function verifyPackageVersionDoesExist(app, packageName, version, token?: string) {
const [, res] = await getPackage(request(app), token as string, packageName, HTTP_STATUS.OK);
const [, res] = await getPackage(
request(app),
token as string,
encodeScopedUri(packageName),
HTTP_STATUS.OK
);
const { versions } = res.body;
const versionsKeys = Object.keys(versions);
@@ -231,5 +236,5 @@ export async function verifyPackageVersionDoesExist(app, packageName, version, t
}
export function generateUnPublishURI(pkgName) {
return `/${pkgName}/-rev/${generateRandomHexString(8)}`;
return `/${encodeScopedUri(pkgName)}/-rev/${generateRandomHexString(8)}`;
}

View File

@@ -7,9 +7,6 @@
"include": ["src/**/*"],
"exclude": ["src/**/*.test.ts"],
"references": [
{
"path": "../config"
},
{
"path": "../core/commons-api"
},

View File

@@ -1,44 +1,5 @@
# @verdaccio/node-api
## 6.0.0-6-next.11
### Patch Changes
- Updated dependencies [1810ed0d]
- Updated dependencies [648575aa]
- @verdaccio/config@6.0.0-6-next.5
- @verdaccio/server@6.0.0-6-next.10
## 6.0.0-6-next.10
### Major Changes
- 5c5057fc: feat: node api new structure based on promise
```js
import { runServer } from '@verdaccio/node-api';
// or
import { runServer } from 'verdaccio';
const app = await runServer(); // default configuration
const app = await runServer('./config/config.yaml');
const app = await runServer({ configuration });
app.listen(4000, event => {
// do something
});
```
### Breaking Change
If you are using the node-api, the new structure is Promise based and less arguments.
### Patch Changes
- Updated dependencies [5c5057fc]
- @verdaccio/config@6.0.0-6-next.4
- @verdaccio/logger@6.0.0-6-next.4
- @verdaccio/server@6.0.0-6-next.9
## 6.0.0-6-next.9
### Patch Changes

View File

@@ -1,5 +0,0 @@
{
"rules": {
"no-console": "off"
}
}

View File

@@ -1,8 +0,0 @@
const { runServer } = require('../build');
(async () => {
const app = await runServer();
app.listen(4000, () => {
console.log('server started');
});
})();

View File

@@ -1,3 +1,5 @@
const config = require('../../jest/config');
module.exports = Object.assign({}, config, {});
module.exports = Object.assign({}, config, {
collectCoverage: false,
});

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/node-api",
"version": "6.0.0-6-next.11",
"version": "6.0.0-6-next.9",
"description": "node API",
"main": "build/index.js",
"types": "build/index.d.ts",
@@ -25,7 +25,7 @@
"verdaccio"
],
"engines": {
"node": ">=12",
"node": ">=10",
"npm": ">=6"
},
"scripts": {
@@ -40,20 +40,18 @@
"license": "MIT",
"dependencies": {
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3",
"@verdaccio/config": "workspace:6.0.0-6-next.5",
"@verdaccio/config": "workspace:6.0.0-alpha.3",
"@verdaccio/cli-ui": "workspace:6.0.0-alpha.3",
"@verdaccio/server": "workspace:6.0.0-6-next.10",
"@verdaccio/logger": "workspace:6.0.0-6-next.4",
"@verdaccio/server": "workspace:6.0.0-6-next.8",
"core-js": "^3.6.5",
"debug": "^4.2.0",
"lodash": "^4.17.20"
"lodash": "^4.17.20",
"selfsigned": "1.10.7"
},
"devDependencies": {
"@verdaccio/mock": "workspace:6.0.0-6-next.5",
"@verdaccio/types": "workspace:11.0.0-6-next.4",
"jest-mock-process": "^1.4.0",
"selfsigned": "1.10.7",
"supertest": "^6.1.3"
"@verdaccio/mock": "workspace:6.0.0-alpha.3",
"@verdaccio/types": "workspace:11.0.0-alpha.3",
"jest-mock-process": "^1.4.0"
},
"publishConfig": {
"access": "public"

25
packages/node-api/src/bootstrap.d.ts vendored Normal file
View File

@@ -0,0 +1,25 @@
import { Application } from 'express';
import { Callback } from '@verdaccio/types';
/**
* Trigger the server after configuration has been loaded.
* @param {Object} config
* @param {Object} cliArguments
* @param {String} configPath
* @param {String} pkgVersion
* @param {String} pkgName
*/
declare function startVerdaccio(
config: any,
cliListen: string,
configPath: string,
pkgVersion: string,
pkgName: string,
callback: Callback
): void;
declare function listenDefaultCallback(
webServer: Application,
addr: any,
pkgName: string,
pkgVersion: string
): void;
export { startVerdaccio, listenDefaultCallback };

View File

@@ -0,0 +1,196 @@
import URL from 'url';
import fs from 'fs';
import http from 'http';
import https from 'https';
import constants from 'constants';
import { Application } from 'express';
import { assign, isObject, isFunction } from 'lodash';
import buildDebug from 'debug';
import { displayError, displayMessage, displayLink } from '@verdaccio/cli-ui';
import {
ConfigRuntime,
Callback,
ConfigWithHttps,
HttpsConfKeyCert,
HttpsConfPfx,
} from '@verdaccio/types';
import { API_ERROR } from '@verdaccio/commons-api';
import server from '@verdaccio/server';
export const keyPem = 'verdaccio-key.pem';
export const certPem = 'verdaccio-cert.pem';
export const csrPem = 'verdaccio-csr.pem';
import { getListListenAddresses, resolveConfigPath } from './cli-utils';
import { displayExperimentsInfoBox } from './experiments';
const debug = buildDebug('verdaccio:runtime');
function launchServer(
app,
addr,
config,
configPath: string,
pkgVersion: string,
pkgName: string,
callback: Callback
): void {
let webServer;
if (addr.proto === 'https') {
debug('https enabled');
webServer = handleHTTPS(app, configPath, config);
} else {
// http
debug('http enabled');
webServer = http.createServer(app);
}
if (
config.server &&
typeof config.server.keepAliveTimeout !== 'undefined' &&
config.server.keepAliveTimeout !== 'null'
) {
// library definition for node is not up to date (doesn't contain recent 8.0 changes)
webServer.keepAliveTimeout = config.server.keepAliveTimeout * 1000;
}
unlinkAddressPath(addr);
callback(webServer, addr, pkgName, pkgVersion);
}
async function startVerdaccio(
config: ConfigRuntime,
cliListen: string,
configPath: string,
pkgVersion: string,
pkgName: string,
callback: Callback
): Promise<void> {
if (isObject(config) === false) {
throw new Error(API_ERROR.CONFIG_BAD_FORMAT);
}
const app = await server(config);
const addresses = getListListenAddresses(cliListen, config.listen);
displayExperimentsInfoBox(config.flags);
addresses.forEach((addr) =>
launchServer(app, addr, config, configPath, pkgVersion, pkgName, callback)
);
}
function unlinkAddressPath(addr) {
if (addr.path && fs.existsSync(addr.path)) {
fs.unlinkSync(addr.path);
}
}
function logHTTPSError(storageLocation) {
displayError(
[
'You have enabled HTTPS and need to specify either ',
' "https.key" and "https.cert" or ',
' "https.pfx" and optionally "https.passphrase" ',
'to run https server',
'',
// commands are borrowed from node.js docs
'To quickly create self-signed certificate, use:',
' $ openssl genrsa -out ' + resolveConfigPath(storageLocation, keyPem) + ' 2048',
' $ openssl req -new -sha256 -key ' +
resolveConfigPath(storageLocation, keyPem) +
' -out ' +
resolveConfigPath(storageLocation, csrPem),
' $ openssl x509 -req -in ' +
resolveConfigPath(storageLocation, csrPem) +
' -signkey ' +
resolveConfigPath(storageLocation, keyPem) +
' -out ' +
resolveConfigPath(storageLocation, certPem),
'',
'And then add to config file (' + storageLocation + '):',
' https:',
` key: ${resolveConfigPath(storageLocation, keyPem)}`,
` cert: ${resolveConfigPath(storageLocation, certPem)}`,
].join('\n')
);
displayError(displayLink('https://verdaccio.org/docs/en/configuration#https'));
process.exit(2);
}
function handleHTTPS(app: Application, configPath: string, config: ConfigWithHttps): https.Server {
try {
let httpsOptions = {
// disable insecure SSLv2 and SSLv3
secureOptions: constants.SSL_OP_NO_SSLv2 | constants.SSL_OP_NO_SSLv3,
};
const keyCertConfig = config.https as HttpsConfKeyCert;
const pfxConfig = config.https as HttpsConfPfx;
// https must either have key and cert or a pfx and (optionally) a passphrase
if (!((keyCertConfig.key && keyCertConfig.cert) || pfxConfig.pfx)) {
logHTTPSError(configPath);
process.exit(1);
}
if (pfxConfig.pfx) {
const { pfx, passphrase } = pfxConfig;
httpsOptions = assign(httpsOptions, {
pfx: fs.readFileSync(pfx),
passphrase: passphrase || '',
});
} else {
const { key, cert, ca } = keyCertConfig;
httpsOptions = assign(httpsOptions, {
key: fs.readFileSync(key),
cert: fs.readFileSync(cert),
...(ca && {
ca: fs.readFileSync(ca),
}),
});
}
return https.createServer(httpsOptions, app);
} catch (err) {
displayError(`cannot create server: ${err.message}`);
process.exit(2);
}
}
function listenDefaultCallback(
webServer: Application,
addr: any,
pkgName: string,
pkgVersion: string
): void {
webServer
.listen(addr.port || addr.path, addr.host, (): void => {
// send a message for test
if (isFunction(process.send)) {
process.send({
verdaccio_started: true,
});
}
const addressServer = `${
addr.path
? URL.format({
protocol: 'unix',
pathname: addr.path,
})
: URL.format({
protocol: addr.proto,
hostname: addr.host,
port: addr.port,
pathname: '/',
})
}`;
displayMessage(`http address ${displayLink(addressServer)}`);
displayMessage(`${pkgName} / ${pkgVersion}`);
})
.on('error', function (err): void {
displayError(`cannot create server: ${err.message}`);
process.exit(2);
});
}
export { startVerdaccio, listenDefaultCallback };

View File

@@ -1,3 +1,7 @@
import path from 'path';
import { displayLink, displayWarning } from '@verdaccio/cli-ui';
export const DEFAULT_PORT = '4873';
export const DEFAULT_PROTOCOL = 'http';
export const DEFAULT_DOMAIN = 'localhost';
@@ -42,6 +46,10 @@ export function parseAddress(urlAddress: any): any {
return null;
}
export const resolveConfigPath = function (storageLocation: string, file: string) {
return path.resolve(path.dirname(storageLocation), file);
};
/**
* Retrieve all addresses defined in the config file.
* Verdaccio is able to listen multiple ports
@@ -53,14 +61,13 @@ export function parseAddress(urlAddress: any): any {
- localhost:5557
@return {Array}
*/
export function getListListenAddresses(argListen: string | void, configListen: any): any {
export function getListListenAddresses(argListen: string, configListen: any): any {
// command line || config file || default
let addresses;
if (argListen) {
addresses = [argListen];
} else if (Array.isArray(configListen)) {
addresses = configListen;
process.emitWarning('multiple addresses will be deprecated in the next major, only use one');
} else if (configListen) {
addresses = [configListen];
} else {
@@ -71,11 +78,11 @@ export function getListListenAddresses(argListen: string | void, configListen: a
const parsedAddr = parseAddress(addr);
if (!parsedAddr) {
process.emitWarning(
displayWarning(
// eslint-disable-next-line max-len
`invalid address - ${addr}, we expect a port (e.g. "4873"), host:port (e.g. "localhost:4873") or full url '(e.g. "http://localhost:4873/")`
);
process.emitWarning('https://verdaccio.org/docs/en/configuration#listen-port');
displayWarning(displayLink('https://verdaccio.org/docs/en/configuration#listen-port'));
}
return parsedAddr;

View File

@@ -1 +1 @@
export { initServer, runServer } from './server';
export { listenDefaultCallback, startVerdaccio } from './bootstrap';

View File

@@ -1,186 +0,0 @@
/* eslint-disable */
import _, { assign, isFunction } from 'lodash';
import http from 'http';
import https from 'https';
import constants from 'constants';
import buildDebug from 'debug';
import fs from 'fs';
import url from 'url';
import { findConfigFile, parseConfigFile } from '@verdaccio/config';
import { API_ERROR } from '@verdaccio/commons-api';
import { ConfigRuntime, HttpsConfKeyCert, HttpsConfPfx } from '@verdaccio/types';
import { setup } from '@verdaccio/logger';
import server from '@verdaccio/server';
import { getListListenAddresses } from './cli-utils';
import { displayExperimentsInfoBox } from './experiments';
const debug = buildDebug('verdaccio:node-api');
function unlinkAddressPath(addr) {
if (addr.path && fs.existsSync(addr.path)) {
fs.unlinkSync(addr.path);
}
}
/**
* Return a native HTTP/HTTPS server instance
* @param config
* @param addr
* @param app
*/
export function createServerFactory(config: ConfigRuntime, addr, app) {
let serverFactory;
if (addr.proto === 'https') {
debug('https enabled');
try {
let httpsOptions = {
// disable insecure SSLv2 and SSLv3
secureOptions: constants.SSL_OP_NO_SSLv2 | constants.SSL_OP_NO_SSLv3,
};
const keyCertConfig = config.https as HttpsConfKeyCert;
const pfxConfig = config.https as HttpsConfPfx;
// https must either have key and cert or a pfx and (optionally) a passphrase
if (!((keyCertConfig.key && keyCertConfig.cert) || pfxConfig.pfx)) {
// logHTTPSError(configPath);
throw Error('bad format https configuration');
}
if (pfxConfig.pfx) {
const { pfx, passphrase } = pfxConfig;
httpsOptions = assign(httpsOptions, {
pfx: fs.readFileSync(pfx),
passphrase: passphrase || '',
});
} else {
const { key, cert, ca } = keyCertConfig;
httpsOptions = assign(httpsOptions, {
key: fs.readFileSync(key),
cert: fs.readFileSync(cert),
...(ca && {
ca: fs.readFileSync(ca),
}),
});
}
// TODO: enable http2 as feature
// if (config.server.http2) <-- check if force http2
serverFactory = https.createServer(httpsOptions, app);
} catch (err) {
throw new Error(`cannot create https server: ${err.message}`);
}
} else {
// http
debug('http enabled');
serverFactory = http.createServer(app);
}
if (
config.server &&
typeof config.server.keepAliveTimeout !== 'undefined' &&
// @ts-ignore
config.server.keepAliveTimeout !== 'null'
) {
// library definition for node is not up to date (doesn't contain recent 8.0 changes)
serverFactory.keepAliveTimeout = config.server.keepAliveTimeout * 1000;
}
// FIXE: I could not find the reason of this code.
unlinkAddressPath(addr);
return serverFactory;
}
/**
* Start the server on the port defined
* @param config
* @param port
* @param version
* @param pkgName
*/
export async function initServer(
config: ConfigRuntime,
port: string | void,
version: string,
pkgName: string
): Promise<void> {
return new Promise(async (resolve, reject) => {
// FIXME: get only the first match, the multiple address will be removed
const [addr] = getListListenAddresses(port, config.listen);
const logger = setup((config as ConfigRuntime).logs);
displayExperimentsInfoBox(config.flags);
const app = await server(config);
const serverFactory = createServerFactory(config, addr, app);
serverFactory
.listen(addr.port || addr.path, addr.host, (): void => {
// send a message for test
if (isFunction(process.send)) {
process.send({
verdaccio_started: true,
});
}
const addressServer = `${
addr.path
? url.format({
protocol: 'unix',
pathname: addr.path,
})
: url.format({
protocol: addr.proto,
hostname: addr.host,
port: addr.port,
pathname: '/',
})
}`;
console.log(`http address ${addressServer}`);
console.log(`${pkgName} / ${version}`);
resolve();
})
.on('error', function (err): void {
reject(err);
process.exitCode = 1;
});
function handleShutdownGracefully() {
logger.fatal('received shutdown signal - closing server gracefully...');
serverFactory.close(() => {
logger.info('server closed.');
process.exit(0);
});
}
process.on('SIGINT', handleShutdownGracefully);
process.on('SIGTERM', handleShutdownGracefully);
process.on('SIGHUP', handleShutdownGracefully);
});
}
/**
* Exposes a server factory to be instantiated programmatically.
*
const app = await runServer(); // default configuration
const app = await runServer('./config/config.yaml');
const app = await runServer({ configuration });
app.listen(4000, (event) => {
// do something
});
* @param config
*/
export async function runServer(config?: string | ConfigRuntime): Promise<any> {
let configurationParsed: ConfigRuntime;
if (config === undefined || typeof config === 'string') {
const configPathLocation = findConfigFile(config);
configurationParsed = parseConfigFile(configPathLocation);
} else if (_.isObject(config)) {
configurationParsed = config;
} else {
throw new Error(API_ERROR.CONFIG_BAD_FORMAT);
}
setup(configurationParsed.logs);
displayExperimentsInfoBox(configurationParsed.flags);
// FIXME: get only the first match, the multiple address will be removed
const [addr] = getListListenAddresses(undefined, configurationParsed.listen);
const app = await server(configurationParsed);
return createServerFactory(configurationParsed, addr, app);
}

View File

@@ -0,0 +1,183 @@
import path from 'path';
import os from 'os';
import fs from 'fs';
import selfsigned from 'selfsigned';
import { configExample } from '@verdaccio/mock';
import { parseConfigFile } from '@verdaccio/config';
import { startVerdaccio } from '../src';
import { DEFAULT_DOMAIN, DEFAULT_PROTOCOL } from '../src/cli-utils';
const mockProcess = require('jest-mock-process');
describe('startServer via API', () => {
const parseConfigurationFile = (name) => {
return parseConfigFile(path.join(__dirname, `./partials/config/yaml/${name}.yaml`));
};
describe('startServer launcher', () => {
test('should provide all HTTP server data', async (done) => {
const store = path.join(__dirname, 'partials/store');
const serverName = 'verdaccio-test';
const version = '1.0.0';
const port = '6000';
await startVerdaccio(
configExample(),
port,
store,
version,
serverName,
(webServer, addrs, pkgName, pkgVersion) => {
expect(webServer).toBeDefined();
expect(addrs).toBeDefined();
expect(addrs.proto).toBe(DEFAULT_PROTOCOL);
expect(addrs.host).toBe(DEFAULT_DOMAIN);
expect(addrs.port).toBe(port);
expect(pkgName).toBeDefined();
expect(pkgVersion).toBeDefined();
expect(pkgVersion).toBe(version);
expect(pkgName).toBe(serverName);
done();
}
);
});
test('should set keepAliveTimeout to 0 seconds', async (done) => {
const store = path.join(__dirname, 'partials/store');
const serverName = 'verdaccio-test';
const version = '1.0.0';
const port = '6100';
await startVerdaccio(
configExample(parseConfigurationFile('server/keepalivetimeout-0')),
port,
store,
version,
serverName,
(webServer, addrs, pkgName, pkgVersion) => {
expect(webServer).toBeDefined();
expect(webServer.keepAliveTimeout).toBeDefined();
expect(webServer.keepAliveTimeout).toBe(0);
expect(addrs).toBeDefined();
expect(addrs.proto).toBe(DEFAULT_PROTOCOL);
expect(addrs.host).toBe(DEFAULT_DOMAIN);
expect(addrs.port).toBe(port);
expect(pkgName).toBeDefined();
expect(pkgVersion).toBeDefined();
expect(pkgVersion).toBe(version);
expect(pkgName).toBe(serverName);
done();
}
);
});
test('should set keepAliveTimeout to 60 seconds', async (done) => {
const store = path.join(__dirname, 'partials/store');
const serverName = 'verdaccio-test';
const version = '1.0.0';
const port = '6200';
await startVerdaccio(
configExample(parseConfigurationFile('server/keepalivetimeout-60')),
port,
store,
version,
serverName,
(webServer, addrs, pkgName, pkgVersion) => {
expect(webServer).toBeDefined();
expect(webServer.keepAliveTimeout).toBeDefined();
expect(webServer.keepAliveTimeout).toBe(60000);
expect(addrs).toBeDefined();
expect(addrs.proto).toBe(DEFAULT_PROTOCOL);
expect(addrs.host).toBe(DEFAULT_DOMAIN);
expect(addrs.port).toBe(port);
expect(pkgName).toBeDefined();
expect(pkgVersion).toBeDefined();
expect(pkgVersion).toBe(version);
expect(pkgName).toBe(serverName);
done();
}
);
});
test('should set keepAliveTimeout to 5 seconds per default', async (done) => {
const store = path.join(__dirname, 'partials/store');
const serverName = 'verdaccio-test';
const version = '1.0.0';
const port = '6300';
await startVerdaccio(
configExample(parseConfigurationFile('server/keepalivetimeout-undefined')),
port,
store,
version,
serverName,
(webServer, addrs, pkgName, pkgVersion) => {
expect(webServer).toBeDefined();
expect(webServer.keepAliveTimeout).toBeDefined();
expect(webServer.keepAliveTimeout).toBe(5000);
expect(addrs).toBeDefined();
expect(addrs.proto).toBe(DEFAULT_PROTOCOL);
expect(addrs.host).toBe(DEFAULT_DOMAIN);
expect(addrs.port).toBe(port);
expect(pkgName).toBeDefined();
expect(pkgVersion).toBeDefined();
expect(pkgVersion).toBe(version);
expect(pkgName).toBe(serverName);
done();
}
);
});
test('should provide all HTTPS server fails', async (done) => {
let mockExit = mockProcess.mockProcessExit();
const store = path.join(__dirname, 'partials/store');
const serverName = 'verdaccio-test';
const version = '1.0.0';
const address = 'https://www.domain.com:443';
const conf = configExample({});
conf.https = {};
// save process to catch exist
await startVerdaccio(conf, address, store, version, serverName, () => {
expect(mockExit).toHaveBeenCalledWith(2);
done();
});
});
test('should start a https server with key and cert', async (done) => {
const store = path.join(__dirname, 'partials/store');
const serverName = 'verdaccio-test';
const version = '1.0.0';
const address = 'https://www.domain.com:443';
const { private: key, cert } = selfsigned.generate();
const keyPath = path.join(os.tmpdir(), 'key.pem');
const certPath = path.join(os.tmpdir(), 'crt.pem');
fs.writeFileSync(keyPath, key);
fs.writeFileSync(certPath, cert);
const conf = configExample();
conf.https = {
key: keyPath,
cert: certPath,
};
await startVerdaccio(conf, address, store, version, serverName, (webServer, addrs) => {
expect(webServer).toBeDefined();
expect(addrs).toBeDefined();
expect(addrs.proto).toBe('https');
done();
});
});
test('should fails if config is missing', async () => {
try {
// @ts-ignore
await startVerdaccio();
} catch (e) {
expect(e.message).toEqual('config file must be an object');
}
});
});
});

View File

@@ -1,20 +0,0 @@
import request from 'supertest';
import { runServer } from '../src';
describe('startServer via API', () => {
test('should provide all HTTP server data', async () => {
const webServer = await runServer();
expect(webServer).toBeDefined();
await request(webServer).get('/').expect(200);
});
test('should fail on start with empty configuration', async () => {
// @ts-expect-error
await expect(runServer({})).rejects.toThrow(
'AssertionError [ERR_ASSERTION]: CONFIG: storage path not defined'
);
});
test('should fail on start with null as entry', async () => {
await expect(runServer(null)).rejects.toThrow('config file must be an object');
});
});

View File

@@ -7,23 +7,23 @@
"include": ["src/**/*"],
"exclude": ["src/**/*.test.ts"],
"references": [
{
"path": "../config"
},
{
"path": "../core/cli-ui"
},
{
"path": "../core/commons-api"
},
{
"path": "../logger"
},
{
"path": "../server"
},
{
"path": "../mock"
},
{
"path": "../server"
"path": "../utils"
},
{
"path": "../core/cli-ui"
}
]
}

View File

@@ -39,7 +39,7 @@
},
"devDependencies": {
"@types/activedirectory2": "^1.2.1",
"@verdaccio/types": "workspace:11.0.0-6-next.4"
"@verdaccio/types": "workspace:11.0.0-alpha.3"
},
"scripts": {
"clean": "rimraf ./build",

View File

@@ -9,6 +9,12 @@
"references": [
{
"path": "../../core/commons-api"
},
{
"path": "../../core/streams"
},
{
"path": "../../core/types"
}
]
}

View File

@@ -36,7 +36,7 @@
"node-fetch": "^2.6.0"
},
"devDependencies": {
"@verdaccio/types": "workspace:11.0.0-6-next.4",
"@verdaccio/types": "workspace:11.0.0-alpha.3",
"body-parser": "^1.19.0",
"nock": "^12.0.3",
"supertest": "^4.0.2"

View File

@@ -5,5 +5,16 @@
"outDir": "./build"
},
"include": ["src/**/*", "types/*.d.ts"],
"exclude": ["src/**/*.test.ts"]
"exclude": ["src/**/*.test.ts"],
"references": [
{
"path": "../../core/commons-api"
},
{
"path": "../../core/streams"
},
{
"path": "../../core/types"
}
]
}

View File

@@ -35,7 +35,7 @@
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3"
},
"devDependencies": {
"@verdaccio/types": "workspace:11.0.0-6-next.4"
"@verdaccio/types": "workspace:11.0.0-alpha.3"
},
"scripts": {
"clean": "rimraf ./build",

View File

@@ -9,6 +9,9 @@
"references": [
{
"path": "../../core/commons-api"
},
{
"path": "../../core/types"
}
]
}

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