Compare commits

...

113 Commits

Author SHA1 Message Date
Juan Picado
489631bda9 chore: update versions (next-7) (#4746)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-08-01 18:36:08 +02:00
dependabot[bot]
112f1d60b8 chore(deps): bump github/codeql-action from 3.25.11 to 3.25.15 (#4751) 2024-08-01 18:02:15 +02:00
verdacciobot
e87b29885b chore: updated static data 2024-08-01 00:15:46 +00:00
Marc Bernard
ccc7bd1df5 fix(middleware): link to favicon in template (#4744) 2024-07-30 23:20:18 +02:00
Marc Bernard
3c6e6b9af7 chore: revert changes (#4745)
* chore: revert "Fix sidebar test"

This reverts commit 096d634917.

Sorry, this push should have gone to my fork only.

* chore: revert "Merge branch 'apm' into pr/mbtools/2"

This reverts commit 87fa9270a5, reversing
changes made to dc2cd48a78.

Sorry, this push should have gone to my fork only.
2024-07-30 23:15:34 +02:00
Marc Bernard
096d634917 Fix sidebar test 2024-07-29 11:12:30 -04:00
Marc Bernard
87fa9270a5 Merge branch 'apm' into pr/mbtools/2 2024-07-29 09:51:18 -04:00
verdacciobot
dc2cd48a78 chore: updated static data 2024-07-29 00:14:47 +00:00
Juan Picado
4c54c0c67d feat: update dependencies (#4738)
* udapte deps step1

* udpate 2

* update 3
2024-07-28 14:06:47 +02:00
renovate[bot]
6bed536f80 chore(deps): update typescript dependencies (master) (#4733)
* chore(deps): update typescript dependencies

* restore dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Juan Picado <juanpicado19@gmail.com>
2024-07-28 08:41:50 +02:00
verdacciobot
1f4fa441ae chore: updated static data 2024-07-25 00:14:10 +00:00
Juan Picado
c5f5e75818 chore: remove node 22 from generator flow
npm sort of broken
2024-07-23 22:33:52 +02:00
verdacciobot
b3f52486f7 chore: updated static data 2024-07-22 00:14:48 +00:00
Juan Picado
bbfb4118bf chore: update versions (next-7) (#4711)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-07-21 18:06:35 +02:00
Marc Bernard
6c5f7a4fa0 fix(middleware): link to favicon in template (#4727) 2024-07-21 18:00:37 +02:00
Marc Bernard
2274e483ac apm: update action 2024-07-19 13:19:00 -04:00
Marc Bernard
d0dacd75c5 apm: update action 2024-07-19 13:18:02 -04:00
Marc Bernard
5bcfd7e2e2 apm: update docker 2024-07-19 13:02:49 -04:00
Marc Bernard
71fcd2de91 Merge branch 'verdaccio:master' into apm 2024-07-19 12:56:08 -04:00
Michael Ryan
39f7fd6057 docs: update logger level precedence stated in docs, moving http between info and debug (#4723)
Fixes #4654
2024-07-19 18:46:48 +02:00
Marc Bernard
96b28575a3 chore(ui): update babel dependencies (#4721) 2024-07-18 07:54:46 +02:00
verdacciobot
6249cbf562 chore: updated static data 2024-07-18 00:13:15 +00:00
Leo Wang(草鞋没号)
136e992bb9 feat: verdaccio-audit support timeout option (#4718)
* feat: verdaccio-audit support timeout option

* Create many-bees-tickle.md

* Update audit.ts

* update docs

* Update README.md

---------

Co-authored-by: Juan Picado <juanpicado19@gmail.com>
2024-07-17 21:59:36 +02:00
Marc Bernard
2ee690638d Merge branch 'verdaccio:master' into apm 2024-07-17 15:39:05 -04:00
Marc Bernard
c31aec8336 fix: typo in config docs regarding check_owners (#4720) 2024-07-17 15:14:44 -04:00
Marc Bernard
5a0c23f900 fix: Dockerfile error FromAsCasing (#4713) 2024-07-17 19:57:35 +02:00
Marc Bernard
19df355e3c chore(api): update comment about route parameters (#4719) 2024-07-17 19:57:03 +02:00
Marc Bernard
39f71f5d7d apm: remove chip from searchitem 2024-07-17 11:35:02 -04:00
Marc Bernard
a985ddc246 Docker, healthcheck, list hover 2024-07-16 19:19:00 -04:00
Marc Bernard
2a6ee33071 fix(middleware): custom favicon (#4716) 2024-07-16 13:28:45 -04:00
Marc Bernard
919795c804 Create docker-apm.yml 2024-07-16 10:12:05 -04:00
Marc Bernard
d60bf44c43 lockfile 2024-07-15 18:19:34 -04:00
Marc Bernard
6626e77766 config 2024-07-15 17:59:12 -04:00
Marc Bernard
03a903d924 fix favicon 2024-07-15 17:41:02 -04:00
verdacciobot
6ee0afb13a chore: updated static data 2024-07-15 00:14:05 +00:00
Marc Bernard
016812b12c Docker image for apm 2024-07-14 14:10:08 -04:00
Marc Bernard
3b3cf86b54 chore: sync dependency defs between ui-components and ui-theme (#4712) 2024-07-13 06:38:04 -04:00
Marc Bernard
5a77414eb6 chore: fix type for country flags and hover titles (#4709)
* chore: fix type for country flags

* add text for Canada, fix Australia flag

* add flag texts

* fix text keys

* update changeset

* Add lock file

* Add Austria
2024-07-12 09:20:22 +02:00
verdacciobot
da6d8e5f38 chore: updated static data 2024-07-11 00:14:23 +00:00
verdacciobot
c7ba6b95f6 chore: updated static data 2024-07-08 00:14:35 +00:00
dependabot[bot]
744a806411 chore(deps): bump docker/build-push-action from 4 to 6 (#4693)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4 to 6.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v4...v6)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-07 21:15:56 +02:00
dependabot[bot]
1deb734b3e chore(deps): bump github/codeql-action from 3.25.7 to 3.25.11 (#4695)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.7 to 3.25.11.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](f079b84933...b611370bb5)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-07 20:17:29 +02:00
Juan Picado
9caca4b573 Update generator.yaml 2024-07-07 19:44:10 +02:00
Juan Picado
fec5a46b22 Update plugin-generator-e2e.yaml 2024-07-07 19:33:22 +02:00
Juan Picado
6aa850a8b4 chore: disable window ci 2024-07-07 19:32:18 +02:00
Juan Picado
85ef861cab Update plugin-generator-e2e.yaml 2024-07-07 19:22:55 +02:00
Juan Picado
3bc24bc4a7 chore: update versions (next-7) (#4703)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-07-07 18:45:32 +02:00
dependabot[bot]
26eeb022bb chore(deps): bump actions/cache from 3.3.3 to 4.0.2 (#4704) 2024-07-07 17:26:03 +02:00
dependabot[bot]
4c41982d9c chore(deps): bump actions/checkout from 3.6.0 to 4.1.7 (#4705) 2024-07-07 17:25:53 +02:00
dependabot[bot]
88c2885cb6 chore(deps): bump actions/setup-node from 3.8.2 to 4.0.2 (#4706) 2024-07-07 17:25:45 +02:00
renovate[bot]
e0ffae411d chore(deps): pin dependencies (#4697) 2024-07-07 14:46:35 +02:00
renovate[bot]
693b57c949 chore(deps): update actions/upload-artifact digest to a8a3f3a (#4698) 2024-07-07 14:46:20 +02:00
Marc Bernard
10dd81f473 feat: complete overhaul of web user interface (#4687)
* fix: ui-component updates

* Update all

* Update tests

* Updates

* Updates

* Updates

* Updates

* Updates

* Updates

* Updates

* Updates

* Dark logo

* Add showUplinks parameter

* Fix DependencyBlock links

* Update

* Fix highlight dark

* Update

* Color

* Fix uncaught exception

* changeset

* Fix Install Settingsmenu, tsconfig

* Remove duplicate function (merge issue)

* Fix SideBar test and CodeQL issue
2024-07-07 14:12:24 +02:00
verdacciobot
2ee28c0988 chore: updated static data 2024-07-04 00:13:45 +00:00
verdacciobot
533abbd6e3 chore: updated static data 2024-07-01 00:15:22 +00:00
verdacciobot
33e25d2876 chore: updated static data 2024-06-27 00:13:32 +00:00
verdacciobot
7d4adac1fc chore: updated static data 2024-06-24 00:14:52 +00:00
verdacciobot
0f94336a9e chore: updated static data 2024-06-20 00:12:45 +00:00
verdacciobot
36feb886ee chore: updated static data 2024-06-17 00:14:12 +00:00
Juan Picado
e54fc76f8e chore: e2e plugin generator (#4686) 2024-06-16 18:36:20 +02:00
Juan Picado
8be0d4882e chore: disable unstable test generator 2024-06-16 12:42:13 +02:00
Juan Picado
0905d04801 Revert "migrate helm chart (#4685)"
This reverts commit e7517acff9.
2024-06-16 11:09:44 +02:00
Juan Picado
e7517acff9 migrate helm chart (#4685)
* migrate heml chart

* refactor

* Update helm-lint-test.yaml

* Update package.json

* Update Chart.yaml

* Update Chart.yaml

* rename

* Update helm-chart-lint-test.yaml
2024-06-16 10:40:37 +02:00
Juan Picado
15a86b7dd2 chore: update versions (next-7) (#4677)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-06-16 09:30:37 +02:00
renovate[bot]
73f81ee7a9 fix(deps): update dependency semver to v7.6.2 (#4682)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-16 09:30:16 +02:00
renovate[bot]
e7ceb8c9e6 chore(deps): update dependency minimatch to v9.0.4 (#4681)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-15 22:21:50 +02:00
Juan Picado
a528af49bc feat: migrate yeoman generator to monorepo (#4683)
* feat: migrate geoman generator

* Create README.md
2024-06-15 19:59:11 +02:00
Marc Bernard
117eb1ca42 fix: change bundleDependencies to array (#4680)
* fix: change bundleDependencies to array

* add changeset

* fixed testid
2024-06-15 00:35:07 +02:00
Marc Bernard
199aea375a chore: add config location and loglevel to startup log (#4679) 2024-06-13 21:34:41 +02:00
Marc Bernard
de6ff5cb0d fix: update fields for abbreviated manifest (#4674) 2024-06-13 13:11:38 +02:00
Marc Bernard
b270f7a975 Add OpenUPM to Verdaccio use cases (#4673)
[OpenUPM](https://openupm.com) is a fascinating use case of Verdaccio for something completely unrelated to node or npm: A public website and repository for [Unity](https://unity.com) packages which is interactive, real-time 3D content.
2024-06-13 12:06:58 +02:00
Marc Bernard
6e764e3c49 feat: add support for npm owner (#4582)
* feat: add support for npm owner

* Revert debug msg

* Finish feature and add test cases

* Fix remote user name and more tests

* Simplify passing remote user

* Update version metadata with owners

* Add test for validateUserName

* Add comment for "change owner"

* add config option

* add check to removePackage, removeTarball

* typo

* check access when write=true

* Add to config, fix undefined user

* Update docs

* Update docs

* Update readme
2024-06-13 12:06:01 +02:00
Marc Bernard
ecbc569f23 chore: fix types for some store tests (#4675)
* chore: fix types for some store tests

* add changeset
2024-06-13 12:04:35 +02:00
verdacciobot
34be970100 chore: updated static data 2024-06-13 00:13:07 +00:00
verdacciobot
fd79e7c637 chore: updated static data 2024-06-10 00:14:00 +00:00
verdacciobot
d4b9a6c374 chore: updated static data 2024-06-06 00:13:05 +00:00
Juan Picado
441c226fbb Add documentation for bun and deno using private registry (#4661)
* Add documentation for bun and deno using private registry

* Update setup-bun.md

* update docs
2024-06-04 23:35:46 +02:00
renovate[bot]
b06b2e7ef1 chore(deps): update actions/cache digest to e12d46a (#4665)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-03 22:25:44 +02:00
renovate[bot]
9d1f6ee54d chore(deps): update actions/checkout digest to f43a0e5 (#4666) 2024-06-03 19:07:50 +02:00
renovate[bot]
3433d7ec0b chore(deps): update dependency yaml to v2.4.3 (#4664) 2024-06-03 19:07:33 +02:00
verdacciobot
f604ec8a34 chore: updated static data 2024-06-03 00:13:38 +00:00
Juan Picado
27bc6c1b7d chore: update versions (next-7) (#4658)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-06-02 21:52:46 +02:00
renovate[bot]
13c69ded53 fix(deps): update dependency express to v4.19.2 (#4662)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-02 21:29:02 +02:00
Tobbe Lundberg
38b1e829d6 patch(core/url): Throw if VERDACCIO_FORWARDED_PROTO resolves to an array (#4613)
* patch(core/url): Throw if VERDACCIO_FORWARDED_PROTO resolves to an array

* changeset
2024-06-02 10:11:25 +02:00
dependabot[bot]
2bc45c8e2f chore(deps): bump github/codeql-action from 2.25.5 to 3.25.7 (#4659)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.25.5 to 3.25.7.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](d05fceb045...f079b84933)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-02 09:31:12 +02:00
Juan Picado
68407c684a Update dependabot.yml 2024-06-01 21:46:19 +02:00
dependabot[bot]
201149072f chore(deps): bump actions/checkout from 4.1.5 to 4.1.6 (#4660)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.5 to 4.1.6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](44c2b7a8a4...a5ac7e51b4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-01 21:39:12 +02:00
Michael Ryan
cf1b46cc59 fix: log spacing depending on the FORMAT and COLORS options (#4631)
* fix: Bad log spacing depending on the FORMAT and COLORS options used

fixes: #4630

inserted a space between the timestamp and the message when logging timestamped messages.

* fix: Bad log spacing depending on the FORMAT and COLORS options used

fixes: #4630

removed padding of an unnecessary space (at the start or end of the log string, depending on whether colors are enabled).

* remove padLeft, update tests

* update logger-commons tests

---------

Co-authored-by: Marc Bernard <marc@marcbernardtools.com>
2024-06-01 21:35:06 +02:00
Marc Bernard
e5624e173c chore: fix types for some store tests (#4657)
* chore: fix types for some store tests

* add changeset
2024-05-30 18:10:13 +02:00
verdacciobot
8b8e5c7b84 chore: updated static data 2024-05-30 00:14:02 +00:00
Marc Bernard
5bfab621d4 feat: add tarball details for published packages (#4653)
* feat: add tarball details for published packages

* remove throw err
2024-05-29 00:11:42 +02:00
verdacciobot
016abb8d7b chore: updated static data 2024-05-27 00:13:39 +00:00
Marc Bernard
475759eaa8 docs: add comment about token secret length to v6 migration (#4655) 2024-05-26 18:31:05 +02:00
verdacciobot
007a7bd76c chore: updated static data 2024-05-23 00:13:19 +00:00
verdacciobot
f9a079aac6 chore: updated static data 2024-05-20 00:13:24 +00:00
verdacciobot
33ae1db093 chore: updated static data 2024-05-16 00:12:57 +00:00
renovate[bot]
cef9b62eab chore(deps): update github/codeql-action digest to d05fceb (#4646)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-14 07:37:50 +02:00
dependabot[bot]
87fd5b53fb chore(deps): bump actions/checkout from 4.1.4 to 4.1.5 (#4641)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.4 to 4.1.5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](0ad4b8fada...44c2b7a8a4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-14 07:34:13 +02:00
Juan Picado
73b0b1752b Update renovate.json 2024-05-14 07:33:58 +02:00
Juan Picado
a78bd618ea Update dependabot.yml 2024-05-14 07:32:08 +02:00
dependabot[bot]
abdd23b3db chore(deps): bump github/codeql-action from 2.25.5 to 3.25.5 (#4644)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.25.5 to 3.25.5.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](d05fceb045...b7cec75265)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-14 07:28:41 +02:00
renovate[bot]
491a70e3e0 chore(deps): update github/codeql-action digest to d05fceb (#4642)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-13 19:34:52 +02:00
Juan Picado
9c139e9ca3 chore: restore zh-CN on website 2024-05-13 06:42:31 +02:00
verdacciobot
e9cc809d97 chore: updated static data 2024-05-13 00:13:37 +00:00
Juan Picado
c418690ef0 chore: exclude temporary zh-CN
some issues at crowdin wrong links
2024-05-11 23:25:36 +02:00
Gweesin Chan
d2ef7f1aea docs: avoid using yo 5.x for plugin developer (#4617)
* docs: avoid using yo 5.x for plugin developer

* Update v5 and v6

---------

Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2024-05-11 22:23:56 +02:00
Juan Picado
81da03a4e8 chore: fix version for migrateToSecureLegacySignature 2024-05-11 11:53:43 +02:00
dependabot[bot]
2ba21a9837 chore(deps): bump actions/cache from 3.3.3 to 4.0.2 (#4627)
Bumps [actions/cache](https://github.com/actions/cache) from 3.3.3 to 4.0.2.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](e12d46a63a...0c45773b62)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-11 10:02:17 +02:00
dependabot[bot]
53d80e1518 chore(deps): bump actions/checkout from 3.6.0 to 4.1.4 (#4628)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.6.0 to 4.1.4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](f43a0e5ff2...0ad4b8fada)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-11 10:02:10 +02:00
Gweesin Chan
e92f517866 docs: add bun as bash sample (#4638)
* docs: fix typos in CONTRIBUTING

* docs: add Bun as bash sample
2024-05-10 11:30:51 +02:00
renovate[bot]
432c546fa0 chore(deps): update github/codeql-action digest to 4f0ceda (#4633)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-09 12:16:45 +02:00
verdacciobot
12c281202c chore: updated static data 2024-05-09 00:12:55 +00:00
verdacciobot
8d6caba90b chore: updated static data 2024-05-06 00:13:36 +00:00
389 changed files with 14699 additions and 7479 deletions

View File

@@ -10,9 +10,5 @@
],
"@babel/typescript"
],
"ignore": ["**/*.d.ts"],
"plugins": [
"@babel/plugin-proposal-optional-chaining",
"@babel/plugin-proposal-nullish-coalescing-operator"
]
"ignore": ["**/*.d.ts"]
}

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/store': patch
---
chore: fix types for some store tests

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/cli': patch
---
chore: add config location and loglevel to startup log

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/middleware': patch
---
fix(middleware): custom favicon

View File

@@ -0,0 +1,10 @@
---
'@verdaccio/ui-components': minor
'@verdaccio/ui-theme': patch
'@verdaccio/types': patch
'@verdaccio/middleware': patch
'@verdaccio/config': patch
'@verdaccio/cli': patch
---
feat: complete overhaul of web user interface

View File

@@ -0,0 +1,6 @@
---
'@verdaccio/ui-components': patch
'@verdaccio/ui-theme': patch
---
chore: fix type for country flags

View File

@@ -0,0 +1,6 @@
---
'@verdaccio/logger-commons': patch
'@verdaccio/logger-prettify': patch
---
fix: log spacing depending on the FORMAT and COLORS options

View File

@@ -0,0 +1,6 @@
---
'@verdaccio/tarball': patch
'@verdaccio/store': patch
---
feat: add tarball details for published packages

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/middleware': patch
---
fix(middleware): link to favicon in template

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/ui-components': patch
---
chore: sync dependency defs between ui-components and ui-theme

View File

@@ -0,0 +1,9 @@
---
'@verdaccio/types': patch
'@verdaccio/config': patch
'@verdaccio/core': patch
'@verdaccio/store': patch
'@verdaccio/api': patch
---
feat: add support for npm owner

View File

@@ -0,0 +1,5 @@
---
'verdaccio-audit': minor
---
feat: verdaccio-audit support timeout option

View File

@@ -0,0 +1,6 @@
---
'@verdaccio/middleware': patch
'@verdaccio/url': patch
---
fix(middleware): link to favicon in template

View File

@@ -0,0 +1,5 @@
---
'generator-verdaccio-plugin': major
---
feat: migration to monorepo

View File

@@ -57,18 +57,32 @@
"@verdaccio/website": "5.20.2",
"@verdaccio/local-publish": "0.0.1",
"@verdaccio/search": "7.0.0-next.0",
"@verdaccio/e2e-cli-pnpm9": "1.0.1"
"@verdaccio/e2e-cli-pnpm9": "1.0.1",
"generator-verdaccio-plugin": "4.1.0"
},
"changesets": [
"angry-trees-tie",
"big-cameras-invent",
"breezy-mayflies-pull",
"chilled-carrots-guess",
"chilly-rivers-chew",
"cuddly-camels-relax",
"dirty-dolphins-try",
"dirty-islands-push",
"dry-shoes-report",
"eight-icons-heal",
"eight-squids-judge",
"eighty-lobsters-study",
"fluffy-onions-act",
"good-cups-train",
"good-lions-rush",
"grumpy-pots-watch",
"itchy-mangos-wink",
"long-jars-collect",
"long-moles-attend",
"many-bees-tickle",
"mighty-gorillas-fail",
"nervous-fireants-design",
"old-turkeys-heal",
"olive-bananas-wink",
"perfect-chairs-act",
@@ -77,6 +91,7 @@
"poor-seals-turn",
"quick-buses-scream",
"real-socks-vanish",
"rich-shrimps-check",
"sharp-wolves-carry",
"shiny-worms-retire",
"shy-carrots-compare",
@@ -85,13 +100,18 @@
"slow-wasps-glow",
"spicy-birds-flow",
"strange-points-repair",
"stupid-dancers-relate",
"ten-kids-tan",
"thin-snails-flow",
"thirty-toes-swim",
"twenty-queens-protect",
"unlucky-cycles-sparkle",
"weak-fans-explain",
"wet-balloons-give",
"wicked-kiwis-check",
"wicked-worms-wash",
"wild-otters-talk",
"witty-meals-nail",
"young-donuts-own"
]
}

View File

@@ -0,0 +1,6 @@
---
'@verdaccio/types': patch
'@verdaccio/store': patch
---
fix: update fields for abbreviated manifest

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/url': patch
---
patch(core/url): Throw if VERDACCIO_FORWARDED_PROTO resolves to an array (#4613 by @Tobbe)

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/ui-components': patch
---
chore(ui): update babel dependencies

View File

@@ -0,0 +1,6 @@
---
'@verdaccio/config': patch
'@verdaccio/website': patch
---
fix: typo in config docs regarding check_owners

View File

@@ -0,0 +1,7 @@
---
'@verdaccio/ui-theme': patch
'@verdaccio/ui-components': patch
'@verdaccio/types': patch
---
fix: change bundleDependencies to array

View File

@@ -0,0 +1,5 @@
---
'@verdaccio/api': patch
---
chore(api): update comment about route parameters

View File

@@ -8,18 +8,11 @@ updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: 'github-actions'
directory: '/'
schedule:
interval: 'weekly'
# Maintain dependencies for npm
- package-ecosystem: 'npm'
directory: '/'
schedule:
interval: 'daily'
allow:
- dependency-name: '@verdaccio/*'
- dependency-name: 'verdaccio-*'
open-pull-requests-limit: 1
prefix: "[github-actions] "
assignees:
- 'verdacciobot'
- 'verdacciobot'
schedule:
interval: 'monthly'
labels:
- 'bot: dependencies'

View File

@@ -18,21 +18,23 @@ jobs:
env:
NODE_ENV: production
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- name: Node
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
with:
node-version-file: '.nvmrc'
- name: Install pnpm
run: npm i pnpm@latest-8 -g
run: |
corepack enable
corepack install
- name: set store
run: |
mkdir ~/.pnpm-store
pnpm config set store-dir ~/.pnpm-store
- name: Install
run: pnpm install --registry http://localhost:4873
run: pnpm install --registry http://localhost:4873
- name: Cache .pnpm-store
uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
@@ -43,14 +45,14 @@ jobs:
name: Lint
needs: prepare
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- name: Node
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
with:
node-version-file: '.nvmrc'
- name: Install pnpm
run: npm i pnpm@latest-8 -g
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
@@ -67,14 +69,14 @@ jobs:
name: Format
needs: prepare
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- name: Use Node
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
with:
node-version-file: '.nvmrc'
- name: Install pnpm
run: npm i pnpm@latest-8 -g
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
@@ -96,14 +98,14 @@ jobs:
name: ${{ matrix.os }} / Node ${{ matrix.node_version }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- name: Use Node ${{ matrix.node_version }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
with:
node-version: ${{ matrix.node_version }}
- name: Install pnpm
run: npm i pnpm@latest-8 -g
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
@@ -122,13 +124,13 @@ jobs:
runs-on: windows-latest
name: UI Test E2E
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
with:
node-version-file: '.nvmrc'
- name: Install pnpm
run: npm i pnpm@latest-8 -g
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}

View File

@@ -20,7 +20,7 @@ jobs:
if: github.ref == 'refs/heads/master' && github.repository == 'verdaccio/verdaccio'
steps:
- name: checkout code repository
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
with:
fetch-depth: 0

View File

@@ -30,7 +30,7 @@ jobs:
env:
NODE_ENV: production
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- name: Node
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
with:
@@ -46,7 +46,7 @@ jobs:
- name: Install
run: pnpm install --registry http://localhost:4873
- name: Cache .pnpm-store
uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
@@ -57,7 +57,7 @@ jobs:
name: Lint
needs: prepare
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- name: Node
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
with:
@@ -66,7 +66,7 @@ jobs:
run: |
corepack enable
corepack install
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
@@ -82,7 +82,7 @@ jobs:
name: Format
needs: prepare
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- name: Use Node
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
with:
@@ -91,7 +91,7 @@ jobs:
run: |
corepack enable
corepack install
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
@@ -112,7 +112,7 @@ jobs:
name: ${{ matrix.os }} / Node ${{ matrix.node_version }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- name: Use Node ${{ matrix.node_version }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
with:
@@ -121,7 +121,7 @@ jobs:
run: |
corepack enable
corepack prepare
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
@@ -140,7 +140,7 @@ jobs:
name: synchronize translations
if: (github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'verdaccio/verdaccio') || github.event_name == 'workflow_dispatch'
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
with:
node-version-file: '.nvmrc'
@@ -148,7 +148,7 @@ jobs:
run: |
corepack enable
corepack install
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}

View File

@@ -21,7 +21,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
@@ -34,7 +34,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@ceaec5c11a131e0d282ff3b6f095917d234caace # v2
uses: github/codeql-action/init@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v2
# Override language selection by uncommenting this and choosing your languages
# with:
@@ -42,7 +42,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@ceaec5c11a131e0d282ff3b6f095917d234caace # v2
uses: github/codeql-action/autobuild@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v2
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@@ -56,4 +56,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@ceaec5c11a131e0d282ff3b6f095917d234caace # v2
uses: github/codeql-action/analyze@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v2

View File

@@ -16,7 +16,7 @@ jobs:
NODE_OPTIONS: --max_old_space_size=4096
steps:
- name: Checkout
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- name: Start containers
run: docker-compose -f "./e2e/docker/apache-verdaccio/docker-compose.yaml" up -d --build

View File

@@ -13,7 +13,7 @@ jobs:
NODE_OPTIONS: --max_old_space_size=4096
steps:
- name: Checkout
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- name: Start containers
run: docker-compose -f "./e2e/docker/proxy-nginx/docker-compose.yaml" up -d --build

View File

@@ -24,7 +24,7 @@ jobs:
runs-on: ubuntu-latest
if: github.repository == 'verdaccio/verdaccio'
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # tag=v1
- uses: docker/setup-buildx-action@v1
with:
@@ -46,7 +46,7 @@ jobs:
{{major}}
{{major}}.{{minor}}
- name: Build & Push
uses: docker/build-push-action@v4
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile

View File

@@ -18,7 +18,7 @@ jobs:
env:
NODE_ENV: production
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- name: Use Node
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
with:
@@ -34,7 +34,7 @@ jobs:
- name: Install
run: pnpm install --reporter=silence --ignore-scripts --registry http://localhost:4873
- name: Cache .pnpm-store
uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.run_id }}-${{ github.sha }}
@@ -44,7 +44,7 @@ jobs:
needs: [prepare]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- name: Use Node 16
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
with:
@@ -53,7 +53,7 @@ jobs:
run: |
corepack enable
corepack prepare
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.run_id }}-${{ github.sha }}
@@ -65,7 +65,7 @@ jobs:
- name: build
run: pnpm build
- name: Cache packages
uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
id: cache-packages
with:
path: ./packages/
@@ -97,7 +97,7 @@ jobs:
name: ${{ matrix.pkg }}/ ubuntu-latest / ${{ matrix.node }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
with:
node-version: ${{ matrix.node }}
@@ -105,7 +105,7 @@ jobs:
run: |
corepack enable
corepack prepare
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.run_id }}-${{ github.sha }}
@@ -114,7 +114,7 @@ jobs:
pnpm config set store-dir ~/.pnpm-store
- name: Install
run: pnpm install --offline --reporter=silence --ignore-scripts --registry http://localhost:4873
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ./packages/
key: pkg-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.run_id }}-${{ github.sha }}
@@ -141,7 +141,7 @@ jobs:
name: ${{ matrix.pkg }}/ ubuntu-latest / ${{ matrix.node }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
with:
node-version: ${{ matrix.node }}
@@ -149,7 +149,7 @@ jobs:
run: |
corepack enable
corepack prepare
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.run_id }}-${{ github.sha }}
@@ -158,7 +158,7 @@ jobs:
pnpm config set store-dir ~/.pnpm-store
- name: Install
run: pnpm install --loglevel debug --ignore-scripts --registry http://localhost:4873
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ./packages/
key: pkg-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.run_id }}-${{ github.sha }}
@@ -186,7 +186,7 @@ jobs:
name: ${{ matrix.pkg }}/ ubuntu-latest / ${{ matrix.node }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
with:
node-version: ${{ matrix.node }}
@@ -194,7 +194,7 @@ jobs:
run: |
corepack enable
corepack prepare
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.run_id }}-${{ github.sha }}
@@ -203,7 +203,7 @@ jobs:
pnpm config set store-dir ~/.pnpm-store
- name: Install
run: pnpm install --offline --reporter=silence --ignore-scripts --registry http://localhost:4873
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ./packages/
key: pkg-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.run_id }}-${{ github.sha }}

View File

@@ -18,7 +18,7 @@ jobs:
env:
NODE_ENV: production
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- name: Use Node
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
with:
@@ -33,7 +33,7 @@ jobs:
run: pnpm build
- name: Test UI
run: pnpm test:e2e:ui
- uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v3
- uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3
with:
name: videos
path: /home/runner/work/verdaccio/verdaccio/e2e/ui/cypress/videos

View File

@@ -0,0 +1,47 @@
name: E2E Generator Verdaccio Plugin
on:
pull_request:
workflow_dispatch:
push:
branches:
- 'master'
jobs:
e2e-plugin-generator:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18,20, 21]
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
with:
node-version: ${{ matrix.node-version }}
- name: Install pnpm
run: |
corepack enable
corepack install
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
- name: install
run: pnpm install
- name: build
run: pnpm build
- name: install verdaccio
run: npm install -g verdaccio@5
- name: Start server
run: verdaccio -c e2e/docker/generator-e2e/generator.yaml &
- name: ping server
run: curl http://localhost:4873/-/ping
- name: login
run: npx npm-cli-login -u test -p test -e test@domain.test -r http://localhost:4873
- name: publish
run: pnpm local:publish
- name: install yeoman
run: npm install -g yo@4 --loglevel=info
- name: install generator
run: npm install -g generator-verdaccio-plugin --loglevel=info --registry http://localhost:4873
# Future: add a test to verify the plugin is working with prompt

View File

@@ -20,7 +20,7 @@ jobs:
runs-on: ubuntu-latest
if: github.repository == 'verdaccio/verdaccio'
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
with:
persist-credentials: false
fetch-depth: 0

View File

@@ -23,7 +23,7 @@ jobs:
env:
NODE_OPTIONS: --max_old_space_size=4096
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- name: Use Node
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
@@ -31,7 +31,7 @@ jobs:
node-version-file: '.nvmrc'
- name: Cache pnpm modules
uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
env:
cache-name: cache-pnpm-modules
with:

View File

@@ -26,7 +26,7 @@ jobs:
env:
NODE_OPTIONS: --max_old_space_size=4096
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v3
- name: Node
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
@@ -43,7 +43,7 @@ jobs:
- name: Install
run: pnpm install --registry http://localhost:4873
- name: Cache .pnpm-store
uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: ~/.pnpm-store
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
@@ -54,7 +54,7 @@ jobs:
- name: Build Translations percentage
run: pnpm --filter @verdaccio/crowdin-translations build
- name: Cache Docusaurus Build
uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3
with:
path: website/node_modules/.cache/webpack
key: cache/webpack-${{github.ref}}-${{ hashFiles('**/pnpm-lock.yaml') }}

5
.gitignore vendored
View File

@@ -41,7 +41,7 @@ packages/plugins/ui-theme/static
# CI Pnpm cache
.pnpm-store/
#docs
#docs
website/docs/api/**/*.md
website/docs/api/**/*.yml
!website/docs/api/index.md
@@ -53,3 +53,6 @@ e2e/ui/cypress/screenshots/**/*
# storybook
packages/ui-components/storybook-static
# plugin generator
packages/tools/generator-verdaccio-plugin/generators/

View File

@@ -1,4 +1,4 @@
FROM --platform=${BUILDPLATFORM:-linux/amd64} node:21-alpine as builder
FROM --platform=${BUILDPLATFORM:-linux/amd64} node:21-alpine AS builder
ENV NODE_ENV=development \
VERDACCIO_BUILD_REGISTRY=https://registry.npmjs.org

View File

@@ -251,7 +251,7 @@ Verdaccio aims to support all features of a standard npm client that make sense
- 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_
- Transferring ownership (`npm owner`) - **supported**
- Token (`npm token`) - **supported**
### Miscellaneous

View File

@@ -1,7 +1,7 @@
# Docs based on https://github.com/xlts-dev/verdaccio-prometheus-middleware#installation
# Docker multi-stage build - https://docs.docker.com/develop/develop-images/multistage-build/
# Use an alpine node image to install the plugin
FROM node:lts-alpine as builder
FROM node:lts-alpine AS builder
RUN mkdir -p /verdaccio/plugins

View File

@@ -2,7 +2,7 @@
# Docker multi-stage build - https://docs.docker.com/develop/develop-images/multistage-build/
# Use an alpine node image to install the plugin
FROM node:lts-alpine as builder
FROM node:lts-alpine AS builder
# Install the metrics middleware plugin
# npm docs

View File

@@ -1,7 +1,7 @@
# Docs based on https://github.com/xlts-dev/verdaccio-prometheus-middleware#installation
# Docker multi-stage build - https://docs.docker.com/develop/develop-images/multistage-build/
# Use an alpine node image to install the plugin
FROM node:lts-alpine as builder
FROM node:lts-alpine AS builder
RUN mkdir -p /verdaccio/plugins

View File

@@ -1,14 +1,14 @@
# Migration guide from Verdaccio 5 to Verdaccio 6
# Migration Guide from Verdaccio 5 to Verdaccio 6
Notes regarding breaking changes for next major release.
> This list might growth over the development.
> This list might growth over the course of development.
## Breaking changes
## Breaking Changes
### New node-api interface [#2165](https://github.com/verdaccio/verdaccio/pull/2165)
If you are using the node-api, the new structure is Promise based and less arguments.
If you are using the `node-api`, the new structure is Promise based and less arguments.
```js
import { runServer } from '@verdaccio/node-api';
@@ -22,7 +22,7 @@ app.listen(4000, (event) => {
});
```
### allow other password hashing algorithms [#1917](https://github.com/verdaccio/verdaccio/pull/1917)
### Allow other password hashing algorithms [#1917](https://github.com/verdaccio/verdaccio/pull/1917)
The current implementation of the `htpasswd` module supports multiple hash formats on verify, but only `crypt` on sign in.
`crypt` is an insecure old format, so to improve the security of the new `verdaccio` release we introduce the support of multiple hash algorithms on sign in step.
@@ -53,21 +53,28 @@ htpasswd:
- The `experiments` configuration is renamed to `flags`. The functionality is exactly the same.
```js
flags: token: false;
search: false;
```yaml
flags:
token: false;
search: false;
```
- The `self_path` property from the config file is being removed in favor of `config_file` full path.
- Refactor `config` module, better types and utilities
### legacy token signature by removing crypto.createDecipher is deprecated [#1953](https://github.com/verdaccio/verdaccio/pull/1953)
### Legacy token signature by removing crypto.createDecipher is deprecated [#1953](https://github.com/verdaccio/verdaccio/pull/1953)
- Replace signature handler for legacy tokens by removing deprecated crypto.createDecipher by createCipheriv
- **The new signature invalidates all previous tokens generated by Verdaccio 5 or previous versions**.
- The secret key must have 32 characters long
> Remediation, update `.verdaccio-db.json` secret field with a secret key with 32 characters.
### Legacy token secret length
If the migration to v6 include an update to node 22 or higher, be aware that token secrets with a length other than 32 are not
supported anymore. A new secret will be generated. See [docs](https://verdaccio.org/docs/6.x/configuration#legacy-token-signature)
for more details.
#### New environment variables
Introduce environment variables for legacy tokens.

View File

@@ -5,16 +5,16 @@
"main": "./build/index.js",
"types": "./build/index.d.ts",
"devDependencies": {
"@verdaccio/config": "workspace:7.0.0-next-7.15",
"@verdaccio/core": "workspace:7.0.0-next-7.15",
"@verdaccio/types": "workspace:12.0.0-next-7.3",
"@verdaccio/config": "workspace:7.0.0-next-7.20",
"@verdaccio/core": "workspace:7.0.0-next-7.20",
"@verdaccio/types": "workspace:12.0.0-next-7.5",
"debug": "4.3.4",
"fs-extra": "11.2.0",
"get-port": "5.1.1",
"got": "11.8.6",
"js-yaml": "4.1.0",
"lodash": "4.17.21",
"verdaccio": "workspace:7.0.0-next-7.15"
"verdaccio": "workspace:7.0.0-next-7.20"
},
"scripts": {
"test": "jest",

View File

@@ -0,0 +1,43 @@
storage: ./storage
web:
title: Verdaccio E2E Local
auth:
htpasswd:
file: ./htpasswd
uplinks:
npmjs:
url: https://registry.npmjs.org/
packages:
'@verdaccio/*':
access: $all
publish: $all
unpublish: $all
'@*/*':
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: npmjs
'verdaccio-*':
access: $all
publish: $all
unpublish: $all
'generator-verdaccio-plugin':
access: $all
publish: $all
unpublish: $all
'verdaccio':
access: $all
publish: $all
unpublish: $all
'**':
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: npmjs
middlewares:
audit:
enabled: false
log: { type: stdout, format: json, level: http }

View File

@@ -3,9 +3,9 @@
"name": "@verdaccio/e2e-ui",
"version": "2.0.0",
"devDependencies": {
"verdaccio": "workspace:7.0.0-next-7.15",
"@verdaccio/core": "workspace:7.0.0-next-7.15",
"@verdaccio/config": "workspace:7.0.0-next-7.15",
"verdaccio": "workspace:7.0.0-next-7.20",
"@verdaccio/core": "workspace:7.0.0-next-7.20",
"@verdaccio/config": "workspace:7.0.0-next-7.20",
"@verdaccio/test-helper": "workspace:3.0.0-next-7.2",
"debug": "4.3.4",
"cypress": "^13.6.0",

View File

@@ -15,80 +15,81 @@
"url": "https://opencollective.com/verdaccio"
},
"devDependencies": {
"@babel/cli": "7.23.9",
"@babel/core": "7.23.9",
"@babel/eslint-parser": "7.23.3",
"@babel/node": "7.23.9",
"@babel/plugin-proposal-class-properties": "7.18.6",
"@babel/plugin-proposal-decorators": "7.23.9",
"@babel/plugin-proposal-export-namespace-from": "7.18.9",
"@babel/plugin-proposal-function-sent": "7.23.3",
"@babel/plugin-proposal-json-strings": "7.18.6",
"@babel/plugin-proposal-nullish-coalescing-operator": "7.18.6",
"@babel/plugin-proposal-numeric-separator": "7.18.6",
"@babel/plugin-proposal-object-rest-spread": "7.20.7",
"@babel/plugin-proposal-optional-chaining": "7.21.0",
"@babel/plugin-proposal-throw-expressions": "7.23.3",
"@babel/cli": "7.24.8",
"@babel/core": "7.24.9",
"@babel/eslint-parser": "7.25.0",
"@babel/node": "7.25.0",
"@babel/plugin-proposal-decorators": "7.24.7",
"@babel/plugin-proposal-function-sent": "7.24.7",
"@babel/plugin-proposal-throw-expressions": "7.24.7",
"@babel/plugin-syntax-dynamic-import": "7.8.3",
"@babel/plugin-syntax-import-meta": "7.10.4",
"@babel/plugin-transform-async-to-generator": "7.23.3",
"@babel/plugin-transform-classes": "7.23.8",
"@babel/plugin-transform-runtime": "7.23.9",
"@babel/preset-env": "7.23.9",
"@babel/preset-react": "7.23.3",
"@babel/preset-typescript": "7.23.3",
"@babel/register": "7.23.7",
"@babel/runtime": "7.23.9",
"@babel/plugin-transform-async-to-generator": "7.24.7",
"@babel/plugin-transform-class-properties": "7.24.7",
"@babel/plugin-transform-classes": "7.25.0",
"@babel/plugin-transform-export-namespace-from": "7.24.7",
"@babel/plugin-transform-json-strings": "7.24.7",
"@babel/plugin-transform-nullish-coalescing-operator": "7.24.7",
"@babel/plugin-transform-numeric-separator": "7.24.7",
"@babel/plugin-transform-object-rest-spread": "7.24.7",
"@babel/plugin-transform-optional-chaining": "7.24.8",
"@babel/plugin-transform-runtime": "7.24.7",
"@babel/preset-env": "7.25.0",
"@babel/preset-react": "7.24.7",
"@babel/preset-typescript": "7.24.7",
"@babel/register": "7.24.6",
"@babel/runtime": "7.25.0",
"@changesets/changelog-github": "0.5.0",
"@changesets/cli": "2.27.1",
"@changesets/get-dependents-graph": "1.3.6",
"@crowdin/cli": "3.16.1",
"@changesets/cli": "2.27.7",
"@changesets/get-dependents-graph": "2.1.1",
"@crowdin/cli": "4.1.1",
"@dianmora/contributors": "5.0.0",
"@emotion/react": "11.10.6",
"@emotion/styled": "11.10.6",
"@testing-library/dom": "9.3.4",
"@testing-library/jest-dom": "6.4.2",
"@testing-library/dom": "10.4.0",
"@testing-library/jest-dom": "6.4.8",
"@testing-library/react": "16.0.0",
"@testing-library/user-event": "14.5.2",
"aria-query": "5.1.3",
"@testing-library/react": "14.2.1",
"@trivago/prettier-plugin-sort-imports": "4.3.0",
"@types/body-parser": "1.19.5",
"@types/connect": "3.4.38",
"@types/cookiejar": "2.1.5",
"@types/debug": "4.1.12",
"@types/express": "4.17.21",
"@types/express-serve-static-core": "4.17.42",
"@types/express-serve-static-core": "4.19.5",
"@types/http-errors": "2.0.4",
"@types/jest": "29.5.11",
"@types/jsonwebtoken": "9.0.5",
"@types/lodash": "4.14.202",
"@types/jest": "29.5.12",
"@types/jsonwebtoken": "9.0.6",
"@types/lodash": "4.17.7",
"@types/mime": "3.0.4",
"@types/minimatch": "5.1.2",
"@types/node": "20.11.7",
"@types/node": "20.14.12",
"@types/node-fetch": "2.6.11",
"@types/qs": "6.9.11",
"@types/qs": "6.9.15",
"@types/range-parser": "1.2.7",
"@types/react": "18.2.48",
"@types/react-dom": "18.2.18",
"@types/react": "18.3.3",
"@types/react-dom": "18.3.0",
"@types/react-router-dom": "5.3.3",
"@types/react-virtualized": "9.21.29",
"@types/redux": "3.6.0",
"@types/semver": "7.5.6",
"@types/react-virtualized": "9.21.30",
"@types/semver": "7.5.8",
"@types/send": "0.17.4",
"@types/serve-static": "1.15.5",
"@types/serve-static": "1.15.7",
"@types/superagent": "4.1.24",
"@types/supertest": "2.0.16",
"@types/testing-library__jest-dom": "6.0.0",
"@types/validator": "13.11.8",
"@types/validator": "13.12.0",
"@types/webpack": "5.28.5",
"@types/webpack-env": "1.18.4",
"@typescript-eslint/eslint-plugin": "6.19.1",
"@typescript-eslint/parser": "6.19.1",
"@types/webpack-env": "1.18.5",
"@types/yeoman-environment": "2.10.11",
"@types/yeoman-generator": "5.2.14",
"@types/yeoman-test": "4.0.6",
"@typescript-eslint/eslint-plugin": "6.21.0",
"@typescript-eslint/parser": "6.21.0",
"@verdaccio/crowdin-translations": "workspace:*",
"@verdaccio/eslint-config": "workspace:*",
"@verdaccio/types": "workspace:*",
"@verdaccio/ui-theme": "workspace:*",
"@vitest/coverage-v8": "0.34.6",
"aria-query": "5.1.3",
"babel-core": "7.0.0-bridge.0",
"babel-jest": "29.7.0",
"babel-plugin-dynamic-import-node": "2.3.3",
@@ -118,16 +119,16 @@
"react-dom": "18.2.0",
"rimraf": "5.0.5",
"selfsigned": "2.4.1",
"supertest": "6.3.4",
"supertest": "7.0.0",
"ts-node": "10.9.2",
"typescript": "5.3.3",
"undici-types": "5.28.2",
"update-ts-references": "3.2.1",
"update-ts-references": "3.3.0",
"verdaccio-audit": "workspace:*",
"verdaccio-auth-memory": "workspace:*",
"verdaccio-htpasswd": "workspace:*",
"verdaccio-memory": "workspace:*",
"vitest": "0.34.6"
"vitest": "1.6.0"
},
"scripts": {
"prepare": "husky install",

View File

@@ -1,5 +1,76 @@
# @verdaccio/api
## 7.0.0-next-7.20
### Patch Changes
- Updated dependencies [ccc7bd1]
- @verdaccio/middleware@7.0.0-next-7.20
- @verdaccio/auth@7.0.0-next-7.20
- @verdaccio/store@7.0.0-next-7.20
- @verdaccio/core@7.0.0-next-7.20
- @verdaccio/config@7.0.0-next-7.20
- @verdaccio/utils@7.0.0-next-7.20
- @verdaccio/logger@7.0.0-next-7.20
## 7.0.0-next-7.19
### Patch Changes
- 19df355: chore(api): update comment about route parameters
- Updated dependencies [2a6ee33]
- Updated dependencies [6c5f7a4]
- Updated dependencies [c31aec8]
- @verdaccio/middleware@7.0.0-next-7.19
- @verdaccio/config@7.0.0-next-7.19
- @verdaccio/auth@7.0.0-next-7.19
- @verdaccio/store@7.0.0-next-7.19
- @verdaccio/core@7.0.0-next-7.19
- @verdaccio/utils@7.0.0-next-7.19
- @verdaccio/logger@7.0.0-next-7.19
## 7.0.0-next-7.18
### Patch Changes
- Updated dependencies [10dd81f]
- @verdaccio/middleware@7.0.0-next-7.18
- @verdaccio/config@7.0.0-next-7.18
- @verdaccio/auth@7.0.0-next-7.18
- @verdaccio/core@7.0.0-next-7.18
- @verdaccio/logger@7.0.0-next-7.18
- @verdaccio/store@7.0.0-next-7.18
- @verdaccio/utils@7.0.0-next-7.18
## 7.0.0-next-7.17
### Patch Changes
- 6e764e3: feat: add support for npm owner
- Updated dependencies [6e764e3]
- Updated dependencies [de6ff5c]
- @verdaccio/config@7.0.0-next-7.17
- @verdaccio/core@7.0.0-next-7.17
- @verdaccio/store@7.0.0-next-7.17
- @verdaccio/auth@7.0.0-next-7.17
- @verdaccio/logger@7.0.0-next-7.17
- @verdaccio/middleware@7.0.0-next-7.17
- @verdaccio/utils@7.0.0-next-7.17
## 7.0.0-next-7.16
### Patch Changes
- Updated dependencies [e5624e1]
- Updated dependencies [5bfab62]
- @verdaccio/store@7.0.0-next-7.16
- @verdaccio/logger@7.0.0-next-7.16
- @verdaccio/middleware@7.0.0-next-7.16
- @verdaccio/auth@7.0.0-next-7.16
- @verdaccio/core@7.0.0-next-7.16
- @verdaccio/config@7.0.0-next-7.16
- @verdaccio/utils@7.0.0-next-7.16
## 7.0.0-next-7.15
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/api",
"version": "7.0.0-next-7.15",
"version": "7.0.0-next-7.20",
"description": "loaders logic",
"main": "./build/index.js",
"types": "build/index.d.ts",
@@ -38,28 +38,28 @@
},
"license": "MIT",
"dependencies": {
"@verdaccio/auth": "workspace:7.0.0-next-7.15",
"@verdaccio/config": "workspace:7.0.0-next-7.15",
"@verdaccio/core": "workspace:7.0.0-next-7.15",
"@verdaccio/logger": "workspace:7.0.0-next-7.15",
"@verdaccio/middleware": "workspace:7.0.0-next-7.15",
"@verdaccio/store": "workspace:7.0.0-next-7.15",
"@verdaccio/utils": "workspace:7.0.0-next-7.15",
"@verdaccio/auth": "workspace:7.0.0-next-7.20",
"@verdaccio/config": "workspace:7.0.0-next-7.20",
"@verdaccio/core": "workspace:7.0.0-next-7.20",
"@verdaccio/logger": "workspace:7.0.0-next-7.20",
"@verdaccio/middleware": "workspace:7.0.0-next-7.20",
"@verdaccio/store": "workspace:7.0.0-next-7.20",
"@verdaccio/utils": "workspace:7.0.0-next-7.20",
"abortcontroller-polyfill": "1.7.5",
"body-parser": "1.20.2",
"cookies": "0.9.0",
"debug": "4.3.4",
"express": "4.18.3",
"express": "4.19.2",
"lodash": "4.17.21",
"mime": "2.6.0",
"semver": "7.6.0"
"semver": "7.6.3"
},
"devDependencies": {
"@verdaccio/test-helper": "workspace:3.0.0-next-7.2",
"@verdaccio/types": "workspace:12.0.0-next-7.3",
"@verdaccio/types": "workspace:12.0.0-next-7.5",
"mockdate": "3.0.5",
"nock": "13.5.1",
"supertest": "6.3.4"
"supertest": "7.0.0"
},
"funding": {
"type": "opencollective",

View File

@@ -37,10 +37,11 @@ export default function (config: Config, auth: Auth, storage: Storage): Router {
app.param('revision', validateName);
app.param('token', validateName);
// these can't be safely put into express url for some reason
// TODO: For some reason? what reason?
// Express route parameter names must be valid JavaScript identifiers, which means
// they cannot start with a hyphen (-) or contain special characters like dots (.)
app.param('_rev', match(/^-rev$/));
app.param('org_couchdb_user', match(/^org\.couchdb\.user:/));
app.use(auth.apiJWTmiddleware());
app.use(express.json({ strict: false, limit: config.max_body_size || '10mb' }));
app.use(antiLoop(config));

View File

@@ -28,6 +28,7 @@ export default function (route: Router, auth: Auth, storage: Storage): void {
const name = req.params.package;
let version = req.params.version;
const write = req.query.write === 'true';
const username = req?.remote_user?.name;
const abbreviated =
stringUtils.getByQualityPriorityValue(req.get('Accept')) === Storage.ABBREVIATED_HEADER;
const requestOptions = {
@@ -37,6 +38,7 @@ export default function (route: Router, auth: Auth, storage: Storage): void {
host: req.host,
remoteAddress: req.socket.remoteAddress,
byPassCache: write,
username,
};
try {

View File

@@ -76,11 +76,11 @@ const debug = buildDebug('verdaccio:api:publish');
*
* 3. Star a package
*
* Permissions: start a package depends of the publish and unpublish permissions, there is no
* specific flag for star or un start.
* Permissions: staring a package depends of the publish and unpublish permissions, there is no
* specific flag for star or unstar.
* The URL for star is similar to the unpublish (change package format)
*
* npm has no endpoint for star a package, rather mutate the metadata and acts as, the difference
* npm has no endpoint for staring a package, rather mutate the metadata and acts as, the difference
* is the users property which is part of the payload and the body only includes
*
* {
@@ -89,7 +89,24 @@ const debug = buildDebug('verdaccio:api:publish');
"users": {
[username]: boolean value (true, false)
}
}
}
*
* 4. Change owners of a package
*
* Similar to staring a package, changing owners (maintainers) of a package uses the publish
* endpoint.
*
* The body includes a list of the new owners with the following format
*
* {
"_id": pkgName,
"_rev": "4-b0cdaefc9bdb77c8",
"maintainers": [
{ "name": "first owner", "email": "me@verdaccio.org" },
{ "name": "second owner", "email": "you@verdaccio.org" },
...
]
}
*
*/
export default function publish(router: Router, auth: Auth, storage: Storage): void {
@@ -127,10 +144,11 @@ export default function publish(router: Router, auth: Auth, storage: Storage): v
async function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) {
const packageName = req.params.package;
const rev = req.params.revision;
const username = req?.remote_user?.name;
logger.debug({ packageName }, `unpublishing @{packageName}`);
try {
await storage.removePackage(packageName, rev);
await storage.removePackage(packageName, rev, username);
debug('package %s unpublished', packageName);
res.status(HTTP_STATUS.CREATED);
return next({ ok: API_MESSAGE.PKG_REMOVED });
@@ -155,13 +173,14 @@ export default function publish(router: Router, auth: Auth, storage: Storage): v
): Promise<void> {
const packageName = req.params.package;
const { filename, revision } = req.params;
const username = req?.remote_user?.name;
logger.debug(
{ packageName, filename, revision },
`removing a tarball for @{packageName}-@{tarballName}-@{revision}`
);
try {
await storage.removeTarball(packageName, filename, revision);
await storage.removeTarball(packageName, filename, revision, username);
res.status(HTTP_STATUS.CREATED);
logger.debug(
@@ -188,6 +207,12 @@ export function publishPackage(storage: Storage): any {
const metadata = req.body;
const username = req?.remote_user?.name;
debug('publishing package %o for user %o', packageName, username);
logger.debug(
{ packageName, username },
'publishing package @{packageName} for user @{username}'
);
try {
const message = await storage.updateManifest(metadata, {
name: packageName,

View File

@@ -27,10 +27,22 @@ export default function (route: Router, auth: Auth, config: Config): void {
rateLimit(config?.userRateLimit),
function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void {
debug('verifying user');
if (typeof req.remote_user.name !== 'string' || req.remote_user.name === '') {
debug('user not logged in');
res.status(HTTP_STATUS.OK);
return next({ ok: false });
}
const username = req.params.org_couchdb_user.split(':')[1];
const message = getAuthenticatedMessage(req.remote_user.name);
debug('user authenticated message %o', message);
res.status(HTTP_STATUS.OK);
next({
// 'npm owner' requires user info
// TODO: we don't have the email
name: username,
email: '',
ok: message,
});
}
@@ -61,6 +73,10 @@ export default function (route: Router, auth: Auth, config: Config): void {
debug('login or adduser');
const remoteName = req?.remote_user?.name;
if (!validatioUtils.validateUserName(req.params.org_couchdb_user, name)) {
return next(errorUtils.getBadRequest(API_ERROR.USERNAME_MISMATCH));
}
if (typeof remoteName !== 'undefined' && typeof name === 'string' && remoteName === name) {
debug('login: no remote user detected');
auth.authenticate(
@@ -97,6 +113,7 @@ export default function (route: Router, auth: Auth, config: Config): void {
}
);
} else {
debug('adduser: %o', name);
if (
validatioUtils.validatePassword(
password,

View File

@@ -11,7 +11,7 @@ import {
generatePackageMetadata,
initializeServer as initializeServerHelper,
} from '@verdaccio/test-helper';
import { GenericBody, PackageUsers } from '@verdaccio/types';
import { Author, GenericBody, PackageUsers } from '@verdaccio/types';
import { buildToken, generateRandomHexString } from '@verdaccio/utils';
import apiMiddleware from '../../src';
@@ -142,6 +142,37 @@ export function starPackage(
return test;
}
export function changeOwners(
app,
options: {
maintainers: Author[];
name: string;
_rev: string;
_id?: string;
},
token?: string
): supertest.Test {
const { _rev, _id, maintainers } = options;
const ownerManifest = {
_rev,
_id,
maintainers,
};
const test = supertest(app)
.put(`/${encodeURIComponent(options.name)}`)
.set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON)
.send(JSON.stringify(ownerManifest))
.set('accept', HEADERS.GZIP)
.set(HEADER_TYPE.ACCEPT_ENCODING, HEADERS.JSON);
if (typeof token === 'string') {
test.set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token));
}
return test;
}
export function getDisTags(app, pkgName) {
return supertest(app)
.get(`/-/package/${encodeURIComponent(pkgName)}/dist-tags`)

View File

@@ -0,0 +1,24 @@
storage: ./storage
auth:
htpasswd:
file: ./htpasswd-owner
web:
enable: true
title: verdaccio
log: { type: stdout, format: pretty, level: info }
# TODO: Add test case for $owner access
packages:
'@*/*':
access: $all
publish: $authenticated
unpublish: $authenticated
'**':
access: $all
publish: $authenticated
unpublish: $authenticated
_debug: true

View File

@@ -0,0 +1,118 @@
/* eslint-disable jest/no-commented-out-tests */
import nock from 'nock';
import { HTTP_STATUS } from '@verdaccio/core';
import {
changeOwners,
createUser,
getPackage,
initializeServer,
publishVersionWithToken,
} from './_helper';
describe('owner', () => {
test.each([['foo', '@scope%2Ffoo']])('should get owner of package', async (pkgName) => {
nock('https://registry.npmjs.org').get(`/${pkgName}`).reply(404);
const app = await initializeServer('owner.yaml');
const credentials = { name: 'test', password: 'test' };
const response = await createUser(app, credentials.name, credentials.password);
expect(response.body.ok).toMatch(`user '${credentials.name}' created`);
await publishVersionWithToken(app, pkgName, '1.0.0', response.body.token).expect(
HTTP_STATUS.CREATED
);
// expect publish to set owner to logged in user
const manifest = await getPackage(app, '', decodeURIComponent(pkgName));
const maintainers = manifest.body.maintainers;
expect(maintainers).toHaveLength(1);
// TODO: This should eventually include the email of the user
expect(maintainers).toEqual([{ name: credentials.name, email: '' }]);
});
test.each([['foo', '@scope%2Ffoo']])('should add/remove owner to package', async (pkgName) => {
nock('https://registry.npmjs.org').get(`/${pkgName}`).reply(404);
const app = await initializeServer('owner.yaml');
const credentials = { name: 'test', password: 'test' };
const firstOwner = { name: 'test', email: '' };
const response = await createUser(app, credentials.name, credentials.password);
expect(response.body.ok).toMatch(`user '${credentials.name}' created`);
await publishVersionWithToken(app, pkgName, '1.0.0', response.body.token).expect(
HTTP_STATUS.CREATED
);
// publish sets owner to logged in user
const manifest = await getPackage(app, '', decodeURIComponent(pkgName));
const maintainers = manifest.body.maintainers;
expect(maintainers).toHaveLength(1);
expect(maintainers).toEqual([firstOwner]);
// add another owner
const secondOwner = { name: 'tester', email: 'test@verdaccio.org' };
const newOwners = [...maintainers, secondOwner];
await changeOwners(
app,
{
_rev: manifest.body._rev,
_id: manifest.body._id,
name: pkgName,
maintainers: newOwners,
},
response.body.token
).expect(HTTP_STATUS.CREATED);
const manifest2 = await getPackage(app, '', decodeURIComponent(pkgName));
const maintainers2 = manifest2.body.maintainers;
expect(maintainers2).toHaveLength(2);
expect(maintainers2).toEqual([firstOwner, secondOwner]);
// remove original owner
await changeOwners(
app,
{
_rev: manifest2.body._rev,
_id: manifest2.body._id,
name: pkgName,
maintainers: [secondOwner],
},
response.body.token
).expect(HTTP_STATUS.CREATED);
const manifest3 = await getPackage(app, '', decodeURIComponent(pkgName));
const maintainers3 = manifest3.body.maintainers;
expect(maintainers3).toHaveLength(1);
expect(maintainers3).toEqual([secondOwner]);
});
test.each([['foo', '@scope%2Ffoo']])('should fail if user is not logged in', async (pkgName) => {
nock('https://registry.npmjs.org').get(`/${pkgName}`).reply(404);
const app = await initializeServer('owner.yaml');
const credentials = { name: 'test', password: 'test' };
const firstOwner = { name: 'test', email: '' };
const response = await createUser(app, credentials.name, credentials.password);
expect(response.body.ok).toMatch(`user '${credentials.name}' created`);
await publishVersionWithToken(app, pkgName, '1.0.0', response.body.token).expect(
HTTP_STATUS.CREATED
);
// publish sets owner to logged in user
const manifest = await getPackage(app, '', decodeURIComponent(pkgName));
const maintainers = manifest.body.maintainers;
expect(maintainers).toHaveLength(1);
expect(maintainers).toEqual([firstOwner]);
// try adding another owner
const secondOwner = { name: 'tester', email: 'test@verdaccio.org' };
const newOwners = [...maintainers, secondOwner];
await changeOwners(
app,
{
_rev: manifest.body._rev,
_id: manifest.body._id,
name: pkgName,
maintainers: newOwners,
},
'' // no token
).expect(HTTP_STATUS.UNAUTHORIZED);
});
});

View File

@@ -43,6 +43,12 @@ describe('search', () => {
links: {
npm: '',
},
maintainers: [
{
email: '',
name: 'test',
},
],
name: pkg,
publisher: {},
scope: '',
@@ -97,6 +103,12 @@ describe('search', () => {
links: {
npm: '',
},
maintainers: [
{
email: '',
name: 'test',
},
],
name: pkg,
publisher: {},
scope: '@scope',

View File

@@ -148,6 +148,25 @@ describe('token', () => {
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(HTTP_STATUS.OK);
expect(response2.body.ok).toBe(`you are authenticated as '${credentials.name}'`);
expect(response2.body.name).toBe(credentials.name);
}
);
test.each([['user.yaml'], ['user.jwt.yaml']])(
'should return name of requested user',
async (conf) => {
const app = await initializeServer(conf);
const username = 'yeti';
const credentials = { name: 'jota', password: 'secretPass' };
const response = await createUser(app, credentials.name, credentials.password);
expect(response.body.ok).toMatch(`user '${credentials.name}' created`);
const response3 = await supertest(app)
.get(`/-/user/org.couchdb.user:${username}`)
.set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, response.body.token))
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(HTTP_STATUS.OK);
expect(response3.body.ok).toBe(`you are authenticated as '${credentials.name}'`);
expect(response3.body.name).toBe(username);
}
);
@@ -165,5 +184,38 @@ describe('token', () => {
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(HTTP_STATUS.OK);
});
test.each([['user.yaml'], ['user.jwt.yaml']])(
'should return "false" if user is not logged in',
async (conf) => {
const app = await initializeServer(conf);
const credentials = { name: 'jota', password: '' };
const response = await supertest(app)
.get(`/-/user/org.couchdb.user:${credentials.name}`)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(HTTP_STATUS.OK);
expect(response.body.ok).toBe(false);
}
);
test.each([['user.yaml'], ['user.jwt.yaml']])(
'should fail if URL does not match user in request body',
async (conf) => {
const app = await initializeServer(conf);
const credentials = { name: 'jota', password: 'secretPass' };
const response = await createUser(app, credentials.name, credentials.password);
expect(response.body.ok).toMatch(`user '${credentials.name}' created`);
const response2 = await supertest(app)
.put('/-/user/org.couchdb.user:yeti') // different user
.set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, response.body.token))
.send({
name: credentials.name,
password: credentials.password,
})
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(HTTP_STATUS.BAD_REQUEST);
expect(response2.body.error).toBe(API_ERROR.USERNAME_MISMATCH);
}
);
});
});

View File

@@ -1,5 +1,68 @@
# @verdaccio/auth
## 7.0.0-next-7.20
### Patch Changes
- @verdaccio/core@7.0.0-next-7.20
- @verdaccio/config@7.0.0-next-7.20
- @verdaccio/loaders@7.0.0-next-7.20
- verdaccio-htpasswd@12.0.0-next-7.20
- @verdaccio/utils@7.0.0-next-7.20
- @verdaccio/signature@7.0.0-next-7.5
- @verdaccio/logger@7.0.0-next-7.20
## 7.0.0-next-7.19
### Patch Changes
- Updated dependencies [c31aec8]
- @verdaccio/config@7.0.0-next-7.19
- @verdaccio/loaders@7.0.0-next-7.19
- verdaccio-htpasswd@12.0.0-next-7.19
- @verdaccio/signature@7.0.0-next-7.5
- @verdaccio/core@7.0.0-next-7.19
- @verdaccio/utils@7.0.0-next-7.19
- @verdaccio/logger@7.0.0-next-7.19
## 7.0.0-next-7.18
### Patch Changes
- Updated dependencies [10dd81f]
- @verdaccio/config@7.0.0-next-7.18
- @verdaccio/core@7.0.0-next-7.18
- @verdaccio/loaders@7.0.0-next-7.18
- @verdaccio/logger@7.0.0-next-7.18
- verdaccio-htpasswd@12.0.0-next-7.18
- @verdaccio/signature@7.0.0-next-7.5
- @verdaccio/utils@7.0.0-next-7.18
## 7.0.0-next-7.17
### Patch Changes
- Updated dependencies [6e764e3]
- @verdaccio/config@7.0.0-next-7.17
- @verdaccio/core@7.0.0-next-7.17
- @verdaccio/loaders@7.0.0-next-7.17
- @verdaccio/logger@7.0.0-next-7.17
- verdaccio-htpasswd@12.0.0-next-7.17
- @verdaccio/signature@7.0.0-next-7.5
- @verdaccio/utils@7.0.0-next-7.17
## 7.0.0-next-7.16
### Patch Changes
- @verdaccio/logger@7.0.0-next-7.16
- @verdaccio/loaders@7.0.0-next-7.16
- verdaccio-htpasswd@12.0.0-next-7.16
- @verdaccio/core@7.0.0-next-7.16
- @verdaccio/config@7.0.0-next-7.16
- @verdaccio/utils@7.0.0-next-7.16
- @verdaccio/signature@7.0.0-next-7.5
## 7.0.0-next-7.15
### Minor Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/auth",
"version": "7.0.0-next-7.15",
"version": "7.0.0-next-7.20",
"description": "logger",
"main": "./build/index.js",
"types": "./build/index.d.ts",
@@ -38,21 +38,21 @@
},
"license": "MIT",
"dependencies": {
"@verdaccio/core": "workspace:7.0.0-next-7.15",
"@verdaccio/config": "workspace:7.0.0-next-7.15",
"@verdaccio/loaders": "workspace:7.0.0-next-7.15",
"@verdaccio/logger": "workspace:7.0.0-next-7.15",
"@verdaccio/config": "workspace:7.0.0-next-7.20",
"@verdaccio/core": "workspace:7.0.0-next-7.20",
"@verdaccio/loaders": "workspace:7.0.0-next-7.20",
"@verdaccio/logger": "workspace:7.0.0-next-7.20",
"@verdaccio/signature": "workspace:7.0.0-next-7.5",
"@verdaccio/utils": "workspace:7.0.0-next-7.15",
"@verdaccio/utils": "workspace:7.0.0-next-7.20",
"debug": "4.3.4",
"lodash": "4.17.21",
"verdaccio-htpasswd": "workspace:12.0.0-next-7.15"
"verdaccio-htpasswd": "workspace:12.0.0-next-7.20"
},
"devDependencies": {
"express": "4.18.3",
"supertest": "6.3.4",
"@verdaccio/middleware": "workspace:7.0.0-next-7.15",
"@verdaccio/types": "workspace:12.0.0-next-7.3"
"@verdaccio/middleware": "workspace:7.0.0-next-7.20",
"@verdaccio/types": "workspace:12.0.0-next-7.5",
"express": "4.19.2",
"supertest": "7.0.0"
},
"funding": {
"type": "opencollective",

View File

@@ -1,5 +1,55 @@
# @verdaccio/cli
## 7.0.0-next-7.20
### Patch Changes
- @verdaccio/node-api@7.0.0-next-7.20
- @verdaccio/core@7.0.0-next-7.20
- @verdaccio/config@7.0.0-next-7.20
- @verdaccio/logger@7.0.0-next-7.20
## 7.0.0-next-7.19
### Patch Changes
- Updated dependencies [c31aec8]
- @verdaccio/config@7.0.0-next-7.19
- @verdaccio/node-api@7.0.0-next-7.19
- @verdaccio/core@7.0.0-next-7.19
- @verdaccio/logger@7.0.0-next-7.19
## 7.0.0-next-7.18
### Patch Changes
- 10dd81f: feat: complete overhaul of web user interface
- Updated dependencies [10dd81f]
- @verdaccio/config@7.0.0-next-7.18
- @verdaccio/core@7.0.0-next-7.18
- @verdaccio/logger@7.0.0-next-7.18
- @verdaccio/node-api@7.0.0-next-7.18
## 7.0.0-next-7.17
### Patch Changes
- 199aea3: chore: add config location and loglevel to startup log
- Updated dependencies [6e764e3]
- @verdaccio/config@7.0.0-next-7.17
- @verdaccio/core@7.0.0-next-7.17
- @verdaccio/logger@7.0.0-next-7.17
- @verdaccio/node-api@7.0.0-next-7.17
## 7.0.0-next-7.16
### Patch Changes
- @verdaccio/logger@7.0.0-next-7.16
- @verdaccio/node-api@7.0.0-next-7.16
- @verdaccio/core@7.0.0-next-7.16
- @verdaccio/config@7.0.0-next-7.16
## 7.0.0-next-7.15
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/cli",
"version": "7.0.0-next-7.15",
"version": "7.0.0-next-7.20",
"author": {
"name": "Juan Picado",
"email": "juanpicado19@gmail.com"
@@ -43,14 +43,14 @@
"start": "ts-node src/index.ts"
},
"dependencies": {
"@verdaccio/core": "workspace:7.0.0-next-7.15",
"@verdaccio/config": "workspace:7.0.0-next-7.15",
"@verdaccio/logger": "workspace:7.0.0-next-7.15",
"@verdaccio/node-api": "workspace:7.0.0-next-7.15",
"clipanion": "3.2.1",
"envinfo": "7.11.0",
"@verdaccio/config": "workspace:7.0.0-next-7.20",
"@verdaccio/core": "workspace:7.0.0-next-7.20",
"@verdaccio/logger": "workspace:7.0.0-next-7.20",
"@verdaccio/node-api": "workspace:7.0.0-next-7.20",
"clipanion": "4.0.0-rc.3",
"envinfo": "7.13.0",
"kleur": "4.1.5",
"semver": "7.6.0"
"semver": "7.6.3"
},
"devDependencies": {
"ts-node": "10.9.2"

View File

@@ -58,6 +58,8 @@ export class InitCommand extends Command {
const configPathLocation = findConfigFile(this.config as string);
const configParsed = parseConfigFile(configPathLocation);
this.initLogger(configParsed);
logger.info({ file: configPathLocation }, 'using config file: @{file}');
logger.info('log level: %s', configParsed.log?.level || 'default');
const { web } = configParsed;
process.title = web?.title || DEFAULT_PROCESS_NAME;

View File

@@ -1,5 +1,44 @@
# @verdaccio/config
## 7.0.0-next-7.20
### Patch Changes
- @verdaccio/core@7.0.0-next-7.20
- @verdaccio/utils@7.0.0-next-7.20
## 7.0.0-next-7.19
### Patch Changes
- c31aec8: fix: typo in config docs regarding check_owners
- @verdaccio/core@7.0.0-next-7.19
- @verdaccio/utils@7.0.0-next-7.19
## 7.0.0-next-7.18
### Patch Changes
- 10dd81f: feat: complete overhaul of web user interface
- @verdaccio/core@7.0.0-next-7.18
- @verdaccio/utils@7.0.0-next-7.18
## 7.0.0-next-7.17
### Patch Changes
- 6e764e3: feat: add support for npm owner
- Updated dependencies [6e764e3]
- @verdaccio/core@7.0.0-next-7.17
- @verdaccio/utils@7.0.0-next-7.17
## 7.0.0-next-7.16
### Patch Changes
- @verdaccio/core@7.0.0-next-7.16
- @verdaccio/utils@7.0.0-next-7.16
## 7.0.0-next-7.15
### Minor Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/config",
"version": "7.0.0-next-7.15",
"version": "7.0.0-next-7.20",
"description": "logger",
"main": "./build/index.js",
"types": "build/index.d.ts",
@@ -38,17 +38,15 @@
"build": "pnpm run build:js && pnpm run build:types"
},
"dependencies": {
"@verdaccio/core": "workspace:7.0.0-next-7.15",
"@verdaccio/utils": "workspace:7.0.0-next-7.15",
"@verdaccio/core": "workspace:7.0.0-next-7.20",
"@verdaccio/utils": "workspace:7.0.0-next-7.20",
"debug": "4.3.4",
"js-yaml": "4.1.0",
"lodash": "4.17.21",
"minimatch": "7.4.6",
"yup": "0.32.11"
"minimatch": "7.4.6"
},
"devDependencies": {
"@types/minimatch": "5.1.2",
"@types/yup": "0.32.0"
"@types/minimatch": "5.1.2"
},
"funding": {
"type": "opencollective",

View File

@@ -18,6 +18,12 @@ storage: ./storage
# https://verdaccio.org/docs/webui
web:
title: Verdaccio
# custom colors for header background and font
# primaryColor: "#4b5e40"
# custom logos and favicon
# logo: ./path/to/logo.png
# logoDark: ./path/to/logoDark.png
# favicon: ./path/to/favicon.ico
# comment out to disable gravatar support
# gravatar: false
# by default packages are ordercer ascendant (asc|desc)
@@ -35,6 +41,7 @@ web:
# showSearch: true
# showRaw: true
# showDownloadTarball: true
# showUplinks: true
# HTML tags injected after manifest <scripts/>
# scriptsBodyAfter:
# - '<script type="text/javascript" src="https://my.company.com/customJS.min.js"></script>'
@@ -113,6 +120,7 @@ server:
# https://verdaccio.org/docs/configuration#offline-publish
# publish:
# allow_offline: false
# check_owners: false
# https://verdaccio.org/docs/configuration#url-prefix
# url_prefix: /verdaccio/
@@ -179,6 +187,7 @@ server:
middlewares:
audit:
enabled: true
# timeout: 10000
# https://verdaccio.org/docs/logger
# log settings

View File

@@ -21,6 +21,12 @@ plugins: /verdaccio/plugins
# https://verdaccio.org/docs/webui
web:
title: Verdaccio
# custom colors for header background and font
# primaryColor: "#4b5e40"
# custom logos and favicon
# logo: ./path/to/logo.png
# logoDark: ./path/to/logoDark.png
# favicon: ./path/to/favicon.ico
# Comment out to disable gravatar support
# gravatar: false
# By default packages are ordered ascendant (asc|desc)
@@ -38,6 +44,7 @@ web:
# showSearch: true
# showRaw: true
# showDownloadTarball: true
# showUplinks: true
# HTML tags injected after manifest <scripts/>
# scriptsBodyAfter:
# - '<script type="text/javascript" src="https://my.company.com/customJS.min.js"></script>'
@@ -119,6 +126,7 @@ server:
# https://verdaccio.org/docs/configuration#offline-publish
# publish:
# allow_offline: false
# check_owners: false
# https://verdaccio.org/docs/configuration#url-prefix
# url_prefix: /verdaccio/
@@ -185,6 +193,7 @@ server:
middlewares:
audit:
enabled: true
# timeout: 10000
# https://verdaccio.org/docs/logger
# log settings

View File

@@ -1,5 +1,19 @@
# @verdaccio/core
## 7.0.0-next-7.20
## 7.0.0-next-7.19
## 7.0.0-next-7.18
## 7.0.0-next-7.17
### Patch Changes
- 6e764e3: feat: add support for npm owner
## 7.0.0-next-7.16
## 7.0.0-next-7.15
### Minor Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/core",
"version": "7.0.0-next-7.15",
"version": "7.0.0-next-7.20",
"description": "core utilities",
"keywords": [
"private",
@@ -33,18 +33,18 @@
"access": "public"
},
"dependencies": {
"ajv": "8.12.0",
"core-js": "3.35.0",
"http-errors": "2.0.0",
"http-status-codes": "2.3.0",
"semver": "7.6.0",
"ajv": "8.12.0",
"process-warning": "1.0.0",
"core-js": "3.35.0"
"semver": "7.6.3"
},
"devDependencies": {
"@verdaccio/types": "workspace:12.0.0-next-7.5",
"lodash": "4.17.21",
"typedoc": "0.23.25",
"typedoc-plugin-missing-exports": "latest",
"@verdaccio/types": "workspace:12.0.0-next-7.3"
"typedoc-plugin-missing-exports": "latest"
},
"scripts": {
"clean": "rimraf ./build",

View File

@@ -6,6 +6,7 @@ export const TIME_EXPIRATION_1H = '1h';
export const DIST_TAGS = 'dist-tags';
export const LATEST = 'latest';
export const USERS = 'users';
export const MAINTAINERS = 'maintainers';
export const DEFAULT_USER = 'Anonymous';
export const HEADER_TYPE = {

View File

@@ -39,6 +39,7 @@ export const API_ERROR = {
BAD_PACKAGE_DATA: 'bad incoming package data',
USERNAME_PASSWORD_REQUIRED: 'username and password is required',
USERNAME_ALREADY_REGISTERED: 'username is already registered',
USERNAME_MISMATCH: 'username does not match logged in user',
};
export const SUPPORT_ERRORS = {

View File

@@ -23,6 +23,7 @@ export {
DEFAULT_PASSWORD_VALIDATION,
DEFAULT_USER,
USERS,
MAINTAINERS,
HtpasswdHashAlgorithm,
} from './constants';
const validationUtils = validatioUtils;

View File

@@ -2,7 +2,7 @@ import assert from 'assert';
import { Manifest } from '@verdaccio/types';
import { DEFAULT_PASSWORD_VALIDATION, DIST_TAGS } from './constants';
import { DEFAULT_PASSWORD_VALIDATION, DIST_TAGS, MAINTAINERS } from './constants';
export { validatePublishSingleVersion } from './schemes/publish-manifest';
@@ -67,7 +67,6 @@ export function validatePackage(name: string): boolean {
* @param {*} manifest
* @param {*} name
* @return {Object} the object with additional properties as dist-tags ad versions
* FUTURE: rename to normalizeMetadata
*/
export function normalizeMetadata(manifest: Manifest, name: string): Manifest {
assert.strictEqual(manifest.name, name);
@@ -77,7 +76,11 @@ export function normalizeMetadata(manifest: Manifest, name: string): Manifest {
_manifest[DIST_TAGS] = {};
}
// This may not be nee dit
if (!Array.isArray(manifest[MAINTAINERS])) {
_manifest[MAINTAINERS] = [];
}
// This may not be needed
if (!isObject(manifest['versions'])) {
_manifest['versions'] = {};
}
@@ -114,3 +117,11 @@ export function validatePassword(
? password.match(validation) !== null
: false;
}
export function validateUserName(userName: any, expectedName: string): boolean {
return (
typeof userName === 'string' &&
userName.split(':')[0] === 'org.couchdb.user' &&
userName.split(':')[1] === expectedName
);
}

View File

@@ -6,6 +6,7 @@ import {
validateName,
validatePackage,
validatePassword,
validateUserName,
} from '../src/validation-utils';
describe('validatePackage', () => {
@@ -224,3 +225,17 @@ describe('validatePassword', () => {
expect(validatePassword('1235678910')).toBeTruthy();
});
});
describe('validateUserName', () => {
test('should validate username according to expected name', () => {
expect(validateUserName('org.couchdb.user:test', 'test')).toBeTruthy();
});
test('should fail to validate username if different from expected name', () => {
expect(validateUserName('org.couchdb.user:foouser', 'test')).toBeFalsy();
});
test('should fail to validate username if not given', () => {
expect(validateUserName(undefined, 'test')).toBeFalsy();
});
});

View File

@@ -39,7 +39,7 @@
"lockfile": "1.0.4"
},
"devDependencies": {
"@verdaccio/types": "workspace:12.0.0-next-7.3"
"@verdaccio/types": "workspace:12.0.0-next-7.5"
},
"scripts": {
"clean": "rimraf ./build",

View File

@@ -1,5 +1,49 @@
# Change Log
## 12.0.0-next-7.20
### Patch Changes
- Updated dependencies [ccc7bd1]
- @verdaccio/url@12.0.0-next-7.20
- @verdaccio/core@7.0.0-next-7.20
- @verdaccio/utils@7.0.0-next-7.20
## 12.0.0-next-7.19
### Patch Changes
- @verdaccio/core@7.0.0-next-7.19
- @verdaccio/url@12.0.0-next-7.19
- @verdaccio/utils@7.0.0-next-7.19
## 12.0.0-next-7.18
### Patch Changes
- @verdaccio/core@7.0.0-next-7.18
- @verdaccio/url@12.0.0-next-7.18
- @verdaccio/utils@7.0.0-next-7.18
## 12.0.0-next-7.17
### Patch Changes
- Updated dependencies [6e764e3]
- @verdaccio/core@7.0.0-next-7.17
- @verdaccio/url@12.0.0-next-7.17
- @verdaccio/utils@7.0.0-next-7.17
## 12.0.0-next-7.16
### Patch Changes
- 5bfab62: feat: add tarball details for published packages
- Updated dependencies [38b1e82]
- @verdaccio/url@12.0.0-next-7.16
- @verdaccio/core@7.0.0-next-7.16
- @verdaccio/utils@7.0.0-next-7.16
## 12.0.0-next-7.15
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/tarball",
"version": "12.0.0-next-7.15",
"version": "12.0.0-next-7.20",
"description": "tarball utilities resolver",
"keywords": [
"private",
@@ -33,14 +33,16 @@
"access": "public"
},
"dependencies": {
"@verdaccio/core": "workspace:7.0.0-next-7.15",
"@verdaccio/url": "workspace:12.0.0-next-7.15",
"@verdaccio/utils": "workspace:7.0.0-next-7.15",
"@verdaccio/core": "workspace:7.0.0-next-7.20",
"@verdaccio/url": "workspace:12.0.0-next-7.20",
"@verdaccio/utils": "workspace:7.0.0-next-7.20",
"debug": "4.3.4",
"lodash": "4.17.21"
"gunzip-maybe": "^1.4.2",
"lodash": "4.17.21",
"tar-stream": "^3.1.7"
},
"devDependencies": {
"@verdaccio/types": "workspace:12.0.0-next-7.3",
"@verdaccio/types": "workspace:12.0.0-next-7.5",
"node-mocks-http": "1.14.1"
},
"scripts": {

View File

@@ -0,0 +1,34 @@
import gunzipMaybe from 'gunzip-maybe';
import { Readable } from 'stream';
import * as tarStream from 'tar-stream';
export type TarballDetails = {
fileCount: number;
unpackedSize: number; // in bytes
};
export async function getTarballDetails(buffer: Buffer): Promise<TarballDetails> {
let fileCount = 0;
let unpackedSize = 0;
const readable = Readable.from(buffer);
const unpack = tarStream.extract();
return new Promise((resolve, reject) => {
readable
.pipe(gunzipMaybe())
.pipe(unpack)
.on('entry', (header, stream, next) => {
fileCount++;
unpackedSize += Number(header.size);
stream.resume(); // important to ensure that "entry" events keep firing
next();
})
.on('finish', () => {
resolve({
fileCount,
unpackedSize,
});
})
.on('error', reject);
});
}

View File

@@ -5,5 +5,6 @@ export {
convertDistVersionToLocalTarballsUrl,
} from './convertDistRemoteToLocalTarballUrls';
export { extractTarballFromUrl, getLocalRegistryTarballUri } from './getLocalRegistryTarballUri';
export { getTarballDetails, TarballDetails } from './getTarballDetails';
export { RequestOptions };

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,33 @@
import fs from 'fs';
import path from 'path';
import { getTarballDetails } from '../src/getTarballDetails.ts';
const getFilePath = (filename: string): string => {
return path.resolve(__dirname, `assets/${filename}`);
};
const getFileBuffer = async (filename: string): Promise<Buffer> => {
return fs.promises.readFile(getFilePath(filename));
};
describe('getTarballDetails', () => {
test('should return stats of tarball (gzipped)', async () => {
const buffer = await getFileBuffer('tarball.tgz');
const details = await getTarballDetails(buffer);
expect(details.fileCount).toBe(2);
expect(details.unpackedSize).toBe(1280);
});
test('should return stats of tarball (uncompressed)', async () => {
const buffer = await getFileBuffer('tarball.tar');
const details = await getTarballDetails(buffer);
expect(details.fileCount).toBe(2);
expect(details.unpackedSize).toBe(1280);
});
test('should throw an error if the buffer is corrupt', async () => {
const corruptBuffer = Buffer.from('this is not a tarball');
await expect(getTarballDetails(corruptBuffer)).rejects.toThrow();
});
});

View File

@@ -1,5 +1,19 @@
# Change Log
## 12.0.0-next-7.5
### Patch Changes
- 10dd81f: feat: complete overhaul of web user interface
## 12.0.0-next-7.4
### Patch Changes
- 6e764e3: feat: add support for npm owner
- de6ff5c: fix: update fields for abbreviated manifest
- 117eb1c: fix: change bundleDependencies to array
## 12.0.0-next-7.3
### Minor Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/types",
"version": "12.0.0-next-7.3",
"version": "12.0.0-next-7.5",
"description": "verdaccio types definitions",
"keywords": [
"private",

View File

@@ -83,6 +83,7 @@ export type PackageManagers = 'pnpm' | 'yarn' | 'npm';
export type CommonWebConf = {
title?: string;
logo?: string;
logoDark?: string;
favicon?: string;
gravatar?: boolean;
sort_packages?: string;
@@ -98,6 +99,7 @@ export type CommonWebConf = {
showFooter?: boolean;
showThemeSwitch?: boolean;
showDownloadTarball?: boolean;
showUplinks?: boolean;
hideDeprecatedVersions?: boolean;
primaryColor: string;
showRaw?: boolean;
@@ -196,6 +198,7 @@ export interface Security {
export interface PublishOptions {
allow_offline: boolean;
check_owners: boolean;
}
export interface ListenAddress {

View File

@@ -123,7 +123,8 @@ export interface Version {
devDependencies?: Dependencies;
optionalDependencies?: Dependencies;
peerDependenciesMeta?: PeerDependenciesMeta;
bundleDependencies?: Dependencies;
bundleDependencies?: string[];
acceptDependencies?: Dependencies;
keywords?: string | string[];
nodeVersion?: string;
_id: string;
@@ -178,7 +179,9 @@ export interface FullRemoteManifest {
'dist-tags': GenericBody;
time: GenericBody;
versions: Versions;
/** store owners of this package */
maintainers?: Author[];
contributors?: Author[];
/** store the latest readme **/
readme?: string;
/** store star assigned to this packages by users */
@@ -223,7 +226,6 @@ export type AbbreviatedVersion = Pick<
Version,
| 'name'
| 'version'
| 'description'
| 'dependencies'
| 'devDependencies'
| 'bin'
@@ -231,6 +233,15 @@ export type AbbreviatedVersion = Pick<
| 'engines'
| 'funding'
| 'peerDependencies'
| 'cpu'
| 'deprecated'
| 'directories'
| 'hasInstallScript'
| 'optionalDependencies'
| 'os'
| 'peerDependenciesMeta'
| 'acceptDependencies'
| '_hasShrinkwrap'
>;
export interface AbbreviatedVersions {

View File

@@ -1,5 +1,38 @@
# Change Log
## 12.0.0-next-7.20
### Patch Changes
- ccc7bd1: fix(middleware): link to favicon in template
- @verdaccio/core@7.0.0-next-7.20
## 12.0.0-next-7.19
### Patch Changes
- @verdaccio/core@7.0.0-next-7.19
## 12.0.0-next-7.18
### Patch Changes
- @verdaccio/core@7.0.0-next-7.18
## 12.0.0-next-7.17
### Patch Changes
- Updated dependencies [6e764e3]
- @verdaccio/core@7.0.0-next-7.17
## 12.0.0-next-7.16
### Patch Changes
- 38b1e82: patch(core/url): Throw if VERDACCIO_FORWARDED_PROTO resolves to an array (#4613 by @Tobbe)
- @verdaccio/core@7.0.0-next-7.16
## 12.0.0-next-7.15
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/url",
"version": "12.0.0-next-7.15",
"version": "12.0.0-next-7.20",
"description": "url utilities resolver",
"keywords": [
"private",
@@ -33,13 +33,13 @@
"access": "public"
},
"dependencies": {
"@verdaccio/core": "workspace:7.0.0-next-7.15",
"@verdaccio/core": "workspace:7.0.0-next-7.20",
"debug": "4.3.4",
"lodash": "4.17.21",
"validator": "13.11.0"
"validator": "13.12.0"
},
"devDependencies": {
"@verdaccio/types": "workspace:12.0.0-next-7.3",
"@verdaccio/types": "workspace:12.0.0-next-7.5",
"node-mocks-http": "1.14.1"
},
"scripts": {

View File

@@ -121,10 +121,17 @@ export function getPublicUrl(url_prefix: string = '', requestOptions: RequestOpt
throw new Error('invalid host');
}
// 'X-Forwarded-Proto' is the default header
const protoHeader: string =
process.env.VERDACCIO_FORWARDED_PROTO?.toLocaleLowerCase() ??
HEADERS.FORWARDED_PROTO.toLowerCase();
const forwardedProtocolHeaderValue = requestOptions.headers[protoHeader] as string | undefined;
const forwardedProtocolHeaderValue = requestOptions.headers[protoHeader];
if (Array.isArray(forwardedProtocolHeaderValue)) {
// This really should never happen - only set-cookie is allowed to have
// multiple values.
throw new Error('invalid forwarded protocol header value. Reading header ' + protoHeader);
}
const protocol = getWebProtocol(forwardedProtocolHeaderValue, requestOptions.protocol);
const combinedUrl = combineBaseUrl(protocol, host, url_prefix);

View File

@@ -102,7 +102,7 @@ describe('host', () => {
});
expect(
getPublicUrl(null, {
getPublicUrl(undefined, {
host: req.hostname,
headers: req.headers as any,
protocol: req.protocol,
@@ -316,6 +316,31 @@ describe('env variable', () => {
delete process.env.VERDACCIO_FORWARDED_PROTO;
});
test('with the VERDACCIO_FORWARDED_PROTO environment variable set to "set-cookie"', () => {
process.env.VERDACCIO_FORWARDED_PROTO = 'set-cookie';
const req = httpMocks.createRequest({
method: 'GET',
headers: {
host: 'some.com',
cookie: 'name=value; name2=value2;',
'set-cookie': [
'cookieName1=value; expires=Tue, 19 Jan 2038 03:14:07 GMT;',
'cookieName2=value; expires=Tue, 19 Jan 2038 03:14:07 GMT;',
],
},
url: '/',
});
expect(() =>
getPublicUrl('/test/', {
host: req.hostname,
headers: req.headers as any,
protocol: req.protocol,
})
).toThrow('invalid forwarded protocol header value. Reading header set-cookie');
delete process.env.VERDACCIO_FORWARDED_PROTO;
});
test('with a invalid X-Forwarded-Proto https and host injection with invalid host', () => {
process.env.VERDACCIO_PUBLIC_URL = 'http://injection.test.com"><svg onload="alert(1)">';
const req = httpMocks.createRequest({

View File

@@ -1,5 +1,41 @@
# @verdaccio/hooks
## 7.0.0-next-7.20
### Patch Changes
- @verdaccio/core@7.0.0-next-7.20
- @verdaccio/logger@7.0.0-next-7.20
## 7.0.0-next-7.19
### Patch Changes
- @verdaccio/core@7.0.0-next-7.19
- @verdaccio/logger@7.0.0-next-7.19
## 7.0.0-next-7.18
### Patch Changes
- @verdaccio/core@7.0.0-next-7.18
- @verdaccio/logger@7.0.0-next-7.18
## 7.0.0-next-7.17
### Patch Changes
- Updated dependencies [6e764e3]
- @verdaccio/core@7.0.0-next-7.17
- @verdaccio/logger@7.0.0-next-7.17
## 7.0.0-next-7.16
### Patch Changes
- @verdaccio/logger@7.0.0-next-7.16
- @verdaccio/core@7.0.0-next-7.16
## 7.0.0-next-7.15
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/hooks",
"version": "7.0.0-next-7.15",
"version": "7.0.0-next-7.20",
"description": "loaders logic",
"main": "./build/index.js",
"types": "build/index.d.ts",
@@ -29,17 +29,17 @@
"node": ">=18"
},
"dependencies": {
"@verdaccio/core": "workspace:7.0.0-next-7.15",
"@verdaccio/logger": "workspace:7.0.0-next-7.15",
"@verdaccio/core": "workspace:7.0.0-next-7.20",
"@verdaccio/logger": "workspace:7.0.0-next-7.20",
"core-js": "3.35.0",
"debug": "4.3.4",
"got-cjs": "12.5.4",
"handlebars": "4.7.8"
},
"devDependencies": {
"@verdaccio/auth": "workspace:7.0.0-next-7.15",
"@verdaccio/config": "workspace:7.0.0-next-7.15",
"@verdaccio/types": "workspace:12.0.0-next-7.3",
"@verdaccio/auth": "workspace:7.0.0-next-7.20",
"@verdaccio/config": "workspace:7.0.0-next-7.20",
"@verdaccio/types": "workspace:12.0.0-next-7.5",
"nock": "13.5.1"
},
"scripts": {

View File

@@ -1,5 +1,35 @@
# @verdaccio/loaders
## 7.0.0-next-7.20
### Patch Changes
- @verdaccio/logger@7.0.0-next-7.20
## 7.0.0-next-7.19
### Patch Changes
- @verdaccio/logger@7.0.0-next-7.19
## 7.0.0-next-7.18
### Patch Changes
- @verdaccio/logger@7.0.0-next-7.18
## 7.0.0-next-7.17
### Patch Changes
- @verdaccio/logger@7.0.0-next-7.17
## 7.0.0-next-7.16
### Patch Changes
- @verdaccio/logger@7.0.0-next-7.16
## 7.0.0-next-7.15
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/loaders",
"version": "7.0.0-next-7.15",
"version": "7.0.0-next-7.20",
"description": "loaders logic",
"main": "./build/index.js",
"types": "build/index.d.ts",
@@ -13,14 +13,14 @@
"url": "https://github.com/verdaccio/verdaccio"
},
"dependencies": {
"@verdaccio/logger": "workspace:7.0.0-next-7.15",
"@verdaccio/logger": "workspace:7.0.0-next-7.20",
"debug": "4.3.4",
"lodash": "4.17.21"
},
"devDependencies": {
"@verdaccio/core": "workspace:7.0.0-next-7.15",
"@verdaccio/config": "workspace:7.0.0-next-7.15",
"@verdaccio/types": "workspace:12.0.0-next-7.3",
"@verdaccio/core": "workspace:7.0.0-next-7.20",
"@verdaccio/config": "workspace:7.0.0-next-7.20",
"@verdaccio/types": "workspace:12.0.0-next-7.5",
"@verdaccio-scope/verdaccio-auth-foo": "0.0.2",
"verdaccio-auth-memory": "workspace:*",
"customprefix-auth": "2.0.0-next.0"

View File

@@ -1,5 +1,36 @@
# @verdaccio/logger-7
## 7.0.0-next-7.20
### Patch Changes
- @verdaccio/logger-commons@7.0.0-next-7.20
## 7.0.0-next-7.19
### Patch Changes
- @verdaccio/logger-commons@7.0.0-next-7.19
## 7.0.0-next-7.18
### Patch Changes
- @verdaccio/logger-commons@7.0.0-next-7.18
## 7.0.0-next-7.17
### Patch Changes
- @verdaccio/logger-commons@7.0.0-next-7.17
## 7.0.0-next-7.16
### Patch Changes
- Updated dependencies [cf1b46c]
- @verdaccio/logger-commons@7.0.0-next-7.16
## 7.0.0-next-7.15
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/logger-7",
"version": "7.0.0-next-7.15",
"version": "7.0.0-next-7.20",
"description": "logger for verdaccio 5.x version",
"main": "./build/index.js",
"types": "./build/index.d.ts",
@@ -38,11 +38,11 @@
"build": "pnpm run build:js && pnpm run build:types"
},
"dependencies": {
"@verdaccio/logger-commons": "workspace:7.0.0-next-7.15",
"@verdaccio/logger-commons": "workspace:7.0.0-next-7.20",
"pino": "7.11.0"
},
"devDependencies": {
"@verdaccio/types": "workspace:12.0.0-next-7.3"
"@verdaccio/types": "workspace:12.0.0-next-7.5"
},
"funding": {
"type": "opencollective",

View File

@@ -1,5 +1,39 @@
# @verdaccio/logger-commons
## 7.0.0-next-7.20
### Patch Changes
- @verdaccio/core@7.0.0-next-7.20
## 7.0.0-next-7.19
### Patch Changes
- @verdaccio/core@7.0.0-next-7.19
## 7.0.0-next-7.18
### Patch Changes
- @verdaccio/core@7.0.0-next-7.18
## 7.0.0-next-7.17
### Patch Changes
- Updated dependencies [6e764e3]
- @verdaccio/core@7.0.0-next-7.17
## 7.0.0-next-7.16
### Patch Changes
- cf1b46c: fix: log spacing depending on the FORMAT and COLORS options
- Updated dependencies [cf1b46c]
- @verdaccio/logger-prettify@7.0.0-next-7.3
- @verdaccio/core@7.0.0-next-7.16
## 7.0.0-next-7.15
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/logger-commons",
"version": "7.0.0-next-7.15",
"version": "7.0.0-next-7.20",
"description": "logger",
"main": "./build/index.js",
"types": "./build/index.d.ts",
@@ -38,14 +38,14 @@
"build": "pnpm run build:js && pnpm run build:types"
},
"dependencies": {
"@verdaccio/core": "workspace:7.0.0-next-7.15",
"@verdaccio/logger-prettify": "workspace:7.0.0-next-7.2",
"@verdaccio/core": "workspace:7.0.0-next-7.20",
"@verdaccio/logger-prettify": "workspace:7.0.0-next-7.3",
"debug": "4.3.4",
"colorette": "2.0.20"
},
"devDependencies": {
"pino": "7.11.0",
"@verdaccio/types": "workspace:12.0.0-next-7.3"
"@verdaccio/types": "workspace:12.0.0-next-7.5"
},
"funding": {
"type": "opencollective",

View File

@@ -36,7 +36,7 @@ describe('logger test', () => {
logger.trace(`this should not be logged`);
logger.error(`this should logged`);
const content = await readLogFile(file);
expect(content).toBe('info --- testing test \nerror--- this should logged \n');
expect(content).toBe('info --- testing test\nerror--- this should logged\n');
});
test('should include all logging level', async () => {
@@ -51,7 +51,7 @@ describe('logger test', () => {
logger.error(`this should logged`);
const content = await readLogFile(file);
expect(content).toBe(
'info --- testing test \ndebug--- this should not be logged \ntrace--- this should not be logged \nerror--- this should logged \n'
'info --- testing test\ndebug--- this should not be logged\ntrace--- this should not be logged\nerror--- this should logged\n'
);
});
});
@@ -101,7 +101,7 @@ describe('logger test', () => {
`publishing or updating a new version for @{packageName}`
);
const content = await readLogFile(file);
expect(content).toEqual('info --- publishing or updating a new version for test \n');
expect(content).toEqual('info --- publishing or updating a new version for test\n');
});
test('should log into a file with pretty-timestamped', async () => {
@@ -122,7 +122,7 @@ describe('logger test', () => {
);
const content = await readLogFile(file);
// TODO: we might want mock time for testing
expect(content).toMatch('info --- publishing or updating a new version for test \n');
expect(content).toMatch('info --- publishing or updating a new version for test\n');
});
});
});

View File

@@ -1,5 +1,11 @@
# @verdaccio/logger-prettify
## 7.0.0-next-7.3
### Patch Changes
- cf1b46c: fix: log spacing depending on the FORMAT and COLORS options
## 7.0.0-next-7.2
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/logger-prettify",
"version": "7.0.0-next-7.2",
"version": "7.0.0-next-7.3",
"description": "logger",
"main": "./build/index.js",
"types": "build/index.d.ts",

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