0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-12-16 21:56:25 -05:00

build: configure prettier as formatter for json, yaml and markdown (#1930)

* build: configure pretter as formatter for most files

* chore: reformat code (#1931)

* chore: re-format all files

* chore: force run quality anaylsis test

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

Co-authored-by: Juan Picado @jotadeveloper <juanpicado19@gmail.com>
This commit is contained in:
Abraham Schilling 2020-09-03 21:15:29 +02:00 committed by Juan Picado
parent 8efc6feab2
commit ddb42431d1
147 changed files with 101666 additions and 101848 deletions

View file

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

View file

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

View file

@ -1,24 +1,11 @@
node_modules
coverage/
wiki/
static/
flow-typed/
website/
build/
*.md
*.lock
*.yaml
Dockerfile
*.rpi
*.html
*.scss
*.png
*.json
*.name
*.tgz
*.jpg
*.sh
**/partials/**
**/fixtures/** **/fixtures/**
types/custom.d.ts
**/mock/store/** **/mock/store/**
**/partials/**
**/types/custom.d.ts
build/
coverage/
flow-typed/
node_modules/
static/
website/
wiki/

View file

@ -2,18 +2,15 @@
"extends": [ "extends": [
"eslint:recommended", "eslint:recommended",
"google", "google",
"plugin:prettier/recommended",
"plugin:react/recommended", "plugin:react/recommended",
"plugin:jest/recommended", "plugin:jest/recommended",
"plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended", "plugin:@typescript-eslint/recommended",
"plugin:import/typescript", "plugin:import/typescript",
"plugin:jsx-a11y/recommended", "plugin:jsx-a11y/recommended",
"prettier", "prettier"
"prettier/react",
"prettier/@typescript-eslint"
], ],
"plugins": ["import", "jest", "jsx-a11y", "react-hooks", "prettier"], "plugins": ["import", "jest", "jsx-a11y", "react-hooks"],
"env": { "env": {
"es6": true, "es6": true,
"node": true, "node": true,
@ -32,9 +29,6 @@
} }
}, },
"settings": { "settings": {
"react": {
"version": "detect"
},
"import/resolver": { "import/resolver": {
"node": { "node": {
"extensions": [".js", ".jsx", ".ts", ".tsx"] "extensions": [".js", ".jsx", ".ts", ".tsx"]
@ -44,22 +38,6 @@
"parser": "@typescript-eslint/parser", "parser": "@typescript-eslint/parser",
"rules": { "rules": {
"curly": ["error", "all"], "curly": ["error", "all"],
"prettier/prettier": [
2,
{
"useTabs": false,
"printWidth": 160,
"tabWidth": 2,
"singleQuote": true,
"bracketSpacing": true,
"jsxBracketSameLine": true,
"trailingComma": "es5",
"semi": true,
"parser": "typescript",
"importOrder": ["^@verdaccio/(.*)$", "^[./]"],
"importOrderSeparation": true
}
],
"react/prop-types": 0, "react/prop-types": 0,
"jest/no-export": 0, "jest/no-export": 0,
"jest/no-test-callback": 0, "jest/no-test-callback": 0,

View file

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

View file

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

View file

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

2
.github/stale.yml vendored
View file

@ -10,7 +10,7 @@ exemptLabels:
- issue: bug - issue: bug
- dev: discuss - dev: discuss
# Label to use when marking an issue as stale # Label to use when marking an issue as stale
staleLabel: issue: wontfix staleLabel: 'issue: wontfix'
# Comment to post when marking an issue as stale. Set to `false` to disable # Comment to post when marking an issue as stale. Set to `false` to disable
markComment: > markComment: >
Hi pal 👋🏼! Hi pal 👋🏼!

View file

@ -34,6 +34,8 @@ jobs:
run: npm i -g pnpm run: npm i -g pnpm
- name: Install - name: Install
run: pnpm recursive install run: pnpm recursive install
- name: Format
run: pnpm format:check
- name: Lint - name: Lint
run: pnpm lint run: pnpm lint
- name: Clean - name: Clean

View file

@ -19,7 +19,6 @@ jobs:
run: npm run docker run: npm run docker
env: env:
VERDACCIO_BUILD_REGISTRY: https://registry.verdaccio.org VERDACCIO_BUILD_REGISTRY: https://registry.verdaccio.org
# testVerdaccio: # testVerdaccio:
# name: Test Verdaccio Publish # name: Test Verdaccio Publish
# runs-on: ubuntu-latest # runs-on: ubuntu-latest

1
.gitignore vendored
View file

@ -2,6 +2,7 @@
verdaccio-*.tgz verdaccio-*.tgz
.DS_Store .DS_Store
build/ build/
.eslintcache
### Test ### Test

View file

@ -13,20 +13,3 @@
CHANGELOG.md CHANGELOG.md
CONTRIBUTORS.md CONTRIBUTORS.md
node_modules/ node_modules/
**/coverage/**
**/build/*.js
test/unit/partials/*
build/*
.github/
.vscode/
wiki/
.yarnrc.yml
yarn-error.log
.yarn/
test/functional/store/*
storage_default_storage/*
docker-examples/
.prettierignore
.npmignore
.gitignore
*.ico

View file

@ -1,7 +1,7 @@
{ {
"endOfLine": "lf", "endOfLine": "lf",
"useTabs": false, "useTabs": false,
"printWidth": 180, "printWidth": 160,
"tabWidth": 2, "tabWidth": 2,
"singleQuote": true, "singleQuote": true,
"bracketSpacing": true, "bracketSpacing": true,

15
.vscode/launch.json vendored
View file

@ -4,7 +4,6 @@
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0", "version": "0.2.0",
"configurations": [ "configurations": [
{ {
"type": "node", "type": "node",
"request": "launch", "request": "launch",
@ -24,13 +23,10 @@
"request": "launch", "request": "launch",
"program": "${workspaceRoot}/node_modules/bin/jest", "program": "${workspaceRoot}/node_modules/bin/jest",
"stopOnEntry": false, "stopOnEntry": false,
"args": [ "args": ["--debug=true"],
"--debug=true" ],
"cwd": "${workspaceRoot}", "cwd": "${workspaceRoot}",
"runtimeExecutable": null, "runtimeExecutable": null,
"runtimeArgs": [ "runtimeArgs": ["--nolazy"],
"--nolazy"
],
"env": { "env": {
"NODE_ENV": "test", "NODE_ENV": "test",
"TZ": "UTC" "TZ": "UTC"
@ -51,7 +47,8 @@
"--debug=false", "--debug=false",
"--verbose", "--verbose",
"--useStderr", "--useStderr",
"--detectOpenHandles"], "--detectOpenHandles"
],
"cwd": "${workspaceRoot}", "cwd": "${workspaceRoot}",
"env": { "env": {
"BABEL_ENV": "testOldEnv", "BABEL_ENV": "testOldEnv",
@ -62,9 +59,7 @@
"preLaunchTask": "pre-test", "preLaunchTask": "pre-test",
"console": "integratedTerminal", "console": "integratedTerminal",
"runtimeExecutable": null, "runtimeExecutable": null,
"runtimeArgs": [ "runtimeArgs": ["--nolazy"]
"--nolazy"
],
}, },
{ {
"type": "node", "type": "node",

5
.vscode/tasks.json vendored
View file

@ -15,10 +15,7 @@
}, },
{ {
"label": "pre-test", "label": "pre-test",
"dependsOn": [ "dependsOn": ["npm: code:build", "npm: test:clean"]
"npm: code:build",
"npm: test:clean"
]
} }
] ]
} }

View file

@ -8,19 +8,19 @@ In the interest of fostering an open and welcoming environment, we as contributo
Examples of behavior that contributes to creating a positive environment include: Examples of behavior that contributes to creating a positive environment include:
* Using welcoming and inclusive language - Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences - Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism - Gracefully accepting constructive criticism
* Focusing on what is best for the community - Focusing on what is best for the community
* Showing empathy towards other community members - Showing empathy towards other community members
Examples of unacceptable behavior by participants include: Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances - The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks - Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment - Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission - Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting - Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities ## Our Responsibilities

View file

@ -29,10 +29,10 @@ Additional information is available on the
There are different ways to contribute, each with a different level There are different ways to contribute, each with a different level
of involvement and technical knowledge required, such as: of involvement and technical knowledge required, such as:
* [Reporting Bugs](#reporting-bugs) - [Reporting Bugs](#reporting-bugs)
* [Request Features](#request-features) - [Request Features](#request-features)
* [Develop Plugins](#develop-plugins) - [Develop Plugins](#develop-plugins)
* [Improve Documentation](http://www.verdaccio.org/docs/en/installation.html) - [Improve Documentation](http://www.verdaccio.org/docs/en/installation.html)
**Please read this document carefully. It will help maintainers and readers **Please read this document carefully. It will help maintainers and readers
in solving your issue(s), evaluating your feature request, etc.** in solving your issue(s), evaluating your feature request, etc.**
@ -41,8 +41,8 @@ in solving your issue(s), evaluating your feature request, etc.**
Development guides can be found on the [wiki](https://github.com/verdaccio/verdaccio/wiki): Development guides can be found on the [wiki](https://github.com/verdaccio/verdaccio/wiki):
* [Building the project](https://github.com/verdaccio/verdaccio/wiki/Build-Source-Code) - [Building the project](https://github.com/verdaccio/verdaccio/wiki/Build-Source-Code)
* [Running, debugging, and testing](https://github.com/verdaccio/verdaccio/wiki/Running-and-Debugging-tests) - [Running, debugging, and testing](https://github.com/verdaccio/verdaccio/wiki/Running-and-Debugging-tests)
## Reporting Bugs ## Reporting Bugs
@ -89,10 +89,10 @@ the project. Then, detail your request, ensuring context and use case is provide
**Please provide:** **Please provide:**
* A detailed description the advantages of your request - A detailed description the advantages of your request
* Whether or not it's compatible with `npm` and `yarn` - Whether or not it's compatible with `npm` and `yarn`
* A potential implementation or design - A potential implementation or design
* Whatever else you have in your mind 🤓 - Whatever else you have in your mind 🤓
### Submitting a Pull Request ### Submitting a Pull Request
@ -137,8 +137,8 @@ semantic versioning.
For example: For example:
* `feat: A new feature` - `feat: A new feature`
* `fix: A bug fix` - `fix: A bug fix`
A commit of the type feat introduces a new feature to the codebase A commit of the type feat introduces a new feature to the codebase
(this correlates with MINOR in semantic versioning). (this correlates with MINOR in semantic versioning).
@ -154,7 +154,7 @@ A commit of the type fix patches a bug in your codebase (this correlates with PA
e.g.: e.g.:
``` ```
fix: xxxxxxxxxx fix: xxxxxxxxxxx
``` ```
Commits types such as as `docs:`,`style:`,`refactor:`,`perf:`,`test:` Commits types such as as `docs:`,`style:`,`refactor:`,`perf:`,`test:`
@ -174,12 +174,13 @@ If you need help with how testing works, please [refer to the following guide](h
features without tests will not be merged.** features without tests will not be merged.**
Things excluded from tests: Things excluded from tests:
* Documentation
* Website - Documentation
* Build - Website
* Deployment - Build
* Assets - Deployment
* Flow types - Assets
- Flow types
## Develop Plugins ## Develop Plugins

View file

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

View file

@ -10,7 +10,6 @@ For those looking to extend their storage capabilities, Verdaccio
**supports various community-made plugins to hook into services such as Amazon's s3, **supports various community-made plugins to hook into services such as Amazon's s3,
Google Cloud Storage** or create your own plugin. Google Cloud Storage** or create your own plugin.
[![backers](https://opencollective.com/verdaccio/tiers/backer/badge.svg?label=Backer&color=brightgreen)](https://opencollective.com/verdaccio) [![backers](https://opencollective.com/verdaccio/tiers/backer/badge.svg?label=Backer&color=brightgreen)](https://opencollective.com/verdaccio)
[![stackshare](https://img.shields.io/badge/Follow%20on-StackShare-blue.svg?logo=stackshare&style=flat)](https://stackshare.io/verdaccio) [![stackshare](https://img.shields.io/badge/Follow%20on-StackShare-blue.svg?logo=stackshare&style=flat)](https://stackshare.io/verdaccio)
[![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE) [![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
@ -20,7 +19,6 @@ Google Cloud Storage** or create your own plugin.
[![Twitter followers](https://img.shields.io/twitter/follow/verdaccio_npm.svg?style=social&label=Follow)](https://twitter.com/verdaccio_npm) [![Twitter followers](https://img.shields.io/twitter/follow/verdaccio_npm.svg?style=social&label=Follow)](https://twitter.com/verdaccio_npm)
[![Github](https://img.shields.io/github/stars/verdaccio/verdaccio.svg?style=social&label=Stars)](https://github.com/verdaccio/verdaccio/stargazers) [![Github](https://img.shields.io/github/stars/verdaccio/verdaccio.svg?style=social&label=Stars)](https://github.com/verdaccio/verdaccio/stargazers)
## Install 5.x ## Install 5.x
> ⚠️ Not available on npmjs yet > ⚠️ Not available on npmjs yet
@ -35,8 +33,8 @@ docker pull verdaccio/verdaccio:5.x-next
The `5.x` still under development, key points: The `5.x` still under development, key points:
* We use **pnpm** as monorepo management. `npm i -g pnpm@latest`. - We use **pnpm** as monorepo management. `npm i -g pnpm@latest`.
* Please check [the roadmap](https://github.com/verdaccio/verdaccio/issues/1690) if you want to contribute - Please check [the roadmap](https://github.com/verdaccio/verdaccio/issues/1690) if you want to contribute
``` ```
pnpm install pnpm install
@ -51,19 +49,16 @@ pnpm test
We are still experimenting with few things, be patience, Verdaccio v4 will run for still long period until this is getting done. We are still experimenting with few things, be patience, Verdaccio v4 will run for still long period until this is getting done.
## Donations ## Donations
Verdaccio is run by **volunteers**; nobody is working full-time on it. If you find this project to be useful and would like to support its development, consider making a donation - **your logo might end up in this readme.** 😉 Verdaccio is run by **volunteers**; nobody is working full-time on it. If you find this project to be useful and would like to support its development, consider making a donation - **your logo might end up in this readme.** 😉
**[Donate](https://opencollective.com/verdaccio)** 💵👍🏻 starting from *$1/month* or just one single contribution. **[Donate](https://opencollective.com/verdaccio)** 💵👍🏻 starting from _\$1/month_ or just one single contribution.
## Report a vulnerability ## Report a vulnerability
If you want to report a security vulnerability, please follow the steps which we have defined for you in our [security policy](https://github.com/verdaccio/verdaccio/security/policy). If you want to report a security vulnerability, please follow the steps which we have defined for you in our [security policy](https://github.com/verdaccio/verdaccio/security/policy).
## Open Collective Sponsors ## Open Collective Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio#sponsor)] Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio#sponsor)]
@ -103,15 +98,14 @@ This project exists thanks to all the people who contribute. [[Contribute](CONTR
If you have any issue you can try the following options, do no desist to ask or check our issues database, perhaps someone has asked already what you are looking for. If you have any issue you can try the following options, do no desist to ask or check our issues database, perhaps someone has asked already what you are looking for.
* [Blog](https://verdaccio.org/blog/) - [Blog](https://verdaccio.org/blog/)
* [Donations](https://opencollective.com/verdaccio) - [Donations](https://opencollective.com/verdaccio)
* [Reporting an issue](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md#reporting-a-bug) - [Reporting an issue](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md#reporting-a-bug)
* [Running discussions](https://github.com/verdaccio/verdaccio/issues?q=is%3Aissue+is%3Aopen+label%3Adiscuss) - [Running discussions](https://github.com/verdaccio/verdaccio/issues?q=is%3Aissue+is%3Aopen+label%3Adiscuss)
* [Chat](http://chat.verdaccio.org/) - [Chat](http://chat.verdaccio.org/)
* [Logos](https://verdaccio.org/docs/en/logo) - [Logos](https://verdaccio.org/docs/en/logo)
* [Docker Examples](https://github.com/verdaccio/docker-examples) - [Docker Examples](https://github.com/verdaccio/docker-examples)
* [FAQ](https://github.com/verdaccio/verdaccio/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Aquestion%20) - [FAQ](https://github.com/verdaccio/verdaccio/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Aquestion%20)
### License ### License

View file

@ -8,9 +8,7 @@ The following table describes the versions of this project that are currently su
| ------- | ------------------ | | ------- | ------------------ |
| 2.x | :x: | | 2.x | :x: |
| 3.x | :x: | | 3.x | :x: |
| 4.x | :white_check_mark: (until 1st July 2021) | | 4.x | :white_check_mark: |
| 5.x | :white_check_mark: |
## Responsible disclosure security policy ## Responsible disclosure security policy
@ -28,11 +26,11 @@ At Verdaccio, we consider the security of our systems a top priority. But no mat
If you discover a security vulnerability, please use one of the following means of communications to report it to us: If you discover a security vulnerability, please use one of the following means of communications to report it to us:
* Report the security issue to the Node.js Security WG through the [HackerOne program](https://hackerone.com/nodejs-ecosystem) for ecosystem modules on npm, or to [Snyk Security Team](https://snyk.io/vulnerability-disclosure). They will help triage the security issue and work with all involved parties to remediate and release a fix. - Report the security issue to the Node.js Security WG through the [HackerOne program](https://hackerone.com/nodejs-ecosystem) for ecosystem modules on npm, or to [Snyk Security Team](https://snyk.io/vulnerability-disclosure). They will help triage the security issue and work with all involved parties to remediate and release a fix.
Note that time-frame and processes are subject to each programs own policy. Note that time-frame and processes are subject to each programs own policy.
* Report the security issue to the project maintainers directly at verdaccio@pm.me. If the report contains highly sensitive information, please be advised to encrypt your findings using our [PGP key](https://verdaccio.nyc3.digitaloceanspaces.com/gpg/publickey.verdaccio@pm.me.asc) which is also available in this document. - Report the security issue to the project maintainers directly at verdaccio@pm.me. If the report contains highly sensitive information, please be advised to encrypt your findings using our [PGP key](https://verdaccio.nyc3.digitaloceanspaces.com/gpg/publickey.verdaccio@pm.me.asc) which is also available in this document.
Your efforts to responsibly disclose your findings are sincerely appreciated and will be taken into account to acknowledge your contributions. Your efforts to responsibly disclose your findings are sincerely appreciated and will be taken into account to acknowledge your contributions.

View file

@ -4,7 +4,7 @@ codecov:
coverage: coverage:
precision: 2 precision: 2
round: down round: down
range: "80...85" range: '80...85'
status: status:
project: project:
@ -24,6 +24,6 @@ parsers:
macro: no macro: no
comment: comment:
layout: "diff,flags,tree" layout: 'diff,flags,tree'
behavior: default behavior: default
require_changes: no require_changes: no

View file

@ -1,10 +1,7 @@
# Debuging Documentation # Debuging Documentation
## Debugging tests ## Debugging tests
### Running a single test ### Running a single test
```bash ```bash
@ -17,7 +14,7 @@ Using `--runInBand` allows you to see the `console.log` prints, without that `je
You can take advance of `debug` module used by many dependencies, eg: You can take advance of `debug` module used by many dependencies, eg:
* `supertest`: `DEBUG=superagent yarn test test/integration/package.spec.ts --runInBand` - `supertest`: `DEBUG=superagent yarn test test/integration/package.spec.ts --runInBand`
* `express`: `DEBUG=express:* yarn test test/integration/package.spec.ts --runInBand` - `express`: `DEBUG=express:* yarn test test/integration/package.spec.ts --runInBand`
* `nock`: `DEBUG=nock yarn test test/integration/package.spec.ts --runInBand` - `nock`: `DEBUG=nock yarn test test/integration/package.spec.ts --runInBand`
* All of if: `DEBUG=* yarn test test/integration/package.spec.ts --runInBand` - All of if: `DEBUG=* yarn test test/integration/package.spec.ts --runInBand`

View file

@ -38,8 +38,8 @@
"@babel/preset-typescript": "7.10.4", "@babel/preset-typescript": "7.10.4",
"@babel/register": "7.10.5", "@babel/register": "7.10.5",
"@babel/runtime": "7.10.5", "@babel/runtime": "7.10.5",
"@changesets/changelog-github": "^0.1.1", "@changesets/changelog-github": "0.1.1",
"@changesets/cli": "^2.10.1", "@changesets/cli": "2.10.1",
"@commitlint/cli": "8.3.5", "@commitlint/cli": "8.3.5",
"@commitlint/config-conventional": "8.2.0", "@commitlint/config-conventional": "8.2.0",
"@octokit/rest": "17.0.0", "@octokit/rest": "17.0.0",
@ -54,8 +54,8 @@
"@types/request": "2.48.3", "@types/request": "2.48.3",
"@types/semver": "7.2.0", "@types/semver": "7.2.0",
"@types/supertest": "2.0.9", "@types/supertest": "2.0.9",
"@typescript-eslint/eslint-plugin": "^3.10.1", "@typescript-eslint/eslint-plugin": "3.10.1",
"@typescript-eslint/parser": "^3.10.1", "@typescript-eslint/parser": "3.10.1",
"@verdaccio/types": "workspace:*", "@verdaccio/types": "workspace:*",
"@verdaccio/ui-theme": "latest", "@verdaccio/ui-theme": "latest",
"babel-core": "7.0.0-bridge.0", "babel-core": "7.0.0-bridge.0",
@ -72,10 +72,9 @@
"eslint-plugin-babel": "5.3.0", "eslint-plugin-babel": "5.3.0",
"eslint-plugin-import": "2.22.0", "eslint-plugin-import": "2.22.0",
"eslint-plugin-jest": "23.8.0", "eslint-plugin-jest": "23.8.0",
"eslint-plugin-jsx-a11y": "^6.3.1", "eslint-plugin-jsx-a11y": "6.3.1",
"eslint-plugin-prettier": "3.1.2", "eslint-plugin-react": "7.20.6",
"eslint-plugin-react": "^7.20.6", "eslint-plugin-react-hooks": "4.1.0",
"eslint-plugin-react-hooks": "^4.1.0",
"eslint-plugin-simple-import-sort": "5.0.2", "eslint-plugin-simple-import-sort": "5.0.2",
"eslint-plugin-verdaccio": "8.4.2", "eslint-plugin-verdaccio": "8.4.2",
"fs-extra": "8.1.0", "fs-extra": "8.1.0",
@ -88,13 +87,13 @@
"kleur": "3.0.3", "kleur": "3.0.3",
"lint-staged": "8.2.1", "lint-staged": "8.2.1",
"nock": "12.0.3", "nock": "12.0.3",
"npm-run-all": "^4.1.5", "npm-run-all": "4.1.5",
"prettier": "2.0.5", "prettier": "2.0.5",
"rimraf": "3.0.2", "rimraf": "3.0.2",
"selfsigned": "1.10.7", "selfsigned": "1.10.7",
"standard-version": "8.0.0", "standard-version": "8.0.0",
"supertest": "4.0.2", "supertest": "4.0.2",
"typescript": "4.0.2", "typescript": ">=3.3.1 <3.10.0",
"verdaccio": "latest", "verdaccio": "latest",
"verdaccio-audit": "latest", "verdaccio-audit": "latest",
"verdaccio-auth-memory": "latest", "verdaccio-auth-memory": "latest",
@ -107,7 +106,9 @@
"clean": "pnpm recursive run clean", "clean": "pnpm recursive run clean",
"build": "pnpm recursive run build", "build": "pnpm recursive run build",
"docker": "docker build -t verdaccio/verdaccio:local . --no-cache", "docker": "docker build -t verdaccio/verdaccio:local . --no-cache",
"lint": "eslint . --ext .js,.ts,.tsx,.jsx", "format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,yml,yaml,md}\"",
"format:check": "prettier --check \"**/*.{js,jsx,ts,tsx,json,yml,yaml,md}\"",
"lint": "eslint \"**/*.{js,jsx,ts,tsx}\"",
"test": "pnpm recursive test", "test": "pnpm recursive test",
"test:e2e:cli": "cross-env NODE_ENV=test jest --config ./test/e2e-cli/jest.config.e2e.cli.js --passWithNoTests", "test:e2e:cli": "cross-env NODE_ENV=test jest --config ./test/e2e-cli/jest.config.e2e.cli.js --passWithNoTests",
"website:lint": "cd website && yarn lint", "website:lint": "cd website && yarn lint",
@ -124,5 +125,14 @@
"extends": [ "extends": [
"@commitlint/config-conventional" "@commitlint/config-conventional"
] ]
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.{js,jsx,ts,tsx,json,yml,yaml,md}": "prettier --write",
"*.{js,jsx,ts,tsx}": "eslint --cache --fix"
} }
} }

View file

@ -1 +1 @@
? security security:

View file

@ -6,6 +6,6 @@ module.exports = function ( ) {
// we return an 500 error, the second argument must be false. // we return an 500 error, the second argument must be false.
// https://verdaccio.org/docs/en/dev-plugins#onerror // https://verdaccio.org/docs/en/dev-plugins#onerror
callback(getInternalError(), false); callback(getInternalError(), false);
} },
}; };
}; };

View file

@ -1,10 +1,9 @@
module.exports = function () { module.exports = function () {
return { return {
authenticate(user, pass, callback) { authenticate(user, pass, callback) {
/* user and pass are used here to forward errors /* user and pass are used here to forward errors
and success types respectively for testing purposes */ and success types respectively for testing purposes */
callback(user, pass); callback(user, pass);
} },
}; };
}; };

View file

@ -1,10 +1,9 @@
module.exports = function () { module.exports = function () {
return { return {
authenticate(user, pass, callback) { authenticate(user, pass, callback) {
// https://verdaccio.org/docs/en/dev-plugins#onsuccess // https://verdaccio.org/docs/en/dev-plugins#onsuccess
// this is a successful login and return a simple group // this is a successful login and return a simple group
callback(null, ['test']); callback(null, ['test']);
} },
}; };
}; };

View file

@ -2,8 +2,8 @@
This directory host the default configuration file, but you can find more here: This directory host the default configuration file, but you can find more here:
* [https://verdaccio.org/docs/en/installation](https://verdaccio.org/docs/en/installation) - [https://verdaccio.org/docs/en/installation](https://verdaccio.org/docs/en/installation)
* [Chat with us](http://chat.verdaccio.org) <- You need a Discord account - [Chat with us](http://chat.verdaccio.org) <- You need a Discord account
* [Follow us on Twitter](https://twitter.com/verdaccio_npm) - [Follow us on Twitter](https://twitter.com/verdaccio_npm)
Enjoy Verdaccio ! Enjoy Verdaccio !

View file

@ -87,7 +87,6 @@ logs:
# { type: file, path: verdaccio.log, level: http} # { type: file, path: verdaccio.log, level: http}
# FIXME: this should be documented # FIXME: this should be documented
# More info about log rotation https://github.com/pinojs/pino/blob/master/docs/help.md#log-rotation # More info about log rotation https://github.com/pinojs/pino/blob/master/docs/help.md#log-rotation
#experiments: #experiments:
# # support for npm token command # # support for npm token command
# token: false # token: false

View file

@ -11,6 +11,5 @@ commons api utilities for verdaccio
![MIT](https://img.shields.io/github/license/mashape/apistatus.svg) ![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/verdaccio/localized.svg)](https://crowdin.com/project/verdaccio) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/verdaccio/localized.svg)](https://crowdin.com/project/verdaccio)
[![Twitter followers](https://img.shields.io/twitter/follow/verdaccio_npm.svg?style=social&label=Follow)](https://twitter.com/verdaccio_npm) [![Twitter followers](https://img.shields.io/twitter/follow/verdaccio_npm.svg?style=social&label=Follow)](https://twitter.com/verdaccio_npm)
[![Github](https://img.shields.io/github/stars/verdaccio/verdaccio.svg?style=social&label=Stars)](https://github.com/verdaccio/verdaccio/stargazers) [![Github](https://img.shields.io/github/stars/verdaccio/verdaccio.svg?style=social&label=Stars)](https://github.com/verdaccio/verdaccio/stargazers)

View file

@ -17,6 +17,5 @@ This an utility to lock and unlock files
![MIT](https://img.shields.io/github/license/mashape/apistatus.svg) ![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/verdaccio/localized.svg)](https://crowdin.com/project/verdaccio) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/verdaccio/localized.svg)](https://crowdin.com/project/verdaccio)
[![Twitter followers](https://img.shields.io/twitter/follow/verdaccio_npm.svg?style=social&label=Follow)](https://twitter.com/verdaccio_npm) [![Twitter followers](https://img.shields.io/twitter/follow/verdaccio_npm.svg?style=social&label=Follow)](https://twitter.com/verdaccio_npm)
[![Github](https://img.shields.io/github/stars/verdaccio/verdaccio.svg?style=social&label=Stars)](https://github.com/verdaccio/verdaccio/stargazers) [![Github](https://img.shields.io/github/stars/verdaccio/verdaccio.svg?style=social&label=Stars)](https://github.com/verdaccio/verdaccio/stargazers)

View file

@ -1,4 +1,3 @@
[![verdaccio (latest)](https://img.shields.io/npm/v/verdaccio-htpasswd/latest.svg)](https://www.npmjs.com/package/verdaccio-htpasswd) [![verdaccio (latest)](https://img.shields.io/npm/v/verdaccio-htpasswd/latest.svg)](https://www.npmjs.com/package/verdaccio-htpasswd)
[![Known Vulnerabilities](https://snyk.io/test/github/verdaccio/verdaccio-htpasswd/badge.svg?targetFile=package.json)](https://snyk.io/test/github/verdaccio/verdaccio-htpasswd?targetFile=package.json) [![Known Vulnerabilities](https://snyk.io/test/github/verdaccio/verdaccio-htpasswd/badge.svg?targetFile=package.json)](https://snyk.io/test/github/verdaccio/verdaccio-htpasswd?targetFile=package.json)
[![CircleCI](https://circleci.com/gh/verdaccio/verdaccio-htpasswd.svg?style=svg)](https://circleci.com/gh/ayusharma/verdaccio-htpasswd) [![codecov](https://codecov.io/gh/ayusharma/verdaccio-htpasswd/branch/master/graph/badge.svg)](https://codecov.io/gh/ayusharma/verdaccio-htpasswd) [![CircleCI](https://circleci.com/gh/verdaccio/verdaccio-htpasswd.svg?style=svg)](https://circleci.com/gh/ayusharma/verdaccio-htpasswd) [![codecov](https://codecov.io/gh/ayusharma/verdaccio-htpasswd/branch/master/graph/badge.svg)](https://codecov.io/gh/ayusharma/verdaccio-htpasswd)
@ -8,7 +7,6 @@
![MIT](https://img.shields.io/github/license/mashape/apistatus.svg) ![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)
[![node](https://img.shields.io/node/v/verdaccio-htpasswd/latest.svg)](https://www.npmjs.com/package/verdaccio-htpasswd) [![node](https://img.shields.io/node/v/verdaccio-htpasswd/latest.svg)](https://www.npmjs.com/package/verdaccio-htpasswd)
# Verdaccio Module For User Auth Via Htpasswd # Verdaccio Module For User Auth Via Htpasswd
`verdaccio-htpasswd` is a default authentication plugin for the [Verdaccio](https://github.com/verdaccio/verdaccio). `verdaccio-htpasswd` is a default authentication plugin for the [Verdaccio](https://github.com/verdaccio/verdaccio).
@ -56,10 +54,12 @@ crypt method and may use MD5 or SHA1.
There are many ways to extend [Verdaccio](https://github.com/verdaccio/verdaccio), There are many ways to extend [Verdaccio](https://github.com/verdaccio/verdaccio),
currently it support authentication plugins, middleware plugins (since v2.7.0) currently it support authentication plugins, middleware plugins (since v2.7.0)
and storage plugins since (v3.x). and storage plugins since (v3.x).
#### Useful Links #### Useful Links
- [Plugin Development](http://www.verdaccio.org/docs/en/dev-plugins.html) - [Plugin Development](http://www.verdaccio.org/docs/en/dev-plugins.html)
- [List of Plugins](http://www.verdaccio.org/docs/en/plugins.html) - [List of Plugins](http://www.verdaccio.org/docs/en/plugins.html)
## License ## License
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fverdaccio%2Fverdaccio-htpasswd.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fverdaccio%2Fverdaccio-htpasswd?ref=badge_large) [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fverdaccio%2Fverdaccio-htpasswd.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fverdaccio%2Fverdaccio-htpasswd?ref=badge_large)

View file

@ -29,8 +29,8 @@ The main object that handle a JSON database the private packages.
new LocalDatabase(config, logger); new LocalDatabase(config, logger);
``` ```
* **config**: A verdaccio configuration instance. - **config**: A verdaccio configuration instance.
* **logger**: A logger instance - **logger**: A logger instance
### LocalFS ### LocalFS
@ -40,10 +40,8 @@ A class that handle an package instance in the File System
new LocalFS(packageStoragePath, logger); new LocalFS(packageStoragePath, logger);
``` ```
## License ## License
Verdaccio is [MIT licensed](https://github.com/verdaccio/local-storage/blob/master/LICENSE). Verdaccio is [MIT licensed](https://github.com/verdaccio/local-storage/blob/master/LICENSE).
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fverdaccio%2Flocal-storage.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fverdaccio%2Flocal-storage?ref=badge_large) [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fverdaccio%2Flocal-storage.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fverdaccio%2Flocal-storage?ref=badge_large)

View file

@ -18,4 +18,5 @@ npm install @verdaccio/readme
``` ```
## License ## License
Verdaccio is [MIT licensed](https://github.com/verdaccio/readme/blob/master/LICENSE). Verdaccio is [MIT licensed](https://github.com/verdaccio/readme/blob/master/LICENSE).

View file

@ -1,5 +1,5 @@
# mix html and XSS markdown # mix html and XSS markdown
[Basic](javascript:alert('Basic')) [Basic](<javascript:alert('Basic')>)
<a href="https://github.com/webpack/webpack"><img width="200" height="200" src="https://webpack.js.org/assets/icon-square-big.svg"></a> <a href="https://github.com/webpack/webpack"><img width="200" height="200" src="https://webpack.js.org/assets/icon-square-big.svg"></a>

View file

@ -193,8 +193,8 @@ describe('readme', () => {
test('should parse marked', async () => { test('should parse marked', async () => {
const readme: string = await readReadme('mixed-html-mk'); const readme: string = await readReadme('mixed-html-mk');
expect(clean(parseReadme(readme) as string)).toEqual( expect(clean(parseReadme(readme) as string)).toMatchInlineSnapshot(
`<h1 id=\"mix-html-and-xss-markdown\">mix html and XSS markdown</h1><p><a>Basic</a></p><p> <a href=\"https://github.com/webpack/webpack\"><img src=\"https://webpack.js.org/assets/icon-square-big.svg\" height=\"200\" width=\"200\"></a></p>` `"<h1 id=\\"mix-html-and-xss-markdown\\">mix html and XSS markdown</h1><p><a>Basic</a></p><p><a href=\\"https://github.com/webpack/webpack\\"><img src=\\"https://webpack.js.org/assets/icon-square-big.svg\\" height=\\"200\\" width=\\"200\\"></a></p>"`
); );
}); });
}); });

View file

@ -8,7 +8,6 @@
![MIT](https://img.shields.io/github/license/mashape/apistatus.svg) ![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)
[![node](https://img.shields.io/node/v/@verdaccio/streams/latest.svg)](https://www.npmjs.com/package/@verdaccio/streams) [![node](https://img.shields.io/node/v/@verdaccio/streams/latest.svg)](https://www.npmjs.com/package/@verdaccio/streams)
This project provides an extension of `PassThrough` stream. This project provides an extension of `PassThrough` stream.
## Detail ## Detail

View file

@ -3,6 +3,7 @@
Typescript definitions for verdaccio plugins and internal code Typescript definitions for verdaccio plugins and internal code
# Typescript # Typescript
For usage with the library, the `tsconfig.json` should looks like this. For usage with the library, the `tsconfig.json` should looks like this.
``` ```
@ -44,5 +45,3 @@ import type {ILocalData, LocalStorage, Logger, Config} from '@verdaccio/types';
... ...
} }
``` ```

View file

@ -11,10 +11,6 @@ notify:
content: '{"color":"green","message":"New package published: * {{ name }}*","notify":true,"message_format":"text"}' content: '{"color":"green","message":"New package published: * {{ name }}*","notify":true,"message_format":"text"}'
'example-stride': 'example-stride':
method: POST method: POST
headers: headers: [{ 'Content-Type': 'application/json' }, { 'authorization': 'Bearer secretToken' }]
[
{ 'Content-Type': 'application/json' },
{ 'authorization': 'Bearer secretToken' },
]
endpoint: https://api.atlassian.com/site/{cloudId}/conversation/{conversationId}/message endpoint: https://api.atlassian.com/site/{cloudId}/conversation/{conversationId}/message
content: '{"body": {"version": 1,"type": "doc","content": [{"type": "paragraph","content": [{"type": "text","text": "New package published: * {{ name }}* Publisher name: * {{ publisher.name }}"}]}]}}' content: '{"body": {"version": 1,"type": "doc","content": [{"type": "paragraph","content": [{"type": "text","text": "New package published: * {{ name }}* Publisher name: * {{ publisher.name }}"}]}]}}'

View file

@ -6,6 +6,6 @@ module.exports = function ( ) {
// we return an 500 error, the second argument must be false. // we return an 500 error, the second argument must be false.
// https://verdaccio.org/docs/en/dev-plugins#onerror // https://verdaccio.org/docs/en/dev-plugins#onerror
callback(getInternalError(), false); callback(getInternalError(), false);
} },
}; };
}; };

View file

@ -1,10 +1,9 @@
module.exports = function () { module.exports = function () {
return { return {
authenticate(user, pass, callback) { authenticate(user, pass, callback) {
/* user and pass are used here to forward errors /* user and pass are used here to forward errors
and success types respectively for testing purposes */ and success types respectively for testing purposes */
callback(user, pass); callback(user, pass);
} },
}; };
}; };

View file

@ -1,10 +1,9 @@
module.exports = function () { module.exports = function () {
return { return {
authenticate(user, pass, callback) { authenticate(user, pass, callback) {
// https://verdaccio.org/docs/en/dev-plugins#onsuccess // https://verdaccio.org/docs/en/dev-plugins#onsuccess
// this is a successful login and return a simple group // this is a successful login and return a simple group
callback(null, ['test']); callback(null, ['test']);
} },
}; };
}; };

View file

@ -2,8 +2,8 @@ function ValidVerdaccioPlugin() {
return { return {
// not valid method // not valid method
// eslint-disable-next-line @typescript-eslint/no-empty-function // eslint-disable-next-line @typescript-eslint/no-empty-function
authenticate__: function(){} authenticate__: function () {},
} };
} }
module.exports = ValidVerdaccioPlugin; module.exports = ValidVerdaccioPlugin;

View file

@ -1,16 +1,35 @@
// this is how a Babel.js transpiled plugin looks like // this is how a Babel.js transpiled plugin looks like
"use strict"; 'use strict';
Object.defineProperty(exports, "__esModule", { Object.defineProperty(exports, '__esModule', {
value: true value: true,
}); });
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) {descriptor.writable = true;} Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) {defineProperties(Constructor.prototype, protoProps);} if (staticProps) {defineProperties(Constructor, staticProps);} return Constructor; }; }(); var _createClass = (function () {
function defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ('value' in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
return function (Constructor, protoProps, staticProps) {
if (protoProps) defineProperties(Constructor.prototype, protoProps);
if (staticProps) defineProperties(Constructor, staticProps);
return Constructor;
};
})();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError('Cannot call a class as a function');
}
}
var Dummy = function () { var Dummy = (function () {
function Dummy(config, logger) { function Dummy(config, logger) {
_classCallCheck(this, Dummy); _classCallCheck(this, Dummy);
@ -19,12 +38,14 @@ var Dummy = function () {
this.data = []; this.data = [];
} }
_createClass(Dummy, [{ _createClass(Dummy, [
key: "getPackageStorage", {
value: function getPackageStorage() {} key: 'getPackageStorage',
}]); value: function getPackageStorage() {},
},
]);
return Dummy; return Dummy;
}(); })();
exports.default = Dummy; exports.default = Dummy;

View file

@ -1,8 +1,8 @@
'use strict'; 'use strict';
/* eslint-disable @typescript-eslint/no-var-requires */ /* eslint-disable @typescript-eslint/no-var-requires */
Object.defineProperty(exports, "__esModule", { Object.defineProperty(exports, '__esModule', {
value: true value: true,
}); });
exports.Dummy = undefined; exports.Dummy = undefined;
@ -10,7 +10,9 @@ var _dummy = require('./dummy');
var _dummy2 = _interopRequireDefault(_dummy); var _dummy2 = _interopRequireDefault(_dummy);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : { default: obj };
}
exports.Dummy = _dummy2.default; exports.Dummy = _dummy2.default;
exports.default = _dummy2.default; exports.default = _dummy2.default;

View file

@ -1,7 +1,7 @@
function ValidVerdaccioPlugin() { function ValidVerdaccioPlugin() {
return { return {
authenticate: function(){} authenticate: function () {},
} };
} }
module.exports = ValidVerdaccioPlugin; module.exports = ValidVerdaccioPlugin;

View file

@ -1,7 +1,13 @@
import { DOMAIN_SERVERS, PORT_SERVER_1, TARBALL } from '../constants'; import { DOMAIN_SERVERS, PORT_SERVER_1, TARBALL } from '../constants';
export default function(name, version = '0.0.0', port = PORT_SERVER_1, domain= `http://${DOMAIN_SERVERS}:${port}`, export default function (
fileName = TARBALL, readme = 'this is a readme'): any { name,
version = '0.0.0',
port = PORT_SERVER_1,
domain = `http://${DOMAIN_SERVERS}:${port}`,
fileName = TARBALL,
readme = 'this is a readme'
): any {
return { return {
name, name,
version, version,
@ -9,6 +15,6 @@ export default function(name, version = '0.0.0', port = PORT_SERVER_1, domain= `
dist: { dist: {
shasum: 'fake', shasum: 'fake',
tarball: `${domain}/${encodeURIComponent(name)}/-/${fileName}`, tarball: `${domain}/${encodeURIComponent(name)}/-/${fileName}`,
} },
}; };
} }

View file

@ -10,4 +10,3 @@ The test are structured by feature following this shape:
--- mock (storage folder) optional --- mock (storage folder) optional
--- partials (optional) --- partials (optional)
``` ```

View file

@ -14,28 +14,22 @@
"dependencies": { "dependencies": {
"test": "^1.4.0" "test": "^1.4.0"
}, },
"devDependencies": { "devDependencies": {},
},
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
"keywords": [ "keywords": [],
],
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"readme": "ERROR: No README data found!", "readme": "ERROR: No README data found!",
"_id": "npm_test@1.0.0", "_id": "npm_test@1.0.0",
"_npmVersion": "5.5.1", "_npmVersion": "5.5.1",
"_nodeVersion": "9.3.0", "_nodeVersion": "9.3.0",
"_npmUser": { "_npmUser": {},
},
"dist": { "dist": {
"integrity": "sha512-tfzM1OFjWwg2d2Wke\/DV6icjeTZUVOZYLkbf8wmONRSAgMovL\/F+zyI24OhTtWyOXd1Kbj2YUMBvLpmpAjv8zg==", "integrity": "sha512-tfzM1OFjWwg2d2Wke/DV6icjeTZUVOZYLkbf8wmONRSAgMovL/F+zyI24OhTtWyOXd1Kbj2YUMBvLpmpAjv8zg==",
"shasum": "3e4e6bd5097b295e520b947c9be3259a9509a673", "shasum": "3e4e6bd5097b295e520b947c9be3259a9509a673",
"tarball": "http:\/\/localhost:4873\/npm_test\/-\/npm_test-1.0.0.tgz" "tarball": "http://localhost:4873/npm_test/-/npm_test-1.0.0.tgz"
} }
}, },
"2.0.0": { "2.0.0": {
@ -46,41 +40,35 @@
"dependencies": { "dependencies": {
"test": "^2.4.0" "test": "^2.4.0"
}, },
"devDependencies": { "devDependencies": {},
},
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
"keywords": [ "keywords": [],
],
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"readme": "ERROR: No README data found!", "readme": "ERROR: No README data found!",
"_id": "npm_test@2.0.0", "_id": "npm_test@2.0.0",
"_npmVersion": "5.5.1", "_npmVersion": "5.5.1",
"_nodeVersion": "9.3.0", "_nodeVersion": "9.3.0",
"_npmUser": { "_npmUser": {},
},
"dist": { "dist": {
"integrity": "sha512-tzzM1OFjWwg2d2Wke\/DV6icjeTZUVOZYLkbf8wmONRSAgMovL\/F+zyI24OhTtWyOXd1Kbj2YUMBvLpmpAjv8zg==", "integrity": "sha512-tzzM1OFjWwg2d2Wke/DV6icjeTZUVOZYLkbf8wmONRSAgMovL/F+zyI24OhTtWyOXd1Kbj2YUMBvLpmpAjv8zg==",
"shasum": "3a4e6bd5097b295e520b947c9be3259a9509a673", "shasum": "3a4e6bd5097b295e520b947c9be3259a9509a673",
"tarball": "http:\/\/localhost:4873\/npm_test\/-\/npm_test-2.0.0.tgz" "tarball": "http://localhost:4873/npm_test/-/npm_test-2.0.0.tgz"
} }
} }
}, },
"readme": "ERROR: No README data found!", "readme": "ERROR: No README data found!",
"_attachments": { "_attachments": {
"npm_test-1.0.0.tgz": { "npm_test-1.0.0.tgz": {
"content_type": "application\/octet-stream", "content_type": "application/octet-stream",
"data": "H4sIAAAAAAAAE+2ST08CMRDFOe+nmPTAyawt7ELCVT149ihqmu4gI9I2bUGM4bvbbhGM4eYmxmR\/l6bvtW+mf6xUK\/mMlzaP5Ys3etAxnPNJVcE5PVHV0RPjkairsZiK0YALUU+mMOBdN3KOjQ\/SxVZ+m5PPAsfxn\/BRADAt18hmwDxpY0k+BfSBXSRni86T0ckUJS95Vhv0ypENByeLa0ntjHSDu\/iPvpZajIJWhD66qRwcC6Xlj6KsYm7U94cN2+sfe7KRS34LabuMCaiWBubsxjnjZqANJAO8RUULwmbOYDgE3FEAcSqzwvc345oUd\/\/QKnITlsadzvNKCrVv7+X27ooV++Kv36qnp6enSz4B8bhKUwAIAAA=", "data": "H4sIAAAAAAAAE+2ST08CMRDFOe+nmPTAyawt7ELCVT149ihqmu4gI9I2bUGM4bvbbhGM4eYmxmR/l6bvtW+mf6xUK/mMlzaP5Ys3etAxnPNJVcE5PVHV0RPjkairsZiK0YALUU+mMOBdN3KOjQ/SxVZ+m5PPAsfxn/BRADAt18hmwDxpY0k+BfSBXSRni86T0ckUJS95Vhv0ypENByeLa0ntjHSDu/iPvpZajIJWhD66qRwcC6Xlj6KsYm7U94cN2+sfe7KRS34LabuMCaiWBubsxjnjZqANJAO8RUULwmbOYDgE3FEAcSqzwvc345oUd//QKnITlsadzvNKCrVv7+X27ooV++Kv36qnp6enSz4B8bhKUwAIAAA=",
"length": 281 "length": 281
}, },
"npm_test-2.0.0.tgz": { "npm_test-2.0.0.tgz": {
"content_type": "application\/octet-stream", "content_type": "application/octet-stream",
"data": "H4sIAAAAAAAAE+2ST08CMRDFOe+nmPTAyawt7ELCVT149ihqmu4gI9I2bUGM4bvbbhGM4eYmxmR\/l6bvtW+mf6xUK\/mMlzaP5Ys3etAxnPNJVcE5PVHV0RPjkairsZiK0YALUU+mMOBdN3KOjQ\/SxVZ+m5PPAsfxn\/BRADAt18hmwDxpY0k+BfSBXSRni86T0ckUJS95Vhv0ypENByeLa0ntjHSDu\/iPvpZajIJWhD66qRwcC6Xlj6KsYm7U94cN2+sfe7KRS34LabuMCaiWBubsxjnjZqANJAO8RUULwmbOYDgE3FEAcSqzwvc345oUd\/\/QKnITlsadzvNKCrVv7+X27ooV++Kv36qnp6enSz4B8bhKUwAIAAA=", "data": "H4sIAAAAAAAAE+2ST08CMRDFOe+nmPTAyawt7ELCVT149ihqmu4gI9I2bUGM4bvbbhGM4eYmxmR/l6bvtW+mf6xUK/mMlzaP5Ys3etAxnPNJVcE5PVHV0RPjkairsZiK0YALUU+mMOBdN3KOjQ/SxVZ+m5PPAsfxn/BRADAt18hmwDxpY0k+BfSBXSRni86T0ckUJS95Vhv0ypENByeLa0ntjHSDu/iPvpZajIJWhD66qRwcC6Xlj6KsYm7U94cN2+sfe7KRS34LabuMCaiWBubsxjnjZqANJAO8RUULwmbOYDgE3FEAcSqzwvc345oUd//QKnITlsadzvNKCrVv7+X27ooV++Kv36qnp6enSz4B8bhKUwAIAAA=",
"length": 281 "length": 281
} }
} }

View file

@ -14,28 +14,22 @@
"dependencies": { "dependencies": {
"test": "^1.4.0" "test": "^1.4.0"
}, },
"devDependencies": { "devDependencies": {},
},
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
"keywords": [ "keywords": [],
],
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"readme": "ERROR: No README data found!", "readme": "ERROR: No README data found!",
"_id": "npm_test@1.0.0", "_id": "npm_test@1.0.0",
"_npmVersion": "5.5.1", "_npmVersion": "5.5.1",
"_nodeVersion": "9.3.0", "_nodeVersion": "9.3.0",
"_npmUser": { "_npmUser": {},
},
"dist": { "dist": {
"integrity": "sha512-tfzM1OFjWwg2d2Wke\/DV6icjeTZUVOZYLkbf8wmONRSAgMovL\/F+zyI24OhTtWyOXd1Kbj2YUMBvLpmpAjv8zg==", "integrity": "sha512-tfzM1OFjWwg2d2Wke/DV6icjeTZUVOZYLkbf8wmONRSAgMovL/F+zyI24OhTtWyOXd1Kbj2YUMBvLpmpAjv8zg==",
"shasum": "3e4e6bd5097b295e520b947c9be3259a9509a673", "shasum": "3e4e6bd5097b295e520b947c9be3259a9509a673",
"tarball": "http:\/\/localhost:4873\/npm_test\/-\/npm_test-1.0.0.tgz" "tarball": "http://localhost:4873/npm_test/-/npm_test-1.0.0.tgz"
} }
}, },
"2.0.0": { "2.0.0": {
@ -46,41 +40,35 @@
"dependencies": { "dependencies": {
"test": "^2.4.0" "test": "^2.4.0"
}, },
"devDependencies": { "devDependencies": {},
},
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
"keywords": [ "keywords": [],
],
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"readme": "ERROR: No README data found!", "readme": "ERROR: No README data found!",
"_id": "npm_test@2.0.0", "_id": "npm_test@2.0.0",
"_npmVersion": "5.5.1", "_npmVersion": "5.5.1",
"_nodeVersion": "9.3.0", "_nodeVersion": "9.3.0",
"_npmUser": { "_npmUser": {},
},
"dist": { "dist": {
"integrity": "sha512-tzzM1OFjWwg2d2Wke\/DV6icjeTZUVOZYLkbf8wmONRSAgMovL\/F+zyI24OhTtWyOXd1Kbj2YUMBvLpmpAjv8zg==", "integrity": "sha512-tzzM1OFjWwg2d2Wke/DV6icjeTZUVOZYLkbf8wmONRSAgMovL/F+zyI24OhTtWyOXd1Kbj2YUMBvLpmpAjv8zg==",
"shasum": "3a4e6bd5097b295e520b947c9be3259a9509a673", "shasum": "3a4e6bd5097b295e520b947c9be3259a9509a673",
"tarball": "http:\/\/localhost:4873\/npm_test\/-\/npm_test-2.0.0.tgz" "tarball": "http://localhost:4873/npm_test/-/npm_test-2.0.0.tgz"
} }
} }
}, },
"readme": "ERROR: No README data found!", "readme": "ERROR: No README data found!",
"_attachments": { "_attachments": {
"npm_test-1.0.0.tgz": { "npm_test-1.0.0.tgz": {
"content_type": "application\/octet-stream", "content_type": "application/octet-stream",
"data": "H4sIAAAAAAAAE+2ST08CMRDFOe+nmPTAyawt7ELCVT149ihqmu4gI9I2bUGM4bvbbhGM4eYmxmR\/l6bvtW+mf6xUK\/mMlzaP5Ys3etAxnPNJVcE5PVHV0RPjkairsZiK0YALUU+mMOBdN3KOjQ\/SxVZ+m5PPAsfxn\/BRADAt18hmwDxpY0k+BfSBXSRni86T0ckUJS95Vhv0ypENByeLa0ntjHSDu\/iPvpZajIJWhD66qRwcC6Xlj6KsYm7U94cN2+sfe7KRS34LabuMCaiWBubsxjnjZqANJAO8RUULwmbOYDgE3FEAcSqzwvc345oUd\/\/QKnITlsadzvNKCrVv7+X27ooV++Kv36qnp6enSz4B8bhKUwAIAAA=", "data": "H4sIAAAAAAAAE+2ST08CMRDFOe+nmPTAyawt7ELCVT149ihqmu4gI9I2bUGM4bvbbhGM4eYmxmR/l6bvtW+mf6xUK/mMlzaP5Ys3etAxnPNJVcE5PVHV0RPjkairsZiK0YALUU+mMOBdN3KOjQ/SxVZ+m5PPAsfxn/BRADAt18hmwDxpY0k+BfSBXSRni86T0ckUJS95Vhv0ypENByeLa0ntjHSDu/iPvpZajIJWhD66qRwcC6Xlj6KsYm7U94cN2+sfe7KRS34LabuMCaiWBubsxjnjZqANJAO8RUULwmbOYDgE3FEAcSqzwvc345oUd//QKnITlsadzvNKCrVv7+X27ooV++Kv36qnp6enSz4B8bhKUwAIAAA=",
"length": 281 "length": 281
}, },
"npm_test-2.0.0.tgz": { "npm_test-2.0.0.tgz": {
"content_type": "application\/octet-stream", "content_type": "application/octet-stream",
"data": "H4sIAAAAAAAAE+2ST08CMRDFOe+nmPTAyawt7ELCVT149ihqmu4gI9I2bUGM4bvbbhGM4eYmxmR\/l6bvtW+mf6xUK\/mMlzaP5Ys3etAxnPNJVcE5PVHV0RPjkairsZiK0YALUU+mMOBdN3KOjQ\/SxVZ+m5PPAsfxn\/BRADAt18hmwDxpY0k+BfSBXSRni86T0ckUJS95Vhv0ypENByeLa0ntjHSDu\/iPvpZajIJWhD66qRwcC6Xlj6KsYm7U94cN2+sfe7KRS34LabuMCaiWBubsxjnjZqANJAO8RUULwmbOYDgE3FEAcSqzwvc345oUd\/\/QKnITlsadzvNKCrVv7+X27ooV++Kv36qnp6enSz4B8bhKUwAIAAA=", "data": "H4sIAAAAAAAAE+2ST08CMRDFOe+nmPTAyawt7ELCVT149ihqmu4gI9I2bUGM4bvbbhGM4eYmxmR/l6bvtW+mf6xUK/mMlzaP5Ys3etAxnPNJVcE5PVHV0RPjkairsZiK0YALUU+mMOBdN3KOjQ/SxVZ+m5PPAsfxn/BRADAt18hmwDxpY0k+BfSBXSRni86T0ckUJS95Vhv0ypENByeLa0ntjHSDu/iPvpZajIJWhD66qRwcC6Xlj6KsYm7U94cN2+sfe7KRS34LabuMCaiWBubsxjnjZqANJAO8RUULwmbOYDgE3FEAcSqzwvc345oUd//QKnITlsadzvNKCrVv7+X27ooV++Kv36qnp6enSz4B8bhKUwAIAAA=",
"length": 281 "length": 281
} }
} }

View file

@ -1,53 +1,50 @@
const json = { const json = {
"_id": "forbidden-place", _id: 'forbidden-place',
"name": "forbidden-place", name: 'forbidden-place',
"description": "", description: '',
"dist-tags": { 'dist-tags': {
"latest": "1.0.6" latest: '1.0.6',
}, },
"versions": { versions: {
"1.0.6": { '1.0.6': {
"name": "forbidden-place", name: 'forbidden-place',
"version": "1.0.6", version: '1.0.6',
"description": "", description: '',
"main": "index.js", main: 'index.js',
"scripts": { scripts: {
"test": "echo \"Error: no test specified\" && exit 1" test: 'echo "Error: no test specified" && exit 1',
}, },
"keywords": [ keywords: [],
author: {
], name: 'User NPM',
"author": { email: 'user@domain.com',
"name": "User NPM",
"email": "user@domain.com"
}, },
"license": "ISC", license: 'ISC',
"dependencies": { dependencies: {
"verdaccio": "^2.7.2" verdaccio: '^2.7.2',
}, },
"readme": "# test", readme: '# test',
"readmeFilename": "README.md", readmeFilename: 'README.md',
"_id": "forbidden-place@1.0.6", _id: 'forbidden-place@1.0.6',
"_npmVersion": "5.5.1", _npmVersion: '5.5.1',
"_nodeVersion": "8.7.0", _nodeVersion: '8.7.0',
"_npmUser": { _npmUser: {},
dist: {
integrity: 'sha512-6gHiERpiDgtb3hjqpQH5/i7zRmvYi9pmCjQf2ZMy3QEa9wVk9RgdZaPWUt7ZOnWUPFjcr9cmE6dUBf+XoPoH4g==',
shasum: '2c03764f651a9f016ca0b7620421457b619151b9',
tarball: 'http://localhost:5555/forbidden-place/-/forbidden-place-1.0.6.tgz',
}, },
"dist": {
"integrity": "sha512-6gHiERpiDgtb3hjqpQH5\/i7zRmvYi9pmCjQf2ZMy3QEa9wVk9RgdZaPWUt7ZOnWUPFjcr9cmE6dUBf+XoPoH4g==",
"shasum": "2c03764f651a9f016ca0b7620421457b619151b9",
"tarball": "http:\/\/localhost:5555\/forbidden-place\/-\/forbidden-place-1.0.6.tgz"
}
}
}, },
"readme": "# test", },
"_attachments": { readme: '# test',
"forbidden-place-1.0.6.tgz": { _attachments: {
"content_type": "application\/octet-stream", 'forbidden-place-1.0.6.tgz': {
"data": "H4sIAAAAAAAAE+2W32vbMBDH85y\/QnjQp9qxLEeBMsbGlocNBmN7bFdQ5WuqxJaEpGQdo\/\/79KPeQsnIw5KUDX\/9IOvurLuz\/DHSjK\/YAiY6jcXSKjk6sMqypHWNdtmD6hlBI0wqQmo8nVbVqMR4OsNoVB66kF1aW8eML+Vv10m9oF\/jP6IfY4QyyTrILlD2eqkcm+gVzpdrJrPz4NuAsULJ4MZFWdBkbcByI7R79CRjx0ScCdnAvf+SkjUFWu8IubzBgXUhDPidQlfZ3BhlLpBUKDiQ1cDFrYDmKkNnZwjuhUM4808+xNVW8P2bMk1Y7vJrtLC1u1MmLPjBF40+Cc4ahV6GDmI\/DWygVRpMwVX3KtXUCg7Sxp7ff3nbt6TBFy65gK1iffsN41yoEHtdFbOiisWMH8bPvXUH0SP3k+KG3UBr+DFy7OGfEJr4x5iWVeS\/pLQe+D+FIv\/agIWI6GX66kFuIhT+1gDjrp\/4d7WAvAwEJPh0u14IufWkM0zaW2W6nLfM2lybgJ4LTJ0\/jWiAK8OcMjt8MW3OlfQppcuhhQ6k+2OgkK2Q8DssFPi\/IHpU9fz3\/+xj5NjDf8QFE39VmE4JDfzPCBn4P4X6\/f88f\/Pu47zomiPk2Lv\/dOv8h+P\/34\/D\/p9CL+Kp67mrGDRo0KBBp9ZPsETQegASAAA=", content_type: 'application/octet-stream',
"length": 512 data:
} 'H4sIAAAAAAAAE+2W32vbMBDH85y/QnjQp9qxLEeBMsbGlocNBmN7bFdQ5WuqxJaEpGQdo//79KPeQsnIw5KUDX/9IOvurLuz/DHSjK/YAiY6jcXSKjk6sMqypHWNdtmD6hlBI0wqQmo8nVbVqMR4OsNoVB66kF1aW8eML+Vv10m9oF/jP6IfY4QyyTrILlD2eqkcm+gVzpdrJrPz4NuAsULJ4MZFWdBkbcByI7R79CRjx0ScCdnAvf+SkjUFWu8IubzBgXUhDPidQlfZ3BhlLpBUKDiQ1cDFrYDmKkNnZwjuhUM4808+xNVW8P2bMk1Y7vJrtLC1u1MmLPjBF40+Cc4ahV6GDmI/DWygVRpMwVX3KtXUCg7Sxp7ff3nbt6TBFy65gK1iffsN41yoEHtdFbOiisWMH8bPvXUH0SP3k+KG3UBr+DFy7OGfEJr4x5iWVeS/pLQe+D+FIv/agIWI6GX66kFuIhT+1gDjrp/4d7WAvAwEJPh0u14IufWkM0zaW2W6nLfM2lybgJ4LTJ0/jWiAK8OcMjt8MW3OlfQppcuhhQ6k+2OgkK2Q8DssFPi/IHpU9fz3/+xj5NjDf8QFE39VmE4JDfzPCBn4P4X6/f88f/Pu47zomiPk2Lv/dOv8h+P/34/D/p9CL+Kp67mrGDRo0KBBp9ZPsETQegASAAA=',
} length: 512,
} },
},
};
module.exports = json; module.exports = json;

View file

@ -1,54 +1,50 @@
const json = { const json = {
"_id": "@scope\/pk1-test", _id: '@scope/pk1-test',
"name": "@scope\/pk1-test", name: '@scope/pk1-test',
"description": "", description: '',
"dist-tags": { 'dist-tags': {
"latest": "1.0.6" latest: '1.0.6',
}, },
"versions": { versions: {
"1.0.6": { '1.0.6': {
"name": "@scope\/pk1-test", name: '@scope/pk1-test',
"version": "1.0.6", version: '1.0.6',
"description": "", description: '',
"main": "index.js", main: 'index.js',
"scripts": { scripts: {
"test": "echo \"Error: no test specified\" && exit 1" test: 'echo "Error: no test specified" && exit 1',
}, },
"keywords": [ keywords: [],
author: {
], name: 'User NPM',
"author": { email: 'user@domain.com',
"name": "User NPM",
"email": "user@domain.com"
}, },
"license": "ISC", license: 'ISC',
"dependencies": { dependencies: {
"verdaccio": "^2.7.2" verdaccio: '^2.7.2',
}, },
"readme": "# test", readme: '# test',
"readmeFilename": "README.md", readmeFilename: 'README.md',
"_id": "@scope\/pk1-test@1.0.6", _id: '@scope/pk1-test@1.0.6',
"_npmVersion": "5.5.1", _npmVersion: '5.5.1',
"_nodeVersion": "8.7.0", _nodeVersion: '8.7.0',
"_npmUser": { _npmUser: {},
dist: {
integrity: 'sha512-6gHiERpiDgtb3hjqpQH5/i7zRmvYi9pmCjQf2ZMy3QEa9wVk9RgdZaPWUt7ZOnWUPFjcr9cmE6dUBf+XoPoH4g==',
shasum: '2c03764f651a9f016ca0b7620421457b619151b9',
tarball: 'http://localhost:5555/@scope/pk1-test/-/@scope/pk1-test-1.0.6.tgz',
}, },
"dist": {
"integrity": "sha512-6gHiERpiDgtb3hjqpQH5\/i7zRmvYi9pmCjQf2ZMy3QEa9wVk9RgdZaPWUt7ZOnWUPFjcr9cmE6dUBf+XoPoH4g==",
"shasum": "2c03764f651a9f016ca0b7620421457b619151b9",
"tarball": "http:\/\/localhost:5555\/@scope\/pk1-test\/-\/@scope\/pk1-test-1.0.6.tgz"
}
}
}, },
"readme": "# test", },
"_attachments": { readme: '# test',
"@scope\/pk1-test-1.0.6.tgz": { _attachments: {
"content_type": "application\/octet-stream", '@scope/pk1-test-1.0.6.tgz': {
// eslint-disable-next-line max-len content_type: 'application/octet-stream',
"data": "H4sIAAAAAAAAE+2W32vbMBDH85y\/QnjQp9qxLEeBMsbGlocNBmN7bFdQ5WuqxJaEpGQdo\/\/79KPeQsnIw5KUDX\/9IOvurLuz\/DHSjK\/YAiY6jcXSKjk6sMqypHWNdtmD6hlBI0wqQmo8nVbVqMR4OsNoVB66kF1aW8eML+Vv10m9oF\/jP6IfY4QyyTrILlD2eqkcm+gVzpdrJrPz4NuAsULJ4MZFWdBkbcByI7R79CRjx0ScCdnAvf+SkjUFWu8IubzBgXUhDPidQlfZ3BhlLpBUKDiQ1cDFrYDmKkNnZwjuhUM4808+xNVW8P2bMk1Y7vJrtLC1u1MmLPjBF40+Cc4ahV6GDmI\/DWygVRpMwVX3KtXUCg7Sxp7ff3nbt6TBFy65gK1iffsN41yoEHtdFbOiisWMH8bPvXUH0SP3k+KG3UBr+DFy7OGfEJr4x5iWVeS\/pLQe+D+FIv\/agIWI6GX66kFuIhT+1gDjrp\/4d7WAvAwEJPh0u14IufWkM0zaW2W6nLfM2lybgJ4LTJ0\/jWiAK8OcMjt8MW3OlfQppcuhhQ6k+2OgkK2Q8DssFPi\/IHpU9fz3\/+xj5NjDf8QFE39VmE4JDfzPCBn4P4X6\/f88f\/Pu47zomiPk2Lv\/dOv8h+P\/34\/D\/p9CL+Kp67mrGDRo0KBBp9ZPsETQegASAAA=", data:
"length": 512 'H4sIAAAAAAAAE+2W32vbMBDH85y/QnjQp9qxLEeBMsbGlocNBmN7bFdQ5WuqxJaEpGQdo//79KPeQsnIw5KUDX/9IOvurLuz/DHSjK/YAiY6jcXSKjk6sMqypHWNdtmD6hlBI0wqQmo8nVbVqMR4OsNoVB66kF1aW8eML+Vv10m9oF/jP6IfY4QyyTrILlD2eqkcm+gVzpdrJrPz4NuAsULJ4MZFWdBkbcByI7R79CRjx0ScCdnAvf+SkjUFWu8IubzBgXUhDPidQlfZ3BhlLpBUKDiQ1cDFrYDmKkNnZwjuhUM4808+xNVW8P2bMk1Y7vJrtLC1u1MmLPjBF40+Cc4ahV6GDmI/DWygVRpMwVX3KtXUCg7Sxp7ff3nbt6TBFy65gK1iffsN41yoEHtdFbOiisWMH8bPvXUH0SP3k+KG3UBr+DFy7OGfEJr4x5iWVeS/pLQe+D+FIv/agIWI6GX66kFuIhT+1gDjrp/4d7WAvAwEJPh0u14IufWkM0zaW2W6nLfM2lybgJ4LTJ0/jWiAK8OcMjt8MW3OlfQppcuhhQ6k+2OgkK2Q8DssFPi/IHpU9fz3/+xj5NjDf8QFE39VmE4JDfzPCBn4P4X6/f88f/Pu47zomiPk2Lv/dOv8h+P/34/D/p9CL+Kp67mrGDRo0KBBp9ZPsETQegASAAA=',
} length: 512,
} },
} },
};
module.exports = json; module.exports = json;

View file

@ -5,4 +5,4 @@ function readFile(filePath) {
return fs.readFileSync(path.join(__dirname, `/${filePath}`)); return fs.readFileSync(path.join(__dirname, `/${filePath}`));
} }
export { readFile } export { readFile };

View file

@ -1,15 +1,15 @@
module.exports = { storage: './storage_default_storage', module.exports = {
storage: './storage_default_storage',
uplinks: { npmjs: { url: 'http://localhost:4873/' } }, uplinks: { npmjs: { url: 'http://localhost:4873/' } },
packages: packages: {
{ '@*/*': { access: '$all', publish: '$all', proxy: 'npmjs' }, '@*/*': { access: '$all', publish: '$all', proxy: 'npmjs' },
'forbidden-place': { access: 'nobody', publish: '$all' }, 'forbidden-place': { access: 'nobody', publish: '$all' },
react: { access: '$all', publish: '$all', proxy: 'npmjs' }, react: { access: '$all', publish: '$all', proxy: 'npmjs' },
'corrupted-package': { access: '$all', publish: '$all', proxy: 'npmjs' }, 'corrupted-package': { access: '$all', publish: '$all', proxy: 'npmjs' },
jquery: { access: '$all', publish: '$all', proxy: 'npmjs' }, jquery: { access: '$all', publish: '$all', proxy: 'npmjs' },
'auth-package': { access: '$authenticated', publish: '$authenticated' }, 'auth-package': { access: '$authenticated', publish: '$authenticated' },
vue: vue: { access: '$authenticated', publish: '$authenticated', proxy: 'npmjs' },
{ access: '$authenticated', '*': { access: '$all', publish: '$all', proxy: 'npmjs' },
publish: '$authenticated', },
proxy: 'npmjs' }, logs: [{ type: 'stdout', format: 'pretty', level: 'warn' }],
'*': { access: '$all', publish: '$all', proxy: 'npmjs' } }, };
logs: [ { type: 'stdout', format: 'pretty', level: 'warn' } ] };

View file

@ -1,6 +1,6 @@
# JSON Configurations # JSON Configurations
This folder host all sort of JSON configurations for testing. **It should not include many scenarios, since we use `yaml` for testing. JSON files on this folder aims to verify a verdaccio JSON config file works properly. This folder host all sort of JSON configurations for testing. \*\*It should not include many scenarios, since we use `yaml` for testing. JSON files on this folder aims to verify a verdaccio JSON config file works properly.
## Contribute ## Contribute

View file

@ -58,9 +58,9 @@ Add additional notes about how to deploy this on a live system
## Built With ## Built With
* The web framework used - The web framework used
* Dependency Management - Dependency Management
* Used to generate RSS Feeds - Used to generate RSS Feeds
## Contributing ## Contributing
@ -76,6 +76,6 @@ This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md
## Acknowledgments ## Acknowledgments
* Hat tip to anyone whose code was used - Hat tip to anyone whose code was used
* Inspiration - Inspiration
* etc - etc

View file

@ -8,15 +8,15 @@ First of all, we should explain the testing frameworks being used. We use `jest`
We go along with the following rules in order to be consistent with all tests which will make your code review smooth and fast: We go along with the following rules in order to be consistent with all tests which will make your code review smooth and fast:
* We **type** all our tests. eg `const foo: number = 3;` - We **type** all our tests. eg `const foo: number = 3;`
* **Each test should be as small as possible**: You should use the `test()` block to test only one thing and do not depend on other tests. If the test requires different steps, group them with a `describe()` block. - **Each test should be as small as possible**: You should use the `test()` block to test only one thing and do not depend on other tests. If the test requires different steps, group them with a `describe()` block.
* All `test()` **headers titles** should begin with `test('should test ...')`: For consistency with reporting tools, this makes it easier to match the test with the feature needed to be tested. - All `test()` **headers titles** should begin with `test('should test ...')`: For consistency with reporting tools, this makes it easier to match the test with the feature needed to be tested.
* **Any mock data** should be located in the `partials` folder in each section. - **Any mock data** should be located in the `partials` folder in each section.
* Use `yaml` for **configuration files examples** instead of JSON. - Use `yaml` for **configuration files examples** instead of JSON.
* If you use a **file based mock storage**, it should be located in the `store` folder in each section. - If you use a **file based mock storage**, it should be located in the `store` folder in each section.
* All tests **MUST NOT** rely on external sources and must be able to run them **offline**. - All tests **MUST NOT** rely on external sources and must be able to run them **offline**.
* Tests **must run on the following Operating Systems**: Unix (Mac, Linux) and Windows (7 -> latest). - Tests **must run on the following Operating Systems**: Unix (Mac, Linux) and Windows (7 -> latest).
* If you are creating mock data file which use the state and need a clean state, use `rimraf` to remove folders. - If you are creating mock data file which use the state and need a clean state, use `rimraf` to remove folders.
## Testing sections ## Testing sections
@ -24,11 +24,11 @@ Verdaccio testing is split in 3 sections, each of them has different setup and s
If you are adding new tests, comply with the following: If you are adding new tests, comply with the following:
* If you add a new API endpoint, unit and functional tests are mandatory. - If you add a new API endpoint, unit and functional tests are mandatory.
* If you add a utility, unit test is mandatory. - If you add a utility, unit test is mandatory.
* If you are adding a new web API endpoint, the unit test, functional test and if such endpoint has new changes in the UI, E2E test is also mandatory. - If you are adding a new web API endpoint, the unit test, functional test and if such endpoint has new changes in the UI, E2E test is also mandatory.
* If you add or refactor a core class, unit test is mandatory. - If you add or refactor a core class, unit test is mandatory.
* If you fix a bug, you **must** add a new `test()` block to prove that the patch fixes the bug. - If you fix a bug, you **must** add a new `test()` block to prove that the patch fixes the bug.
## Unit test ## Unit test
@ -44,10 +44,10 @@ We have prepared a template at `test/unit/api/api.__test.template.spec.ts` that
We recommend the following approach when you create a unit test: We recommend the following approach when you create a unit test:
* For new utilities, we recommend creating a new spec. - For new utilities, we recommend creating a new spec.
* For existing utilities, if the method is already being tested, just add a new `test()` block. - For existing utilities, if the method is already being tested, just add a new `test()` block.
* Notice that all API spec files are appended with `api.[feature].spec.js`, we recommend to follow the same approach. eg: `api.[deprecate].spec.js`. - Notice that all API spec files are appended with `api.[feature].spec.js`, we recommend to follow the same approach. eg: `api.[deprecate].spec.js`.
* Don't mix utilities with API tests. - Don't mix utilities with API tests.
### How the mockServer works? ### How the mockServer works?
@ -56,29 +56,30 @@ Each `[xxx].spec.ts` file usually triggers a `mockServer` on in the`beforeAll` p
Let's analyze the following example: Let's analyze the following example:
```js ```js
const configForTest = configDefault({ const configForTest = configDefault(
{
auth: { auth: {
htpasswd: { htpasswd: {
file: './test-storage-api-spec/.htpasswd' file: './test-storage-api-spec/.htpasswd',
} },
}, },
filters: { filters: {
'../../modules/api/partials/plugin/filter': { '../../modules/api/partials/plugin/filter': {
pkg: 'npm_test', pkg: 'npm_test',
version: '2.0.0' version: '2.0.0',
} },
}, },
storage: store, storage: store,
self_path: store, self_path: store,
uplinks: { uplinks: {
npmjs: { npmjs: {
url: `http://${DOMAIN_SERVERS}:${mockServerPort}` url: `http://${DOMAIN_SERVERS}:${mockServerPort}`,
}
}, },
logs: [ },
{ type: 'stdout', format: 'pretty', level: 'trace' } logs: [{ type: 'stdout', format: 'pretty', level: 'trace' }],
] },
}, 'api.spec.yaml'); 'api.spec.yaml'
);
app = await endPointAPI(configForTest); app = await endPointAPI(configForTest);
mockRegistry = await mockServer(mockServerPort).init(); mockRegistry = await mockServer(mockServerPort).init();
@ -86,8 +87,8 @@ const configForTest = configDefault({
The `configDefault({}, 'myConfig.yaml)` function is a method that returns a configuration file that will be the config used for your test. The `configDefault({}, 'myConfig.yaml)` function is a method that returns a configuration file that will be the config used for your test.
* The *first argument* allows you to override/extend the default configuration located `/test/unit/partials/config/yaml/default.yaml`. - The _first argument_ allows you to override/extend the default configuration located `/test/unit/partials/config/yaml/default.yaml`.
* The *second argument*s is being used to override the base configuration file, you only need to set the name `api.spec.yaml` you are willing to use, the relative location will be `test/unit/partials/config/yaml/` and will be prefixed on runtime. - The *second argument*s is being used to override the base configuration file, you only need to set the name `api.spec.yaml` you are willing to use, the relative location will be `test/unit/partials/config/yaml/` and will be prefixed on runtime.
> **The generated object will be used for run your test, not for mock the mock server.** > **The generated object will be used for run your test, not for mock the mock server.**
@ -118,7 +119,7 @@ In the previous example, we are fetching `jquery` metadata from our server, we c
The `mockRegistry = await mockServer(mockServerPort).init();` mock registry will be used as `uplink` for the `app` object described above, **this is optional**, but, the most of the tests are using this approach for increase the number of tested scenarios. The `mockRegistry = await mockServer(mockServerPort).init();` mock registry will be used as `uplink` for the `app` object described above, **this is optional**, but, the most of the tests are using this approach for increase the number of tested scenarios.
The *mock server* has a static storage which is located `test/unit/partials/mock-store`, if you need add new packages, those must be commited in such folder. **Any modification in the mock server might affect other test, since is a shared context**. The _mock server_ has a static storage which is located `test/unit/partials/mock-store`, if you need add new packages, those must be commited in such folder. **Any modification in the mock server might affect other test, since is a shared context**.
> It is not possible yet to override the mocks configuration server. > It is not possible yet to override the mocks configuration server.
@ -127,7 +128,6 @@ The *mock server* has a static storage which is located `test/unit/partials/mock
> The `const mockServerPort = 55549;` mock server must be added manually, be careful and try to define a port that is not being used by another test, there is not automation here yet. > The `const mockServerPort = 55549;` mock server must be added manually, be careful and try to define a port that is not being used by another test, there is not automation here yet.
> To increase debugging you might override the `logs` property using `{ type: 'stdout', format: 'pretty', level: 'trace' }` level **trace**, thus the test will display the server request in your terminal, try to keep it in **warn** by default to avoid noise on run all your test. > To increase debugging you might override the `logs` property using `{ type: 'stdout', format: 'pretty', level: 'trace' }` level **trace**, thus the test will display the server request in your terminal, try to keep it in **warn** by default to avoid noise on run all your test.
>
#### Running a single Unit Test #### Running a single Unit Test
@ -137,7 +137,7 @@ To run a single test, use the following command:
yarn jest test/unit/modules/api/api.spec.ts --coverage=false yarn jest test/unit/modules/api/api.spec.ts --coverage=false
``` ```
You might use the *jest* feature `.only` to limit the test suites you want to run, for instance. You might use the _jest_ feature `.only` to limit the test suites you want to run, for instance.
```js ```js
describe.only('should test package api', () => { describe.only('should test package api', () => {
@ -199,6 +199,7 @@ Ran all test suites matching /test\/unit\/modules\/api\/api.spec.ts/i.
debug-=- updating package jquery info debug-=- updating package jquery info
http <-- 200, user: null(::ffff:127.0.0.1), req: 'GET /jquery', bytes: 0/10300 http <-- 200, user: null(::ffff:127.0.0.1), req: 'GET /jquery', bytes: 0/10300
``` ```
The debug display request headers and other handy information about what is happening between your test and the mock server. The debug display request headers and other handy information about what is happening between your test and the mock server.
## Functional tests ## Functional tests
@ -213,37 +214,33 @@ The jest configuration file is defined in `test/jest.config.functional.js`. The
The servers are linked as follows: The servers are linked as follows:
* Server 1 - Server 1
* -> Server 2 - -> Server 2
* -> Server 3 - -> Server 3
* Server 2 - Server 2
* -> Server 1 - -> Server 1
* Server 3 - Server 3
* -> Server 2 - -> Server 2
* -> Server 1 - -> Server 1
* Express app: (if you need to emulate any external endpoint, use the express app) - Express app: (if you need to emulate any external endpoint, use the express app)
Server 1 runs on port `55551`, Server 2 on port `55552` and Server 3 on port `55553`. Server 1 runs on port `55551`, Server 2 on port `55552` and Server 3 on port `55553`.
> If you have the need to increase the number of servers running, it is possible, but please discuss with the team before you go in that path. > If you have the need to increase the number of servers running, it is possible, but please discuss with the team before you go in that path.
#### Adding a new block #### Adding a new block
To add a new feature you need to export the feature as a function that take as an argument any of the servers you want to interact. To add a new feature you need to export the feature as a function that take as an argument any of the servers you want to interact.
```js ```js
// newFeature.ts // newFeature.ts
export default function (server) { export default function (server) {
describe('package access control', () => { describe('package access control', () => {
test('should ...', (done) => { test('should ...', (done) => {
done(); done();
}); });
}); });
} }
``` ```
@ -294,7 +291,6 @@ We recommend run your tests and linters before commit.
yarn lint && yarn test:all yarn lint && yarn test:all
``` ```
You can find more in our [guide about run and debugging test](https://github.com/verdaccio/verdaccio/wiki/Running-and-Debugging-tests#running-the-test). You can find more in our [guide about run and debugging test](https://github.com/verdaccio/verdaccio/wiki/Running-and-Debugging-tests#running-the-test).
## Continuous Integration ## Continuous Integration
@ -303,8 +299,3 @@ Verdaccio uses [CircleCI](https://circleci.com/gh/verdaccio) as its primary Cont
Node.js versions available, LTS and the latest release. Before the PR is being merged, all check must be green. Node.js versions available, LTS and the latest release. Before the PR is being merged, all check must be green.
> You need a CircleCI account to be able see the test running > You need a CircleCI account to be able see the test running

View file

@ -7,12 +7,11 @@ function Plugin(config, pluginOptions) {
} }
Plugin.prototype.register_middlewares = function (app) { Plugin.prototype.register_middlewares = function (app) {
const { message } = this._config; const { message } = this._config;
app.get('/test/route', function (req, res, next) { app.get('/test/route', function (req, res, next) {
res.status(200); res.status(200);
return next({ ok: message }) return next({ ok: message });
}); });
}; };

View file

@ -29,28 +29,24 @@
'use strict'; 'use strict';
Object.defineProperty(exports, "__esModule", { Object.defineProperty(exports, '__esModule', {
value: true value: true,
}); });
class PluginES6 { class PluginES6 {
constructor(config, stuff) { constructor(config, stuff) {
this._config = config; this._config = config;
this._logger = stuff.logger; this._logger = stuff.logger;
} }
register_middlewares(app, /* auth, storage */) { register_middlewares(app /* auth, storage */) {
const message = this._config.message; const message = this._config.message;
app.get('/test/route/es6', function (req, res, next) { app.get('/test/route/es6', function (req, res, next) {
res.status(200); res.status(200);
return next({ ok: message }); return next({ ok: message });
}); });
} }
} }
exports.default = PluginES6; exports.default = PluginES6;

View file

@ -8,7 +8,6 @@ function Plugin(config) {
} }
Plugin.prototype.register_middlewares = function (app) { Plugin.prototype.register_middlewares = function (app) {
app.get('/test-uplink-timeout-*', function (req, res, next) { app.get('/test-uplink-timeout-*', function (req, res, next) {
// https://github.com/nock/nock#readme // https://github.com/nock/nock#readme
nock('http://localhost:55552') nock('http://localhost:55552')
@ -21,7 +20,6 @@ Plugin.prototype.register_middlewares = function (app) {
next(); next();
}); });
}; };
module.exports = Plugin; module.exports = Plugin;

View file

@ -1,13 +1,13 @@
{ {
"_id": "@test\/scoped", "_id": "@test/scoped",
"name": "@test\/scoped", "name": "@test/scoped",
"description": "test... test... test...", "description": "test... test... test...",
"dist-tags": { "dist-tags": {
"latest": "1.0.0" "latest": "1.0.0"
}, },
"versions": { "versions": {
"1.0.0": { "1.0.0": {
"name": "@test\/scoped", "name": "@test/scoped",
"version": "1.0.0", "version": "1.0.0",
"description": "test... test... test...", "description": "test... test... test...",
"main": "index.js", "main": "index.js",
@ -17,25 +17,23 @@
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"readme": "ERROR: No README data found!", "readme": "ERROR: No README data found!",
"_id": "@test\/scoped@1.0.0", "_id": "@test/scoped@1.0.0",
"_shasum": "6e67b14e2c0e450b942e2bc8086b49e90f594790", "_shasum": "6e67b14e2c0e450b942e2bc8086b49e90f594790",
"_from": ".", "_from": ".",
"_npmVersion": "2.0.1", "_npmVersion": "2.0.1",
"_nodeVersion": "0.10.25", "_nodeVersion": "0.10.25",
"_npmUser": { "_npmUser": {},
},
"dist": { "dist": {
"shasum": "6e67b14e2c0e450b942e2bc8086b49e90f594790", "shasum": "6e67b14e2c0e450b942e2bc8086b49e90f594790",
"tarball": "http:\/\/localhost:4873\/@test\/scoped\/-\/@test\/scoped-1.0.0.tgz" "tarball": "http://localhost:4873/@test/scoped/-/@test/scoped-1.0.0.tgz"
} }
} }
}, },
"readme": "ERROR: No README data found!", "readme": "ERROR: No README data found!",
"_attachments": { "_attachments": {
"@test\/scoped-1.0.0.tgz": { "@test/scoped-1.0.0.tgz": {
"content_type": "application\/octet-stream", "content_type": "application/octet-stream",
"data": "H4sIAAAAAAAAAytITM5OTE\/VL4DQelnF+XkMVAYGBgZmZiYKQNrQ3NQAmQYDYwMg29DIxMTY2Mzc1NSYwcDQ2MDIDChPbYdgA6XFJYlFQKdQag7ELwpweoiAaqW8xNxUJSslh5LU4hL94uT8gtQUJR2lstSi4sz8PKCEoZ6BngFQJCW1OLkos6AEIgpSraenp4BGA9XlJmaCFGTmpaRWAJMTUASir1jJqhqsDSiZmpyRrxCj5FpUlF9kpZCXD9auUFyQmpyZlpmaEqOkoKamkFqRWaJgqFSro5RYWpKRXwTUBzQsJzM5Na8Y5GLPYGel2oEOv6EOCtDyf2Vibg617SCQ\/41MzZHyv+Fo\/qcnAOV+KwXU3M8FzfxWCuC8z4WU863QMzyM5gJleysFWK7nguZ5Ky4FsAqgFaTkeS5IjgfqUuKCZngrBWB+5xro4Bp2AJb\/QZGhC4l\/XXCs65WkV1HJDgL539QAOf8bmwHzv4khWD2V7McLRnj+l+\/mgDCY307enXXYQKTN+LUmn5QRq\/u+5mVOLy\/szBZTXN1764bRpKAgp3t7j08XuS7itTLT4+P+P49iligvXC\/2ydVmZendyg9vfLbOiOjZqOPNYHsm2OxLmOHhUglVT5n0Sql0brFjOqcM7b8qxGe+37PB4lT+95fvmOTrVK0ueU3pKqp6PPVztrrvWq5di9afssrV8mlh5JZw43q65OrW94t8SwVYDIrWaLfmcZWErmCuU+8pqe37lHy7zVN1O5vZl3NRyZYhy3LZw7VXym\/VMhOZ5h3A\/lZxyXJR0er9pmK\/CzbPnbaq6OyR7\/zbv5S8\/L677Kryv\/suO2f\/6sn\/0X+p5kC9RPmfdOP\/9Qvb6vjmv1S3\/SMT9e1kQ40d2783Sw7OOzyz6pLxec4tohVH\/Geoy3684erJb8P+ZG7Mr51pZ2eZvr7\/QpbVdU4yA8\/ARuEoGAWjYBSQBQDM0BedABAAAA==", "data": "H4sIAAAAAAAAAytITM5OTE/VL4DQelnF+XkMVAYGBgZmZiYKQNrQ3NQAmQYDYwMg29DIxMTY2Mzc1NSYwcDQ2MDIDChPbYdgA6XFJYlFQKdQag7ELwpweoiAaqW8xNxUJSslh5LU4hL94uT8gtQUJR2lstSi4sz8PKCEoZ6BngFQJCW1OLkos6AEIgpSraenp4BGA9XlJmaCFGTmpaRWAJMTUASir1jJqhqsDSiZmpyRrxCj5FpUlF9kpZCXD9auUFyQmpyZlpmaEqOkoKamkFqRWaJgqFSro5RYWpKRXwTUBzQsJzM5Na8Y5GLPYGel2oEOv6EOCtDyf2Vibg617SCQ/41MzZHyv+Fo/qcnAOV+KwXU3M8FzfxWCuC8z4WU863QMzyM5gJleysFWK7nguZ5Ky4FsAqgFaTkeS5IjgfqUuKCZngrBWB+5xro4Bp2AJb/QZGhC4l/XXCs65WkV1HJDgL539QAOf8bmwHzv4khWD2V7McLRnj+l+/mgDCY307enXXYQKTN+LUmn5QRq/u+5mVOLy/szBZTXN1764bRpKAgp3t7j08XuS7itTLT4+P+P49iligvXC/2ydVmZendyg9vfLbOiOjZqOPNYHsm2OxLmOHhUglVT5n0Sql0brFjOqcM7b8qxGe+37PB4lT+95fvmOTrVK0ueU3pKqp6PPVztrrvWq5di9afssrV8mlh5JZw43q65OrW94t8SwVYDIrWaLfmcZWErmCuU+8pqe37lHy7zVN1O5vZl3NRyZYhy3LZw7VXym/VMhOZ5h3A/lZxyXJR0er9pmK/CzbPnbaq6OyR7/zbv5S8/L677Kryv/suO2f/6sn/0X+p5kC9RPmfdOP/9Qvb6vjmv1S3/SMT9e1kQ40d2783Sw7OOzyz6pLxec4tohVH/Geoy3684erJb8P+ZG7Mr51pZ2eZvr7/QpbVdU4yA8/ARuEoGAWjYBSQBQDM0BedABAAAA==",
"length": 736 "length": 736
} }
} }

View file

@ -24,7 +24,7 @@
"_id": "test-readme@0.0.0", "_id": "test-readme@0.0.0",
"dist": { "dist": {
"shasum": "8ee7331cbc641581b1a8cecd9d38d744a8feb863", "shasum": "8ee7331cbc641581b1a8cecd9d38d744a8feb863",
"tarball": "http:\/\/localhost:1234\/test-readme\/-\/test-readme-0.0.0.tgz" "tarball": "http://localhost:1234/test-readme/-/test-readme-0.0.0.tgz"
}, },
"_from": ".", "_from": ".",
"_npmVersion": "1.3.1", "_npmVersion": "1.3.1",
@ -48,8 +48,8 @@
], ],
"_attachments": { "_attachments": {
"test-readme-0.0.0.tgz": { "test-readme-0.0.0.tgz": {
"content_type": "application\/octet-stream", "content_type": "application/octet-stream",
"data": "H4sIAAAAAAAAA+2TsW7CMBCGM\/spTh6YKHUSIJLXqkPnrixWcIMLsS3btCDEu\/fs0Ba1SFVVVISUP8Odzqf\/zlY+K+qlaOSt7eLo2RudnVmMsel4DBjzasKOY1JZlJDlRVkU5aSspnnG8pIVOZ6fe5FTWvsgHK7yV5\/uLvARr0Q7qkUrKadB+mCXzY2Wr9q2TjZ0SF+k88poPGUj\/LAyl752yoauioVWqJgpPZcb\/Hmw0jV4ynfJEw9lvTAwo\/fOGcdBG4h18FbW6knJ+YzCYAByowLkdD+kTlrjVTBumzy2Nq7XqIDea7eKY7FJrMPCuG6Hlaql9rHr4fGO7i\/9pFcl+4X\/rWhX557xA\/9FVZ3gv+j5\/w9F+jl8g58c0OeQyCdH3HOglETsObxTTw7McwLJClt+wzz5JD45IPEcEHjMEfg0r8M9pQfaOSDs5NLP16tXr15XqzeJD6m5AAwAAA==", "data": "H4sIAAAAAAAAA+2TsW7CMBCGM/spTh6YKHUSIJLXqkPnrixWcIMLsS3btCDEu/fs0Ba1SFVVVISUP8Odzqf/zlY+K+qlaOSt7eLo2RudnVmMsel4DBjzasKOY1JZlJDlRVkU5aSspnnG8pIVOZ6fe5FTWvsgHK7yV5/uLvARr0Q7qkUrKadB+mCXzY2Wr9q2TjZ0SF+k88poPGUj/LAyl752yoauioVWqJgpPZcb/Hmw0jV4ynfJEw9lvTAwo/fOGcdBG4h18FbW6knJ+YzCYAByowLkdD+kTlrjVTBumzy2Nq7XqIDea7eKY7FJrMPCuG6Hlaql9rHr4fGO7i/9pFcl+4X/rWhX557xA/9FVZ3gv+j5/w9F+jl8g58c0OeQyCdH3HOglETsObxTTw7McwLJClt+wzz5JD45IPEcEHjMEfg0r8M9pQfaOSDs5NLP16tXr15XqzeJD6m5AAwAAA==",
"length": 352 "length": 352
} }
} }

View file

@ -25,7 +25,7 @@
"_id": "test-readme@0.0.0", "_id": "test-readme@0.0.0",
"dist": { "dist": {
"shasum": "8ee7331cbc641581b1a8cecd9d38d744a8feb863", "shasum": "8ee7331cbc641581b1a8cecd9d38d744a8feb863",
"tarball": "http:\/\/localhost:1234\/test-readme\/-\/test-readme-0.0.0.tgz" "tarball": "http://localhost:1234/test-readme/-/test-readme-0.0.0.tgz"
}, },
"_from": ".", "_from": ".",
"_npmVersion": "1.3.1", "_npmVersion": "1.3.1",
@ -50,8 +50,8 @@
], ],
"_attachments": { "_attachments": {
"test-readme-0.0.0.tgz": { "test-readme-0.0.0.tgz": {
"content_type": "application\/octet-stream", "content_type": "application/octet-stream",
"data": "H4sIAAAAAAAAA+2TsW7CMBCGM\/spTh6YKHUSIJLXqkPnrixWcIMLsS3btCDEu\/fs0Ba1SFVVVISUP8Odzqf\/zlY+K+qlaOSt7eLo2RudnVmMsel4DBjzasKOY1JZlJDlRVkU5aSspnnG8pIVOZ6fe5FTWvsgHK7yV5\/uLvARr0Q7qkUrKadB+mCXzY2Wr9q2TjZ0SF+k88poPGUj\/LAyl752yoauioVWqJgpPZcb\/Hmw0jV4ynfJEw9lvTAwo\/fOGcdBG4h18FbW6knJ+YzCYAByowLkdD+kTlrjVTBumzy2Nq7XqIDea7eKY7FJrMPCuG6Hlaql9rHr4fGO7i\/9pFcl+4X\/rWhX557xA\/9FVZ3gv+j5\/w9F+jl8g58c0OeQyCdH3HOglETsObxTTw7McwLJClt+wzz5JD45IPEcEHjMEfg0r8M9pQfaOSDs5NLP16tXr15XqzeJD6m5AAwAAA==", "data": "H4sIAAAAAAAAA+2TsW7CMBCGM/spTh6YKHUSIJLXqkPnrixWcIMLsS3btCDEu/fs0Ba1SFVVVISUP8Odzqf/zlY+K+qlaOSt7eLo2RudnVmMsel4DBjzasKOY1JZlJDlRVkU5aSspnnG8pIVOZ6fe5FTWvsgHK7yV5/uLvARr0Q7qkUrKadB+mCXzY2Wr9q2TjZ0SF+k88poPGUj/LAyl752yoauioVWqJgpPZcb/Hmw0jV4ynfJEw9lvTAwo/fOGcdBG4h18FbW6knJ+YzCYAByowLkdD+kTlrjVTBumzy2Nq7XqIDea7eKY7FJrMPCuG6Hlaql9rHr4fGO7i/9pFcl+4X/rWhX557xA/9FVZ3gv+j5/w9F+jl8g58c0OeQyCdH3HOglETsObxTTw7McwLJClt+wzz5JD45IPEcEHjMEfg0r8M9pQfaOSDs5NLP16tXr15XqzeJD6m5AAwAAA==",
"length": 352 "length": 352
} }
} }

View file

@ -24,7 +24,7 @@
"_id": "testpkg-search@0.0.1", "_id": "testpkg-search@0.0.1",
"dist": { "dist": {
"shasum": "8ee7331cbc641581b1a8cecd9d38d744a8feb863", "shasum": "8ee7331cbc641581b1a8cecd9d38d744a8feb863",
"tarball": "http:\/\/localhost:1234\/testpkg-search\/-\/testpkg-search-0.0.1.tgz" "tarball": "http://localhost:1234/testpkg-search/-/testpkg-search-0.0.1.tgz"
}, },
"_from": ".", "_from": ".",
"_npmVersion": "1.3.1", "_npmVersion": "1.3.1",
@ -49,8 +49,8 @@
], ],
"_attachments": { "_attachments": {
"testpkg-search-0.0.1.tgz": { "testpkg-search-0.0.1.tgz": {
"content_type": "application\/octet-stream", "content_type": "application/octet-stream",
"data": "H4sIAAAAAAAAA+2TsW7CMBCGM\/spTh6YKHUSIJLXqkPnrixWcIMLsS3btCDEu\/fs0Ba1SFVVVISUP8Odzqf\/zlY+K+qlaOSt7eLo2RudnVmMsel4DBjzasKOY1JZlJDlRVkU5aSspnnG8pIVOZ6fe5FTWvsgHK7yV5\/uLvARr0Q7qkUrKadB+mCXzY2Wr9q2TjZ0SF+k88poPGUj\/LAyl752yoauioVWqJgpPZcb\/Hmw0jV4ynfJEw9lvTAwo\/fOGcdBG4h18FbW6knJ+YzCYAByowLkdD+kTlrjVTBumzy2Nq7XqIDea7eKY7FJrMPCuG6Hlaql9rHr4fGO7i\/9pFcl+4X\/rWhX557xA\/9FVZ3gv+j5\/w9F+jl8g58c0OeQyCdH3HOglETsObxTTw7McwLJClt+wzz5JD45IPEcEHjMEfg0r8M9pQfaOSDs5NLP16tXr15XqzeJD6m5AAwAAA==", "data": "H4sIAAAAAAAAA+2TsW7CMBCGM/spTh6YKHUSIJLXqkPnrixWcIMLsS3btCDEu/fs0Ba1SFVVVISUP8Odzqf/zlY+K+qlaOSt7eLo2RudnVmMsel4DBjzasKOY1JZlJDlRVkU5aSspnnG8pIVOZ6fe5FTWvsgHK7yV5/uLvARr0Q7qkUrKadB+mCXzY2Wr9q2TjZ0SF+k88poPGUj/LAyl752yoauioVWqJgpPZcb/Hmw0jV4ynfJEw9lvTAwo/fOGcdBG4h18FbW6knJ+YzCYAByowLkdD+kTlrjVTBumzy2Nq7XqIDea7eKY7FJrMPCuG6Hlaql9rHr4fGO7i/9pFcl+4X/rWhX557xA/9FVZ3gv+j5/w9F+jl8g58c0OeQyCdH3HOglETsObxTTw7McwLJClt+wzz5JD45IPEcEHjMEfg0r8M9pQfaOSDs5NLP16tXr15XqzeJD6m5AAwAAA==",
"length": 352 "length": 352
} }
} }

View file

@ -32,8 +32,7 @@ auth:
name: authtest name: authtest
password: blahblah-password password: blahblah-password
logs: { type: stdout, format: pretty, level: trace logs: { type: stdout, format: pretty, level: trace }
}
packages: packages:
'@test/*': '@test/*':
access: $all access: $all

View file

@ -24,7 +24,7 @@
"_id": "testpkg-preserve@0.0.1", "_id": "testpkg-preserve@0.0.1",
"dist": { "dist": {
"shasum": "8ee7331cbc641581b1a8cecd9d38d744a8feb863", "shasum": "8ee7331cbc641581b1a8cecd9d38d744a8feb863",
"tarball": "http:\/\/localhost:1234\/testpkg-preserve\/-\/testpkg-preserve-0.0.1.tgz" "tarball": "http://localhost:1234/testpkg-preserve/-/testpkg-preserve-0.0.1.tgz"
}, },
"_from": ".", "_from": ".",
"_npmVersion": "1.3.1", "_npmVersion": "1.3.1",
@ -49,8 +49,8 @@
], ],
"_attachments": { "_attachments": {
"testpkg-preserve-0.0.1.tgz": { "testpkg-preserve-0.0.1.tgz": {
"content_type": "application\/octet-stream", "content_type": "application/octet-stream",
"data": "H4sIAAAAAAAAA+2TsW7CMBCGM\/spTh6YKHUSIJLXqkPnrixWcIMLsS3btCDEu\/fs0Ba1SFVVVISUP8Odzqf\/zlY+K+qlaOSt7eLo2RudnVmMsel4DBjzasKOY1JZlJDlRVkU5aSspnnG8pIVOZ6fe5FTWvsgHK7yV5\/uLvARr0Q7qkUrKadB+mCXzY2Wr9q2TjZ0SF+k88poPGUj\/LAyl752yoauioVWqJgpPZcb\/Hmw0jV4ynfJEw9lvTAwo\/fOGcdBG4h18FbW6knJ+YzCYAByowLkdD+kTlrjVTBumzy2Nq7XqIDea7eKY7FJrMPCuG6Hlaql9rHr4fGO7i\/9pFcl+4X\/rWhX557xA\/9FVZ3gv+j5\/w9F+jl8g58c0OeQyCdH3HOglETsObxTTw7McwLJClt+wzz5JD45IPEcEHjMEfg0r8M9pQfaOSDs5NLP16tXr15XqzeJD6m5AAwAAA==", "data": "H4sIAAAAAAAAA+2TsW7CMBCGM/spTh6YKHUSIJLXqkPnrixWcIMLsS3btCDEu/fs0Ba1SFVVVISUP8Odzqf/zlY+K+qlaOSt7eLo2RudnVmMsel4DBjzasKOY1JZlJDlRVkU5aSspnnG8pIVOZ6fe5FTWvsgHK7yV5/uLvARr0Q7qkUrKadB+mCXzY2Wr9q2TjZ0SF+k88poPGUj/LAyl752yoauioVWqJgpPZcb/Hmw0jV4ynfJEw9lvTAwo/fOGcdBG4h18FbW6knJ+YzCYAByowLkdD+kTlrjVTBumzy2Nq7XqIDea7eKY7FJrMPCuG6Hlaql9rHr4fGO7i/9pFcl+4X/rWhX557xA/9FVZ3gv+j5/w9F+jl8g58c0OeQyCdH3HOglETsObxTTw7McwLJClt+wzz5JD45IPEcEHjMEfg0r8M9pQfaOSDs5NLP16tXr15XqzeJD6m5AAwAAA==",
"length": 352 "length": 352
} }
} }

View file

@ -8,7 +8,7 @@ The files on this folder should be small as possible, **there is a custom config
- Each topic ideally should have his **own folder** if many scenarios might be part of the test. **eg: profile, security** - Each topic ideally should have his **own folder** if many scenarios might be part of the test. **eg: profile, security**
- Include different scenarios inside of the folder with enough context to indenty the use case. - Include different scenarios inside of the folder with enough context to indenty the use case.
- Foder or file, should be **named** as the test that used them. *eg: `api.spec.yaml` -> `api.spec.ts`* - Foder or file, should be **named** as the test that used them. _eg: `api.spec.yaml` -> `api.spec.ts`_
- **Don't use the same config file in multiple test**, it increase maintenance complexity. - **Don't use the same config file in multiple test**, it increase maintenance complexity.
- Try to **include only the props are require for the test**: - Try to **include only the props are require for the test**:
- Comment the config files, don't be shy, add as much context you think is need it for future contributors. - Comment the config files, don't be shy, add as much context you think is need it for future contributors.

View file

@ -1,54 +1,50 @@
const json = { const json = {
"_id": "forbidden-place", _id: 'forbidden-place',
"name": "forbidden-place", name: 'forbidden-place',
"description": "", description: '',
"dist-tags": { 'dist-tags': {
"latest": "1.0.6" latest: '1.0.6',
}, },
"versions": { versions: {
"1.0.6": { '1.0.6': {
"name": "forbidden-place", name: 'forbidden-place',
"version": "1.0.6", version: '1.0.6',
"description": "", description: '',
"main": "index.js", main: 'index.js',
"scripts": { scripts: {
"test": "echo \"Error: no test specified\" && exit 1" test: 'echo "Error: no test specified" && exit 1',
}, },
"keywords": [ keywords: [],
author: {
], name: 'User NPM',
"author": { email: 'user@domain.com',
"name": "User NPM",
"email": "user@domain.com"
}, },
"license": "ISC", license: 'ISC',
"dependencies": { dependencies: {
"verdaccio": "^2.7.2" verdaccio: '^2.7.2',
}, },
"readme": "# test", readme: '# test',
"readmeFilename": "README.md", readmeFilename: 'README.md',
"_id": "forbidden-place@1.0.6", _id: 'forbidden-place@1.0.6',
"_npmVersion": "5.5.1", _npmVersion: '5.5.1',
"_nodeVersion": "8.7.0", _nodeVersion: '8.7.0',
"_npmUser": { _npmUser: {},
dist: {
integrity: 'sha512-6gHiERpiDgtb3hjqpQH5/i7zRmvYi9pmCjQf2ZMy3QEa9wVk9RgdZaPWUt7ZOnWUPFjcr9cmE6dUBf+XoPoH4g==',
shasum: '2c03764f651a9f016ca0b7620421457b619151b9',
tarball: 'http://localhost:5555/forbidden-place/-/forbidden-place-1.0.6.tgz',
}, },
"dist": {
"integrity": "sha512-6gHiERpiDgtb3hjqpQH5\/i7zRmvYi9pmCjQf2ZMy3QEa9wVk9RgdZaPWUt7ZOnWUPFjcr9cmE6dUBf+XoPoH4g==",
"shasum": "2c03764f651a9f016ca0b7620421457b619151b9",
"tarball": "http:\/\/localhost:5555\/forbidden-place\/-\/forbidden-place-1.0.6.tgz"
}
}
}, },
"readme": "# test", },
"_attachments": { readme: '# test',
"forbidden-place-1.0.6.tgz": { _attachments: {
"content_type": "application\/octet-stream", 'forbidden-place-1.0.6.tgz': {
// eslint-disable-next-line max-len content_type: 'application/octet-stream',
"data": "H4sIAAAAAAAAE+2W32vbMBDH85y\/QnjQp9qxLEeBMsbGlocNBmN7bFdQ5WuqxJaEpGQdo\/\/79KPeQsnIw5KUDX\/9IOvurLuz\/DHSjK\/YAiY6jcXSKjk6sMqypHWNdtmD6hlBI0wqQmo8nVbVqMR4OsNoVB66kF1aW8eML+Vv10m9oF\/jP6IfY4QyyTrILlD2eqkcm+gVzpdrJrPz4NuAsULJ4MZFWdBkbcByI7R79CRjx0ScCdnAvf+SkjUFWu8IubzBgXUhDPidQlfZ3BhlLpBUKDiQ1cDFrYDmKkNnZwjuhUM4808+xNVW8P2bMk1Y7vJrtLC1u1MmLPjBF40+Cc4ahV6GDmI\/DWygVRpMwVX3KtXUCg7Sxp7ff3nbt6TBFy65gK1iffsN41yoEHtdFbOiisWMH8bPvXUH0SP3k+KG3UBr+DFy7OGfEJr4x5iWVeS\/pLQe+D+FIv\/agIWI6GX66kFuIhT+1gDjrp\/4d7WAvAwEJPh0u14IufWkM0zaW2W6nLfM2lybgJ4LTJ0\/jWiAK8OcMjt8MW3OlfQppcuhhQ6k+2OgkK2Q8DssFPi\/IHpU9fz3\/+xj5NjDf8QFE39VmE4JDfzPCBn4P4X6\/f88f\/Pu47zomiPk2Lv\/dOv8h+P\/34\/D\/p9CL+Kp67mrGDRo0KBBp9ZPsETQegASAAA=", data:
"length": 512 'H4sIAAAAAAAAE+2W32vbMBDH85y/QnjQp9qxLEeBMsbGlocNBmN7bFdQ5WuqxJaEpGQdo//79KPeQsnIw5KUDX/9IOvurLuz/DHSjK/YAiY6jcXSKjk6sMqypHWNdtmD6hlBI0wqQmo8nVbVqMR4OsNoVB66kF1aW8eML+Vv10m9oF/jP6IfY4QyyTrILlD2eqkcm+gVzpdrJrPz4NuAsULJ4MZFWdBkbcByI7R79CRjx0ScCdnAvf+SkjUFWu8IubzBgXUhDPidQlfZ3BhlLpBUKDiQ1cDFrYDmKkNnZwjuhUM4808+xNVW8P2bMk1Y7vJrtLC1u1MmLPjBF40+Cc4ahV6GDmI/DWygVRpMwVX3KtXUCg7Sxp7ff3nbt6TBFy65gK1iffsN41yoEHtdFbOiisWMH8bPvXUH0SP3k+KG3UBr+DFy7OGfEJr4x5iWVeS/pLQe+D+FIv/agIWI6GX66kFuIhT+1gDjrp/4d7WAvAwEJPh0u14IufWkM0zaW2W6nLfM2lybgJ4LTJ0/jWiAK8OcMjt8MW3OlfQppcuhhQ6k+2OgkK2Q8DssFPi/IHpU9fz3/+xj5NjDf8QFE39VmE4JDfzPCBn4P4X6/f88f/Pu47zomiPk2Lv/dOv8h+P/34/D/p9CL+Kp67mrGDRo0KBBp9ZPsETQegASAAA=',
} length: 512,
} },
} },
};
module.exports = json; module.exports = json;

View file

@ -41,8 +41,8 @@ importers:
'@types/request': 2.48.3 '@types/request': 2.48.3
'@types/semver': 7.2.0 '@types/semver': 7.2.0
'@types/supertest': 2.0.9 '@types/supertest': 2.0.9
'@typescript-eslint/eslint-plugin': 3.10.1_7cafb685ae559438a248caf09aa37585 '@typescript-eslint/eslint-plugin': 3.10.1_a05db04594704d0c3392f43fee866a02
'@typescript-eslint/parser': 3.10.1_eslint@7.5.0+typescript@4.0.2 '@typescript-eslint/parser': 3.10.1_eslint@7.5.0+typescript@3.9.7
'@verdaccio/types': 'link:packages/core/types' '@verdaccio/types': 'link:packages/core/types'
'@verdaccio/ui-theme': 1.12.1 '@verdaccio/ui-theme': 1.12.1
babel-core: 7.0.0-bridge.0_@babel+core@7.10.5 babel-core: 7.0.0-bridge.0_@babel+core@7.10.5
@ -58,9 +58,8 @@ importers:
eslint-config-prettier: 6.10.0_eslint@7.5.0 eslint-config-prettier: 6.10.0_eslint@7.5.0
eslint-plugin-babel: 5.3.0_eslint@7.5.0 eslint-plugin-babel: 5.3.0_eslint@7.5.0
eslint-plugin-import: 2.22.0_eslint@7.5.0 eslint-plugin-import: 2.22.0_eslint@7.5.0
eslint-plugin-jest: 23.8.0_eslint@7.5.0+typescript@4.0.2 eslint-plugin-jest: 23.8.0_eslint@7.5.0+typescript@3.9.7
eslint-plugin-jsx-a11y: 6.3.1_eslint@7.5.0 eslint-plugin-jsx-a11y: 6.3.1_eslint@7.5.0
eslint-plugin-prettier: 3.1.2_eslint@7.5.0+prettier@2.0.5
eslint-plugin-react: 7.20.6_eslint@7.5.0 eslint-plugin-react: 7.20.6_eslint@7.5.0
eslint-plugin-react-hooks: 4.1.0_eslint@7.5.0 eslint-plugin-react-hooks: 4.1.0_eslint@7.5.0
eslint-plugin-simple-import-sort: 5.0.2_eslint@7.5.0 eslint-plugin-simple-import-sort: 5.0.2_eslint@7.5.0
@ -81,7 +80,7 @@ importers:
selfsigned: 1.10.7 selfsigned: 1.10.7
standard-version: 8.0.0 standard-version: 8.0.0
supertest: 4.0.2 supertest: 4.0.2
typescript: 4.0.2 typescript: 3.9.7
verdaccio: 4.8.1 verdaccio: 4.8.1
verdaccio-audit: 9.7.3 verdaccio-audit: 9.7.3
verdaccio-auth-memory: 9.7.2 verdaccio-auth-memory: 9.7.2
@ -112,8 +111,8 @@ importers:
'@babel/preset-typescript': 7.10.4 '@babel/preset-typescript': 7.10.4
'@babel/register': 7.10.5 '@babel/register': 7.10.5
'@babel/runtime': 7.10.5 '@babel/runtime': 7.10.5
'@changesets/changelog-github': ^0.1.1 '@changesets/changelog-github': 0.1.1
'@changesets/cli': ^2.10.1 '@changesets/cli': 2.10.1
'@commitlint/cli': 8.3.5 '@commitlint/cli': 8.3.5
'@commitlint/config-conventional': 8.2.0 '@commitlint/config-conventional': 8.2.0
'@octokit/rest': 17.0.0 '@octokit/rest': 17.0.0
@ -128,8 +127,8 @@ importers:
'@types/request': 2.48.3 '@types/request': 2.48.3
'@types/semver': 7.2.0 '@types/semver': 7.2.0
'@types/supertest': 2.0.9 '@types/supertest': 2.0.9
'@typescript-eslint/eslint-plugin': ^3.10.1 '@typescript-eslint/eslint-plugin': 3.10.1
'@typescript-eslint/parser': ^3.10.1 '@typescript-eslint/parser': 3.10.1
'@verdaccio/types': 'workspace:*' '@verdaccio/types': 'workspace:*'
'@verdaccio/ui-theme': latest '@verdaccio/ui-theme': latest
babel-core: 7.0.0-bridge.0 babel-core: 7.0.0-bridge.0
@ -146,10 +145,9 @@ importers:
eslint-plugin-babel: 5.3.0 eslint-plugin-babel: 5.3.0
eslint-plugin-import: 2.22.0 eslint-plugin-import: 2.22.0
eslint-plugin-jest: 23.8.0 eslint-plugin-jest: 23.8.0
eslint-plugin-jsx-a11y: ^6.3.1 eslint-plugin-jsx-a11y: 6.3.1
eslint-plugin-prettier: 3.1.2 eslint-plugin-react: 7.20.6
eslint-plugin-react: ^7.20.6 eslint-plugin-react-hooks: 4.1.0
eslint-plugin-react-hooks: ^4.1.0
eslint-plugin-simple-import-sort: 5.0.2 eslint-plugin-simple-import-sort: 5.0.2
eslint-plugin-verdaccio: 8.4.2 eslint-plugin-verdaccio: 8.4.2
fs-extra: 8.1.0 fs-extra: 8.1.0
@ -162,13 +160,13 @@ importers:
kleur: 3.0.3 kleur: 3.0.3
lint-staged: 8.2.1 lint-staged: 8.2.1
nock: 12.0.3 nock: 12.0.3
npm-run-all: ^4.1.5 npm-run-all: 4.1.5
prettier: 2.0.5 prettier: 2.0.5
rimraf: 3.0.2 rimraf: 3.0.2
selfsigned: 1.10.7 selfsigned: 1.10.7
standard-version: 8.0.0 standard-version: 8.0.0
supertest: 4.0.2 supertest: 4.0.2
typescript: 4.0.2 typescript: '>=3.3.1 <3.10.0'
verdaccio: latest verdaccio: latest
verdaccio-audit: latest verdaccio-audit: latest
verdaccio-auth-memory: latest verdaccio-auth-memory: latest
@ -3525,7 +3523,7 @@ packages:
integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
/@changesets/apply-release-plan/4.0.0: /@changesets/apply-release-plan/4.0.0:
dependencies: dependencies:
'@babel/runtime': 7.10.5 '@babel/runtime': 7.11.2
'@changesets/config': 1.3.0 '@changesets/config': 1.3.0
'@changesets/get-version-range-type': 0.3.2 '@changesets/get-version-range-type': 0.3.2
'@changesets/git': 1.0.6 '@changesets/git': 1.0.6
@ -3542,7 +3540,7 @@ packages:
integrity: sha512-MrcUd8wIlQ4S/PznzqJVsmnEpUGfPEkCGF54iqt8G05GEqi/zuxpoTfebcScpj5zeiDyxFIcA9RbeZ3pvJJxoA== integrity: sha512-MrcUd8wIlQ4S/PznzqJVsmnEpUGfPEkCGF54iqt8G05GEqi/zuxpoTfebcScpj5zeiDyxFIcA9RbeZ3pvJJxoA==
/@changesets/assemble-release-plan/3.0.0: /@changesets/assemble-release-plan/3.0.0:
dependencies: dependencies:
'@babel/runtime': 7.10.5 '@babel/runtime': 7.11.2
'@changesets/errors': 0.1.4 '@changesets/errors': 0.1.4
'@changesets/get-dependents-graph': 1.1.3 '@changesets/get-dependents-graph': 1.1.3
'@changesets/types': 3.1.1 '@changesets/types': 3.1.1
@ -3561,7 +3559,7 @@ packages:
integrity: sha512-xwwyc7nSVVEUmVCiqT1dyju1rxe2awk5XOWLEwpsez3j9gXKwixlK43daG5jP1caGuXFc9f1BOSod2oJTUbtew== integrity: sha512-xwwyc7nSVVEUmVCiqT1dyju1rxe2awk5XOWLEwpsez3j9gXKwixlK43daG5jP1caGuXFc9f1BOSod2oJTUbtew==
/@changesets/cli/2.10.1: /@changesets/cli/2.10.1:
dependencies: dependencies:
'@babel/runtime': 7.10.5 '@babel/runtime': 7.11.2
'@changesets/apply-release-plan': 4.0.0 '@changesets/apply-release-plan': 4.0.0
'@changesets/assemble-release-plan': 3.0.0 '@changesets/assemble-release-plan': 3.0.0
'@changesets/config': 1.3.0 '@changesets/config': 1.3.0
@ -3631,7 +3629,7 @@ packages:
integrity: sha512-PTFJk1hiMUZ1YGzULmRNo6a6w6LTV6iCY1muCBTby+k4WWGbGgAaqKfUVhpZBosd1fvFIlXl3wqxdA93PLkRaQ== integrity: sha512-PTFJk1hiMUZ1YGzULmRNo6a6w6LTV6iCY1muCBTby+k4WWGbGgAaqKfUVhpZBosd1fvFIlXl3wqxdA93PLkRaQ==
/@changesets/get-release-plan/2.0.0: /@changesets/get-release-plan/2.0.0:
dependencies: dependencies:
'@babel/runtime': 7.10.5 '@babel/runtime': 7.11.2
'@changesets/assemble-release-plan': 3.0.0 '@changesets/assemble-release-plan': 3.0.0
'@changesets/config': 1.3.0 '@changesets/config': 1.3.0
'@changesets/pre': 1.0.5 '@changesets/pre': 1.0.5
@ -3647,7 +3645,7 @@ packages:
integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg== integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==
/@changesets/git/1.0.6: /@changesets/git/1.0.6:
dependencies: dependencies:
'@babel/runtime': 7.10.5 '@babel/runtime': 7.11.2
'@changesets/errors': 0.1.4 '@changesets/errors': 0.1.4
'@changesets/types': 3.1.1 '@changesets/types': 3.1.1
'@manypkg/get-packages': 1.1.1 '@manypkg/get-packages': 1.1.1
@ -3671,7 +3669,7 @@ packages:
integrity: sha512-0XPd/es9CfogI7XIqDr7I2mWzm++xX2s9GZsij3GajPYd7ouEsgJyNatPooxNtqj6ZepkiD6uqlqbeBUyj/A0Q== integrity: sha512-0XPd/es9CfogI7XIqDr7I2mWzm++xX2s9GZsij3GajPYd7ouEsgJyNatPooxNtqj6ZepkiD6uqlqbeBUyj/A0Q==
/@changesets/pre/1.0.5: /@changesets/pre/1.0.5:
dependencies: dependencies:
'@babel/runtime': 7.10.5 '@babel/runtime': 7.11.2
'@changesets/errors': 0.1.4 '@changesets/errors': 0.1.4
'@changesets/types': 3.1.1 '@changesets/types': 3.1.1
'@manypkg/get-packages': 1.1.1 '@manypkg/get-packages': 1.1.1
@ -3681,7 +3679,7 @@ packages:
integrity: sha512-p43aAQY3aijhDnBLCriPao5YArlRjD4mSHRJq9PsBhljVLWqQQXcn6seSd77d+bD1tATLhB8tQ2eYoxMtMydXQ== integrity: sha512-p43aAQY3aijhDnBLCriPao5YArlRjD4mSHRJq9PsBhljVLWqQQXcn6seSd77d+bD1tATLhB8tQ2eYoxMtMydXQ==
/@changesets/read/0.4.6: /@changesets/read/0.4.6:
dependencies: dependencies:
'@babel/runtime': 7.10.5 '@babel/runtime': 7.11.2
'@changesets/git': 1.0.6 '@changesets/git': 1.0.6
'@changesets/logger': 0.0.5 '@changesets/logger': 0.0.5
'@changesets/parse': 0.3.6 '@changesets/parse': 0.3.6
@ -3702,7 +3700,7 @@ packages:
integrity: sha512-XWGEGWXhM92zvBWiQt2sOwhjTt8eCQbrsRbqkv4WYwW3Zsl4qPpvhHsNt845S42dJXrxgjWvId+jxFQocCayNQ== integrity: sha512-XWGEGWXhM92zvBWiQt2sOwhjTt8eCQbrsRbqkv4WYwW3Zsl4qPpvhHsNt845S42dJXrxgjWvId+jxFQocCayNQ==
/@changesets/write/0.1.3: /@changesets/write/0.1.3:
dependencies: dependencies:
'@babel/runtime': 7.10.5 '@babel/runtime': 7.11.2
'@changesets/types': 3.1.1 '@changesets/types': 3.1.1
fs-extra: 7.0.1 fs-extra: 7.0.1
human-id: 1.0.2 human-id: 1.0.2
@ -4624,7 +4622,7 @@ packages:
integrity: sha512-MY5KFYUru0y74IsgM/9asDwb3ERxWxXEu3CRCZEvE7DtT86y1bR1XgtlSliMrptjz4qbivNGMQSvUBpEFJDp1A== integrity: sha512-MY5KFYUru0y74IsgM/9asDwb3ERxWxXEu3CRCZEvE7DtT86y1bR1XgtlSliMrptjz4qbivNGMQSvUBpEFJDp1A==
/@manypkg/find-root/1.1.0: /@manypkg/find-root/1.1.0:
dependencies: dependencies:
'@babel/runtime': 7.10.5 '@babel/runtime': 7.11.2
'@types/node': 12.12.54 '@types/node': 12.12.54
find-up: 4.1.0 find-up: 4.1.0
fs-extra: 8.1.0 fs-extra: 8.1.0
@ -4633,7 +4631,7 @@ packages:
integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA== integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==
/@manypkg/get-packages/1.1.1: /@manypkg/get-packages/1.1.1:
dependencies: dependencies:
'@babel/runtime': 7.10.5 '@babel/runtime': 7.11.2
'@manypkg/find-root': 1.1.0 '@manypkg/find-root': 1.1.0
fs-extra: 8.1.0 fs-extra: 8.1.0
globby: 11.0.1 globby: 11.0.1
@ -5742,17 +5740,17 @@ packages:
optional: true optional: true
resolution: resolution:
integrity: sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ== integrity: sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==
/@typescript-eslint/eslint-plugin/3.10.1_7cafb685ae559438a248caf09aa37585: /@typescript-eslint/eslint-plugin/3.10.1_a05db04594704d0c3392f43fee866a02:
dependencies: dependencies:
'@typescript-eslint/experimental-utils': 3.10.1_eslint@7.5.0+typescript@4.0.2 '@typescript-eslint/experimental-utils': 3.10.1_eslint@7.5.0+typescript@3.9.7
'@typescript-eslint/parser': 3.10.1_eslint@7.5.0+typescript@4.0.2 '@typescript-eslint/parser': 3.10.1_eslint@7.5.0+typescript@3.9.7
debug: 4.1.1 debug: 4.1.1
eslint: 7.5.0 eslint: 7.5.0
functional-red-black-tree: 1.0.1 functional-red-black-tree: 1.0.1
regexpp: 3.1.0 regexpp: 3.1.0
semver: 7.3.2 semver: 7.3.2
tsutils: 3.17.1_typescript@4.0.2 tsutils: 3.17.1_typescript@3.9.7
typescript: 4.0.2 typescript: 3.9.7
dev: true dev: true
engines: engines:
node: ^10.12.0 || >=12.0.0 node: ^10.12.0 || >=12.0.0
@ -5780,10 +5778,10 @@ packages:
typescript: '*' typescript: '*'
resolution: resolution:
integrity: sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== integrity: sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==
/@typescript-eslint/experimental-utils/2.34.0_eslint@7.5.0+typescript@4.0.2: /@typescript-eslint/experimental-utils/2.34.0_eslint@7.5.0+typescript@3.9.7:
dependencies: dependencies:
'@types/json-schema': 7.0.5 '@types/json-schema': 7.0.5
'@typescript-eslint/typescript-estree': 2.34.0_typescript@4.0.2 '@typescript-eslint/typescript-estree': 2.34.0_typescript@3.9.7
eslint: 7.5.0 eslint: 7.5.0
eslint-scope: 5.1.0 eslint-scope: 5.1.0
eslint-utils: 2.1.0 eslint-utils: 2.1.0
@ -5795,11 +5793,11 @@ packages:
typescript: '*' typescript: '*'
resolution: resolution:
integrity: sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== integrity: sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==
/@typescript-eslint/experimental-utils/3.10.1_eslint@7.5.0+typescript@4.0.2: /@typescript-eslint/experimental-utils/3.10.1_eslint@7.5.0+typescript@3.9.7:
dependencies: dependencies:
'@types/json-schema': 7.0.5 '@types/json-schema': 7.0.5
'@typescript-eslint/types': 3.10.1 '@typescript-eslint/types': 3.10.1
'@typescript-eslint/typescript-estree': 3.10.1_typescript@4.0.2 '@typescript-eslint/typescript-estree': 3.10.1_typescript@3.9.7
eslint: 7.5.0 eslint: 7.5.0
eslint-scope: 5.1.0 eslint-scope: 5.1.0
eslint-utils: 2.1.0 eslint-utils: 2.1.0
@ -5829,15 +5827,15 @@ packages:
optional: true optional: true
resolution: resolution:
integrity: sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA== integrity: sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==
/@typescript-eslint/parser/3.10.1_eslint@7.5.0+typescript@4.0.2: /@typescript-eslint/parser/3.10.1_eslint@7.5.0+typescript@3.9.7:
dependencies: dependencies:
'@types/eslint-visitor-keys': 1.0.0 '@types/eslint-visitor-keys': 1.0.0
'@typescript-eslint/experimental-utils': 3.10.1_eslint@7.5.0+typescript@4.0.2 '@typescript-eslint/experimental-utils': 3.10.1_eslint@7.5.0+typescript@3.9.7
'@typescript-eslint/types': 3.10.1 '@typescript-eslint/types': 3.10.1
'@typescript-eslint/typescript-estree': 3.10.1_typescript@4.0.2 '@typescript-eslint/typescript-estree': 3.10.1_typescript@3.9.7
eslint: 7.5.0 eslint: 7.5.0
eslint-visitor-keys: 1.3.0 eslint-visitor-keys: 1.3.0
typescript: 4.0.2 typescript: 3.9.7
dev: true dev: true
engines: engines:
node: ^10.12.0 || >=12.0.0 node: ^10.12.0 || >=12.0.0
@ -5874,7 +5872,7 @@ packages:
optional: true optional: true
resolution: resolution:
integrity: sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== integrity: sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==
/@typescript-eslint/typescript-estree/2.34.0_typescript@4.0.2: /@typescript-eslint/typescript-estree/2.34.0_typescript@3.9.7:
dependencies: dependencies:
debug: 4.1.1 debug: 4.1.1
eslint-visitor-keys: 1.3.0 eslint-visitor-keys: 1.3.0
@ -5882,8 +5880,8 @@ packages:
is-glob: 4.0.1 is-glob: 4.0.1
lodash: 4.17.20 lodash: 4.17.20
semver: 7.3.2 semver: 7.3.2
tsutils: 3.17.1_typescript@4.0.2 tsutils: 3.17.1_typescript@3.9.7
typescript: 4.0.2 typescript: 3.9.7
dev: true dev: true
engines: engines:
node: ^8.10.0 || ^10.13.0 || >=11.10.1 node: ^8.10.0 || ^10.13.0 || >=11.10.1
@ -5894,7 +5892,7 @@ packages:
optional: true optional: true
resolution: resolution:
integrity: sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== integrity: sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==
/@typescript-eslint/typescript-estree/3.10.1_typescript@4.0.2: /@typescript-eslint/typescript-estree/3.10.1_typescript@3.9.7:
dependencies: dependencies:
'@typescript-eslint/types': 3.10.1 '@typescript-eslint/types': 3.10.1
'@typescript-eslint/visitor-keys': 3.10.1 '@typescript-eslint/visitor-keys': 3.10.1
@ -5903,8 +5901,8 @@ packages:
is-glob: 4.0.1 is-glob: 4.0.1
lodash: 4.17.20 lodash: 4.17.20
semver: 7.3.2 semver: 7.3.2
tsutils: 3.17.1_typescript@4.0.2 tsutils: 3.17.1_typescript@3.9.7
typescript: 4.0.2 typescript: 3.9.7
dev: true dev: true
engines: engines:
node: ^10.12.0 || >=12.0.0 node: ^10.12.0 || >=12.0.0
@ -6505,7 +6503,7 @@ packages:
integrity: sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas= integrity: sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=
/aria-query/4.2.2: /aria-query/4.2.2:
dependencies: dependencies:
'@babel/runtime': 7.10.5 '@babel/runtime': 7.11.2
'@babel/runtime-corejs3': 7.11.2 '@babel/runtime-corejs3': 7.11.2
engines: engines:
node: '>=6.0' node: '>=6.0'
@ -10232,9 +10230,9 @@ packages:
eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0
resolution: resolution:
integrity: sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== integrity: sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg==
/eslint-plugin-jest/23.8.0_eslint@7.5.0+typescript@4.0.2: /eslint-plugin-jest/23.8.0_eslint@7.5.0+typescript@3.9.7:
dependencies: dependencies:
'@typescript-eslint/experimental-utils': 2.34.0_eslint@7.5.0+typescript@4.0.2 '@typescript-eslint/experimental-utils': 2.34.0_eslint@7.5.0+typescript@3.9.7
eslint: 7.5.0 eslint: 7.5.0
dev: true dev: true
engines: engines:
@ -10246,7 +10244,7 @@ packages:
integrity: sha512-DKXmLxguZ1Lru4u5YM12ko3WLq6gqo7dhV2b63K731+/PNyZ/Ff6NGONQsGUtPLG9zU3kdz/N+2LTbweNZifeg== integrity: sha512-DKXmLxguZ1Lru4u5YM12ko3WLq6gqo7dhV2b63K731+/PNyZ/Ff6NGONQsGUtPLG9zU3kdz/N+2LTbweNZifeg==
/eslint-plugin-jsx-a11y/6.3.1_eslint@6.8.0: /eslint-plugin-jsx-a11y/6.3.1_eslint@6.8.0:
dependencies: dependencies:
'@babel/runtime': 7.10.5 '@babel/runtime': 7.11.2
aria-query: 4.2.2 aria-query: 4.2.2
array-includes: 3.1.1 array-includes: 3.1.1
ast-types-flow: 0.0.7 ast-types-flow: 0.0.7
@ -10267,7 +10265,7 @@ packages:
integrity: sha512-i1S+P+c3HOlBJzMFORRbC58tHa65Kbo8b52/TwCwSKLohwvpfT5rm2GjGWzOHTEuq4xxf2aRlHHTtmExDQOP+g== integrity: sha512-i1S+P+c3HOlBJzMFORRbC58tHa65Kbo8b52/TwCwSKLohwvpfT5rm2GjGWzOHTEuq4xxf2aRlHHTtmExDQOP+g==
/eslint-plugin-jsx-a11y/6.3.1_eslint@7.5.0: /eslint-plugin-jsx-a11y/6.3.1_eslint@7.5.0:
dependencies: dependencies:
'@babel/runtime': 7.10.5 '@babel/runtime': 7.11.2
aria-query: 4.2.2 aria-query: 4.2.2
array-includes: 3.1.1 array-includes: 3.1.1
ast-types-flow: 0.0.7 ast-types-flow: 0.0.7
@ -10286,19 +10284,6 @@ packages:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 eslint: ^3 || ^4 || ^5 || ^6 || ^7
resolution: resolution:
integrity: sha512-i1S+P+c3HOlBJzMFORRbC58tHa65Kbo8b52/TwCwSKLohwvpfT5rm2GjGWzOHTEuq4xxf2aRlHHTtmExDQOP+g== integrity: sha512-i1S+P+c3HOlBJzMFORRbC58tHa65Kbo8b52/TwCwSKLohwvpfT5rm2GjGWzOHTEuq4xxf2aRlHHTtmExDQOP+g==
/eslint-plugin-prettier/3.1.2_eslint@7.5.0+prettier@2.0.5:
dependencies:
eslint: 7.5.0
prettier: 2.0.5
prettier-linter-helpers: 1.0.0
dev: true
engines:
node: '>=6.0.0'
peerDependencies:
eslint: '>= 5.0.0'
prettier: '>= 1.13.0'
resolution:
integrity: sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==
/eslint-plugin-react-hooks/1.7.0_eslint@6.8.0: /eslint-plugin-react-hooks/1.7.0_eslint@6.8.0:
dependencies: dependencies:
eslint: 6.8.0 eslint: 6.8.0
@ -10876,10 +10861,6 @@ packages:
/fast-deep-equal/3.1.3: /fast-deep-equal/3.1.3:
resolution: resolution:
integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
/fast-diff/1.2.0:
dev: true
resolution:
integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
/fast-glob/2.2.7: /fast-glob/2.2.7:
dependencies: dependencies:
'@mrmlnc/readdir-enhanced': 2.2.1 '@mrmlnc/readdir-enhanced': 2.2.1
@ -18214,14 +18195,6 @@ packages:
dev: false dev: false
resolution: resolution:
integrity: sha1-kysxwj792zb8ZqgtzvNirzEimC8= integrity: sha1-kysxwj792zb8ZqgtzvNirzEimC8=
/prettier-linter-helpers/1.0.0:
dependencies:
fast-diff: 1.2.0
dev: true
engines:
node: '>=6.0.0'
resolution:
integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
/prettier/1.19.1: /prettier/1.19.1:
dev: true dev: true
engines: engines:
@ -21408,10 +21381,10 @@ packages:
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
resolution: resolution:
integrity: sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== integrity: sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==
/tsutils/3.17.1_typescript@4.0.2: /tsutils/3.17.1_typescript@3.9.7:
dependencies: dependencies:
tslib: 1.13.0 tslib: 1.13.0
typescript: 4.0.2 typescript: 3.9.7
dev: true dev: true
engines: engines:
node: '>= 6' node: '>= 6'
@ -21520,13 +21493,13 @@ packages:
/typedarray/0.0.6: /typedarray/0.0.6:
resolution: resolution:
integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
/typescript/4.0.2: /typescript/3.9.7:
dev: true dev: true
engines: engines:
node: '>=4.2.0' node: '>=4.2.0'
hasBin: true hasBin: true
resolution: resolution:
integrity: sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ== integrity: sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==
/uglify-js/3.10.2: /uglify-js/3.10.2:
engines: engines:
node: '>=0.8.0' node: '>=0.8.0'

View file

@ -2,4 +2,4 @@ packages:
- packages/* - packages/*
- packages/core/* - packages/core/*
- website - website
- "!**/test/**" - '!**/test/**'

View file

@ -6,7 +6,11 @@
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
"keywords": ["verdaccio", "sample", "scoped"], "keywords": [
"verdaccio",
"sample",
"scoped"
],
"dependencies": { "dependencies": {
"verdaccio": "latest" "verdaccio": "latest"
}, },

View file

@ -10,16 +10,7 @@
"strictNullChecks": true, "strictNullChecks": true,
"resolveJsonModule": true, "resolveJsonModule": true,
"allowSyntheticDefaultImports": true, "allowSyntheticDefaultImports": true,
"esModuleInterop": true, "esModuleInterop": true
}, },
"exclude": [ "exclude": ["**/build", "node_modules", "**/node_modules", "**/coverage", "**/*.spec.ts", "**/test", "**/__tests__", "**/*.test.ts"]
"**/build",
"node_modules",
"**/node_modules",
"**/coverage",
"**/*.spec.ts",
"**/test",
"**/__tests__",
"**/*.test.ts"
]
} }

View file

@ -2,6 +2,11 @@
"env": { "env": {
"browser": true "browser": true
}, },
"settings": {
"react": {
"version": "detect"
}
},
"rules": { "rules": {
"react/prop-types": 0 "react/prop-types": 0
} }

View file

@ -1,8 +0,0 @@
# Builded files
/.cache/
/public/
/crowdin/
/src/dictionaries/
# Node.js modules
/node_modules/

View file

@ -16,7 +16,7 @@ yarn develop
``` ```
Run [http://localhost:8000/](http://localhost:8000/) Run [http://localhost:8000/](http://localhost:8000/)
GraphQL [http://localhost:8000/___graphql](http://localhost:8000/___graphql) GraphQL [http://localhost:8000/\_\_\_graphql](http://localhost:8000/___graphql)
or build locally or build locally

View file

@ -5,9 +5,9 @@ services:
context: . context: .
dockerfile: Dockerfile dockerfile: Dockerfile
ports: ports:
- "8000:8000" - '8000:8000'
- "9929:9929" - '9929:9929'
- "9230:9230" - '9230:9230'
volumes: volumes:
- /app/node_modules - /app/node_modules
- .:/app - .:/app

View file

@ -1,6 +1,6 @@
--- ---
id: amazon id: amazon
title: "Amazon Web Services" title: 'Amazon Web Services'
--- ---
This document describes several approaches for deploying Verdaccio in the AWS cloud. This document describes several approaches for deploying Verdaccio in the AWS cloud.
@ -31,19 +31,21 @@ Elastic File System
``` ```
Architecture notes: Architecture notes:
* Deploy this stack into the region closest to your users for maximum performance.
* We use an auto scaling group primarily for self-healing. The system requirements of Verdaccio are pretty low, so it's unlikely you'll need multiple instances to handle traffic load. - Deploy this stack into the region closest to your users for maximum performance.
* Because Amazon Linux 2 doesn't include Node, we run Verdaccio as a Docker image rather than natively on the instance. This is faster and more secure than relying on third party package sources for Node. - We use an auto scaling group primarily for self-healing. The system requirements of Verdaccio are pretty low, so it's unlikely you'll need multiple instances to handle traffic load.
* Elastic File System is cheap and stateful, and works across AZs. An alternative would be the [third-party S3 storage plugin](https://github.com/remitly/verdaccio-s3-storage). - Because Amazon Linux 2 doesn't include Node, we run Verdaccio as a Docker image rather than natively on the instance. This is faster and more secure than relying on third party package sources for Node.
* For backup, use AWS Backup - Elastic File System is cheap and stateful, and works across AZs. An alternative would be the [third-party S3 storage plugin](https://github.com/remitly/verdaccio-s3-storage).
- For backup, use AWS Backup
Estimated monthly cost for a small installation (in us-east-1): Estimated monthly cost for a small installation (in us-east-1):
* ALB (1 LCU average): $22.265/mo
* EC2 (t3.nano): $3.796/mo - ALB (1 LCU average): \$22.265/mo
* EBS (8gb): $0.80/mo - EC2 (t3.nano): \$3.796/mo
* EFS (5gb): $1.5/mo - EBS (8gb): \$0.80/mo
* Data transfer: (10gb): $0.9/mo - EFS (5gb): \$1.5/mo
* **TOTAL:** Under $30/mo - Data transfer: (10gb): \$0.9/mo
- **TOTAL:** Under \$30/mo
## ECS ## ECS

View file

@ -1,6 +1,6 @@
--- ---
id: ansible id: ansible
title: "Ansible" title: 'Ansible'
--- ---
We have a customised solution for `verdaccio` in our organization. We have a customised solution for `verdaccio` in our organization.
@ -11,6 +11,6 @@ We have a customised solution for `verdaccio` in our organization.
#### Other options #### Other options
* Ansible role for Gentoo users: [jirutka/ansible-role-sinopia](https://github.com/jirutka/ansible-role-sinopia). - Ansible role for Gentoo users: [jirutka/ansible-role-sinopia](https://github.com/jirutka/ansible-role-sinopia).
* Ansible role for Ubuntu users: [jagregory/sinopia-ansible](https://github.com/jagregory/sinopia-ansible). - Ansible role for Ubuntu users: [jagregory/sinopia-ansible](https://github.com/jagregory/sinopia-ansible).
* ansible-verdaccio-role [https://github.com/refinery29/ansible-verdaccio-role](https://github.com/refinery29/ansible-verdaccio-role) - ansible-verdaccio-role [https://github.com/refinery29/ansible-verdaccio-role](https://github.com/refinery29/ansible-verdaccio-role)

View file

@ -1,6 +1,6 @@
--- ---
id: articles id: articles
title: "Articles" title: 'Articles'
--- ---
Below is a list of articles about Verdaccio. If you have written a blog post or tutorial that mentions Verdaccio, feel free to add it here! Below is a list of articles about Verdaccio. If you have written a blog post or tutorial that mentions Verdaccio, feel free to add it here!
@ -9,83 +9,79 @@ Below is a list of articles about Verdaccio. If you have written a blog post or
## Core Team Articles ## Core Team Articles
* [An Introduction to Verdaccio](https://medium.com/@jotadeveloper/an-introduction-to-verdaccio-f6c72e865425) - [An Introduction to Verdaccio](https://medium.com/@jotadeveloper/an-introduction-to-verdaccio-f6c72e865425)
* [Five use cases where a npm private proxy fits in your workflow](https://medium.com/@jotadeveloper/five-use-cases-where-a-npm-private-proxy-fits-in-your-workflow-632a81779c14) - [Five use cases where a npm private proxy fits in your workflow](https://medium.com/@jotadeveloper/five-use-cases-where-a-npm-private-proxy-fits-in-your-workflow-632a81779c14)
* [An Introduction to Verdaccio](https://medium.com/@jotadeveloper/an-introduction-to-verdaccio-f6c72e865425) - [An Introduction to Verdaccio](https://medium.com/@jotadeveloper/an-introduction-to-verdaccio-f6c72e865425)
* [NPM Registry for your organisation](https://medium.com/@ayusharma.in/npm-registry-for-your-organisation-aeb8ea76144) - [NPM Registry for your organisation](https://medium.com/@ayusharma.in/npm-registry-for-your-organisation-aeb8ea76144)
* [Verdaccio 3 released 🎉!!](https://medium.com/verdaccio/verdaccio-3-released-feb06ef38558) - [Verdaccio 3 released 🎉!!](https://medium.com/verdaccio/verdaccio-3-released-feb06ef38558)
* [The crazy story of Verdaccio](https://medium.com/verdaccio/the-crazy-story-of-verdaccio-d35d924728bc) - [The crazy story of Verdaccio](https://medium.com/verdaccio/the-crazy-story-of-verdaccio-d35d924728bc)
* [Verdaccio 4 alpha release 🚀](https://medium.com/verdaccio/verdaccio-4-alpha-release-400c7ed4884d) - [Verdaccio 4 alpha release 🚀](https://medium.com/verdaccio/verdaccio-4-alpha-release-400c7ed4884d)
* [Verdaccio and deterministic lock files](https://medium.com/verdaccio/verdaccio-and-deterministic-lock-files-5339d82d611e) - [Verdaccio and deterministic lock files](https://medium.com/verdaccio/verdaccio-and-deterministic-lock-files-5339d82d611e)
* [Setting up Verdaccio on DigitalOcean](https://medium.com/verdaccio/setting-up-verdaccio-on-digitalocean-61b5d08e4f0d) - [Setting up Verdaccio on DigitalOcean](https://medium.com/verdaccio/setting-up-verdaccio-on-digitalocean-61b5d08e4f0d)
* [How I learned React Js and how you can…](https://medium.com/verdaccio/how-i-learned-react-js-and-how-you-can-8663f938426c) - [How I learned React Js and how you can…](https://medium.com/verdaccio/how-i-learned-react-js-and-how-you-can-8663f938426c)
* [How did I fall in the open source world…and that was a nice thing!](https://medium.com/@priscilawebdev/how-do-i-fall-in-the-open-source-world-and-that-was-a-nice-thing-b0e85d05490d) - [How did I fall in the open source world…and that was a nice thing!](https://medium.com/@priscilawebdev/how-do-i-fall-in-the-open-source-world-and-that-was-a-nice-thing-b0e85d05490d)
# Articles / Blogs / Tutorials (by Language) # Articles / Blogs / Tutorials (by Language)
### Remarkable Articles ### Remarkable Articles
* [10 npm Security Best Practices](https://snyk.io/blog/ten-npm-security-best-practices/) - [10 npm Security Best Practices](https://snyk.io/blog/ten-npm-security-best-practices/)
* [Cover Your Apps While Still Using npm](https://nodesource.com/blog/cover-your-apps-while-still-using-npm/) - [Cover Your Apps While Still Using npm](https://nodesource.com/blog/cover-your-apps-while-still-using-npm/)
* [Containerizing Node.js Applications with Docker](https://nodesource.com/blog/containerizing-node-js-applications-with-docker) - [Containerizing Node.js Applications with Docker](https://nodesource.com/blog/containerizing-node-js-applications-with-docker)
* [Verdaccio - A lightweight npm proxy registry - Interview with Juan Picado](https://survivejs.com/blog/verdaccio-interview/) - [Verdaccio - A lightweight npm proxy registry - Interview with Juan Picado](https://survivejs.com/blog/verdaccio-interview/)
* [Host, Publish and Manage Private npm Packages with Verdaccio](https://www.sitepoint.com/private-npm-packages-verdaccio/) - [Host, Publish and Manage Private npm Packages with Verdaccio](https://www.sitepoint.com/private-npm-packages-verdaccio/)
* [Free Private NPM with Verdaccio and AWS](https://medium.com/@odahcam/free-private-npm-with-verdaccio-and-aws-a88e6f0f4beb) - [Free Private NPM with Verdaccio and AWS](https://medium.com/@odahcam/free-private-npm-with-verdaccio-and-aws-a88e6f0f4beb)
* [Run your own Unity Package Server!](https://medium.com/@markushofer/run-your-own-unity-package-server-b4fe9995704e) - [Run your own Unity Package Server!](https://medium.com/@markushofer/run-your-own-unity-package-server-b4fe9995704e)
* [Ways to have your private npm registryand a final DIY solution](https://medium.com/engenharia-noalvo/ways-to-have-your-private-npm-registry-and-a-final-diy-solution-eed001a88e74) - [Ways to have your private npm registryand a final DIY solution](https://medium.com/engenharia-noalvo/ways-to-have-your-private-npm-registry-and-a-final-diy-solution-eed001a88e74)
* [How to set up a free private npm registry… for Windows](https://medium.com/@Anderson7301/how-to-set-up-a-free-private-npm-registry-for-windows-f532c6a381ce) - [How to set up a free private npm registry… for Windows](https://medium.com/@Anderson7301/how-to-set-up-a-free-private-npm-registry-for-windows-f532c6a381ce)
### English ### English
* [Testing your npm package before releasing it using Verdaccio + ngrok](https://medium.com/strapi/testing-your-npm-package-before-releasing-it-using-verdaccio-ngrok-28e2832c850a) - [Testing your npm package before releasing it using Verdaccio + ngrok](https://medium.com/strapi/testing-your-npm-package-before-releasing-it-using-verdaccio-ngrok-28e2832c850a)
* [Host your own private NPM repository with Verdaccio](https://medium.com/devopslinks/host-your-own-private-npm-repository-with-verdaccio-e8a3202b97c5) - [Host your own private NPM repository with Verdaccio](https://medium.com/devopslinks/host-your-own-private-npm-repository-with-verdaccio-e8a3202b97c5)
* [Local npm private registry with zero configuration](https://dev.to/iriskatastic/local-npm-private-registry-with-zero-configuration-njo) - [Local npm private registry with zero configuration](https://dev.to/iriskatastic/local-npm-private-registry-with-zero-configuration-njo)
* [It depends. On the registry](https://blog.softwaremill.com/it-depends-on-the-registry-8fa9d9c5a3b) - [It depends. On the registry](https://blog.softwaremill.com/it-depends-on-the-registry-8fa9d9c5a3b)
* [Host, Publish and Manage Private npm Packages with Verdaccio](http://allprowebdesigns.com/2017/01/host-publish-and-manage-private-npm-packages-with-verdaccio/) - [Host, Publish and Manage Private npm Packages with Verdaccio](http://allprowebdesigns.com/2017/01/host-publish-and-manage-private-npm-packages-with-verdaccio/)
* [Setting Up a Private NPM Registry](https://gir.me.uk/posts/private-npm-registry.html) - [Setting Up a Private NPM Registry](https://gir.me.uk/posts/private-npm-registry.html)
* [Testing NPM alpha / beta / rc packages](https://medium.com/@the1mills/testing-npm-alpha-beta-rc-packages-108b65eb03d2) - [Testing NPM alpha / beta / rc packages](https://medium.com/@the1mills/testing-npm-alpha-beta-rc-packages-108b65eb03d2)
* [Running a local npm repository on Windows Server using Verdaccio](https://robertwray.co.uk/blog/running-a-local-npm-repository-on-windows-server-using-verdaccio) - [Running a local npm repository on Windows Server using Verdaccio](https://robertwray.co.uk/blog/running-a-local-npm-repository-on-windows-server-using-verdaccio)
* [Kubernetes private NPM registry](https://medium.com/@tompape/kubernetes-private-npm-registry-fb5f450fa611) - [Kubernetes private NPM registry](https://medium.com/@tompape/kubernetes-private-npm-registry-fb5f450fa611)
* [Verdaccio examples for Google Cloud and K8s setups. https://github.com/papezt/verdaccio-examples](https://github.com/papezt/verdaccio-examples) - [Verdaccio examples for Google Cloud and K8s setups. https://github.com/papezt/verdaccio-examples](https://github.com/papezt/verdaccio-examples)
* [Setting up a private NPM Registry Is Easier Than You Think](https://medium.com/@902Labs/setting-up-a-private-npm-registry-is-easier-than-you-think-455e1bd438f2) - [Setting up a private NPM Registry Is Easier Than You Think](https://medium.com/@902Labs/setting-up-a-private-npm-registry-is-easier-than-you-think-455e1bd438f2)
### Japanese ### Japanese
* [Verdaccio でプライベート npm リポジトリをサクッと立てる](http://neos21.hatenablog.com/entry/2017/09/08/080000) - [Verdaccio でプライベート npm リポジトリをサクッと立てる](http://neos21.hatenablog.com/entry/2017/09/08/080000)
* [verdaccioでprivateなnpmリポジトリを作成](https://qiita.com/mtokiwa/items/1bc22a2270e4408d4cdd) - [verdaccio で private な npm リポジトリを作成](https://qiita.com/mtokiwa/items/1bc22a2270e4408d4cdd)
* [Version control of my own UnityPackage with Unity × Verdaccio / Unity×Verdaccioで自作UnityPackageをバージョン管理する](https://synamon.hatenablog.com/entry/2018/08/15/185607) - [Version control of my own UnityPackage with Unity × Verdaccio / Unity×Verdaccio で自作 UnityPackage をバージョン管理する](https://synamon.hatenablog.com/entry/2018/08/15/185607)
### Chinese ### Chinese
* [使用 verdaccio 搭建 npm 私有仓储](https://blog.sigoden.com/verdaccio--private-npm-registry/) - [使用 verdaccio 搭建 npm 私有仓储](https://blog.sigoden.com/verdaccio--private-npm-registry/)
* [Verdaccio一个轻量级的私有npm代理注册表sinopia fork)](https://www.ctolib.com/verdaccio-verdaccio.html) - [Verdaccio一个轻量级的私有 npm 代理注册表sinopia fork)](https://www.ctolib.com/verdaccio-verdaccio.html)
* [npm 私服工具verdaccio 安装配置试用](http://www.cnblogs.com/rongfengliang/p/7811838.html) - [npm 私服工具 verdaccio 安装配置试用](http://www.cnblogs.com/rongfengliang/p/7811838.html)
* [搭建私有npm镜像](http://www.blackcater.win/2018/03/01/%E6%90%AD%E5%BB%BA%E7%A7%81%E6%9C%89npm%E9%95%9C%E5%83%8F/) - [搭建私有 npm 镜像](http://www.blackcater.win/2018/03/01/%E6%90%AD%E5%BB%BA%E7%A7%81%E6%9C%89npm%E9%95%9C%E5%83%8F/)
* [搭建离线npm私库——verdaccio](https://www.jishux.com/plus/view-765581-1.html) - [搭建离线 npm 私库——verdaccio](https://www.jishux.com/plus/view-765581-1.html)
* [[筆記] 建立自己的 npm, 以npm Orgs跟Verdaccio為例](https://medium.com/@ceall8650/%E7%AD%86%E8%A8%98-%E5%BB%BA%E7%AB%8B%E8%87%AA%E5%B7%B1%E7%9A%84-npm-%E4%BB%A5npm-orgs%E8%B7%9Fverdaccio%E7%82%BA%E4%BE%8B-cfb83b2307e6) - [[筆記] 建立自己的 npm, 以 npm Orgs 跟 Verdaccio 為例](https://medium.com/@ceall8650/%E7%AD%86%E8%A8%98-%E5%BB%BA%E7%AB%8B%E8%87%AA%E5%B7%B1%E7%9A%84-npm-%E4%BB%A5npm-orgs%E8%B7%9Fverdaccio%E7%82%BA%E4%BE%8B-cfb83b2307e6)
### French ### French
* [Installer un registre NPM](https://allons-y.io/wiki/installer-un-registre-npm) - [Installer un registre NPM](https://allons-y.io/wiki/installer-un-registre-npm)
### Spanish ### Spanish
* [NPM privado: instalar y configurar Verdaccio](https://www.todojs.com/npm-privado-con-verdaccio/)
* [NPM privado: 5 razones y 7 recomendaciones para utilizarlo](https://www.todojs.com/npm-privado-5-razones-y-7-recomendaciones/)
- [NPM privado: instalar y configurar Verdaccio](https://www.todojs.com/npm-privado-con-verdaccio/)
- [NPM privado: 5 razones y 7 recomendaciones para utilizarlo](https://www.todojs.com/npm-privado-5-razones-y-7-recomendaciones/)
### German ### German
* [Struktur für große Angular-Anwendungen: Microservices, Module, MonoRepo?](https://jaxenter.de/struktur-angular-anwendungen-67467) - [Struktur für große Angular-Anwendungen: Microservices, Module, MonoRepo?](https://jaxenter.de/struktur-angular-anwendungen-67467)
* [Angular in einer Microservices-Welt](https://jaxenter.de/angular-microservices-66445) - [Angular in einer Microservices-Welt](https://jaxenter.de/angular-microservices-66445)
* [Privates NPM Repository mit Verdaccio (SSL & Docker)](https://blog.zotorn.de/privates-npm-repository-mit-verdaccio-ssl-docker-1/) - [Privates NPM Repository mit Verdaccio (SSL & Docker)](https://blog.zotorn.de/privates-npm-repository-mit-verdaccio-ssl-docker-1/)
## Slides ## Slides
* [Introduction to Verdaccio VueJS Meetup 2018](https://www.slideshare.net/juancarlospicado/introduction-to-verdaccio) - [Introduction to Verdaccio VueJS Meetup 2018](https://www.slideshare.net/juancarlospicado/introduction-to-verdaccio)
* [Introduccion Verdaccio Vienna JS Meetup 2019](https://docs.google.com/presentation/d/1eam_OtXCQh5IVYyia2GHhxVD8tb37B0yIadVa8wxQSk/edit?usp=sharing) - [Introduccion Verdaccio Vienna JS Meetup 2019](https://docs.google.com/presentation/d/1eam_OtXCQh5IVYyia2GHhxVD8tb37B0yIadVa8wxQSk/edit?usp=sharing)
* [Cover Your Apps While Still Using npm](https://www.slideshare.net/TierneyCoren/cover-your-apps-while-still-using-npm) - [Cover Your Apps While Still Using npm](https://www.slideshare.net/TierneyCoren/cover-your-apps-while-still-using-npm)
* [Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]](https://www.slideshare.net/dena_tech/unity-20182019denaunity-dena-techcon-2019) - [Unity 2018-2019 を見据えた DeNA の Unity 開発のこれから [DeNA TechCon 2019]](https://www.slideshare.net/dena_tech/unity-20182019denaunity-dena-techcon-2019)

View file

@ -1,6 +1,6 @@
--- ---
id: authentification id: authentification
title: "Authentification" title: 'Authentification'
--- ---
The authentification is tied to the auth [plugin](plugins.md) you are using. The package restrictions also is handled by the [Package Access](packages.md). The authentification is tied to the auth [plugin](plugins.md) you are using. The package restrictions also is handled by the [Package Access](packages.md).
@ -41,11 +41,11 @@ As is described [on issue #212](https://github.com/verdaccio/verdaccio/issues/21
### The meaning of `$all` and `$anonymous` ### The meaning of `$all` and `$anonymous`
As you know *Verdaccio* uses the `htpasswd` by default. That plugin does not implement the methods `allow_access`, `allow_publish` and `allow_unpublish`. As you know _Verdaccio_ uses the `htpasswd` by default. That plugin does not implement the methods `allow_access`, `allow_publish` and `allow_unpublish`.
Thus, *Verdaccio* will handle that in the following way: Thus, _Verdaccio_ will handle that in the following way:
* If you are not logged in (you are anonymous), `$all` and `$anonymous` means exactly the same. - If you are not logged in (you are anonymous), `$all` and `$anonymous` means exactly the same.
* If you are logged in, `$anonymous` won't be part of your groups and `$all` will match any logged user. A new group `$authenticated` will be added to the list. - If you are logged in, `$anonymous` won't be part of your groups and `$all` will match any logged user. A new group `$authenticated` will be added to the list.
As a takeaway, `$all` **will match all users, independently whether is logged or not**. As a takeaway, `$all` **will match all users, independently whether is logged or not**.
@ -54,8 +54,8 @@ As a takeaway, `$all` **will match all users, independently whether is logged or
Let's recap: Let's recap:
* **logged**: `$all`, `$authenticated`, + groups added by the plugin - **logged**: `$all`, `$authenticated`, + groups added by the plugin
* **anonymous (logged out)**: `$all` and `$anonymous`. - **anonymous (logged out)**: `$all` and `$anonymous`.
## Default htpasswd ## Default htpasswd
@ -71,9 +71,9 @@ auth:
#max_users: 1000 #max_users: 1000
``` ```
Property | Type | Required | Example | Support | Description | Property | Type | Required | Example | Support | Description |
--- | --- | --- | --- | --- | --- | --------- | ------ | -------- | ---------- | ------- | ---------------------------------------- |
file | string | Yes | ./htpasswd | all | file that host the encrypted credentials | file | string | Yes | ./htpasswd | all | file that host the encrypted credentials |
max_users | number | No | 1000 | all | set limit of users | max_users | number | No | 1000 | all | set limit of users |
In case to decide do not allow user to login, you can set `max_users: -1`. In case to decide do not allow user to login, you can set `max_users: -1`.

View file

@ -1,6 +1,6 @@
--- ---
id: azure id: azure
title: "Windows Azure" title: 'Windows Azure'
--- ---
dsadsa dsadsa

View file

@ -1,6 +1,6 @@
--- ---
id: best id: best
title: "Best Practices" title: 'Best Practices'
--- ---
The following guide is a list of the best practices collected and that we usually recommend to all users. Do not take this guide as The following guide is a list of the best practices collected and that we usually recommend to all users. Do not take this guide as
@ -74,9 +74,6 @@ There's two options here:
This way your package will be used until its original maintainer updates his public package to `0.1.3`. This way your package will be used until its original maintainer updates his public package to `0.1.3`.
## Security ## Security
The security starts in your environment, for such thing we totally recommend read **[10 npm Security Best Practices](https://snyk.io/blog/ten-npm-security-best-practices/)** and follow the recommendation. The security starts in your environment, for such thing we totally recommend read **[10 npm Security Best Practices](https://snyk.io/blog/ten-npm-security-best-practices/)** and follow the recommendation.

View file

@ -1,6 +1,6 @@
--- ---
id: caching id: caching
title: "Caching strategies" title: 'Caching strategies'
--- ---
Verdaccio caches all packages by default into the `/storage` folder. But you can decide whether you want to follow Verdaccio caches all packages by default into the `/storage` folder. But you can decide whether you want to follow
@ -10,15 +10,14 @@ a different strategy. Using of plugins you might use the cloud or any sort of da
## Caching scenarios ## Caching scenarios
* Build a Node.js project on **Continous Integration** (Bamboo, GitLab, Jenkins, etc) servers is a task that might take several times at a day, thus, the server will download tons of tarballs from the registry every time takes place. As usual, the CI tools clear the cache after each build and the process start over and over again. That is a waste of bandwidth and reduces the external traffic. - Build a Node.js project on **Continous Integration** (Bamboo, GitLab, Jenkins, etc) servers is a task that might take several times at a day, thus, the server will download tons of tarballs from the registry every time takes place. As usual, the CI tools clear the cache after each build and the process start over and over again. That is a waste of bandwidth and reduces the external traffic.
**You can use Verdaccio for caching tarballs and metadata in our internal network and give a boost in your build time.** **You can use Verdaccio for caching tarballs and metadata in our internal network and give a boost in your build time.**
* **Latency and Connectivity**, not all countries enjoy a high-speed connection. For such reason cache packages locally in your network - **Latency and Connectivity**, not all countries enjoy a high-speed connection. For such reason cache packages locally in your network
is really handy. Either if you are traveling, or have a weak connection, roaming or countries with strong Firewalls that might affect the user experience (eg: corrupting tarballs). is really handy. Either if you are traveling, or have a weak connection, roaming or countries with strong Firewalls that might affect the user experience (eg: corrupting tarballs).
* **Offline Mode**, all Node Package Managers nowadays uses their own internal cache, but it common that different projects might use - **Offline Mode**, all Node Package Managers nowadays uses their own internal cache, but it common that different projects might use
different tools, which implies lock files and so on. Those tools are unable to share cache, the unique solution is centralized and relies on different tools, which implies lock files and so on. Those tools are unable to share cache, the unique solution is centralized and relies on
a proxy registry, Verdaccio cache all metadata and tarballs are downloaded by demand being able to share them across all your project. a proxy registry, Verdaccio cache all metadata and tarballs are downloaded by demand being able to share them across all your project.
* Avoid that any remote registry suddenly returns *HTTP 404* error for tarballs were previously available a.k.a ([left-pad issue](https://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/)). - Avoid that any remote registry suddenly returns _HTTP 404_ error for tarballs were previously available a.k.a ([left-pad issue](https://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/)).
# Strategies for faster builds # Strategies for faster builds
@ -50,7 +49,6 @@ uplinks:
Increasing the value of `maxage` in each `uplink` remotes will be asked less frequently. This might be a valid strategy if Increasing the value of `maxage` in each `uplink` remotes will be asked less frequently. This might be a valid strategy if
you don't update dependencies so often. you don't update dependencies so often.
## Using the memory instead the hardrive ## Using the memory instead the hardrive
Sometimes caching packages is not a critical step, rather than route packages from different registries and achieving Sometimes caching packages is not a critical step, rather than route packages from different registries and achieving

View file

@ -1,19 +1,17 @@
--- ---
id: chef id: chef
title: "Chef Cookbook" title: 'Chef Cookbook'
--- ---
Using Chef Cookbook for Verdaccio Using Chef Cookbook for Verdaccio
For further information: For further information:
* [https://github.com/verdaccio/verdaccio-cookbook](https://github.com/verdaccio/verdaccio-cookbook) - [https://github.com/verdaccio/verdaccio-cookbook](https://github.com/verdaccio/verdaccio-cookbook)
* [https://supermarket.chef.io/cookbooks/verdaccio](https://supermarket.chef.io/cookbooks/verdaccio) - [https://supermarket.chef.io/cookbooks/verdaccio](https://supermarket.chef.io/cookbooks/verdaccio)
<div id="codefund">''</div> <div id="codefund">''</div>
> We are looking for contributors for this repository, if you are interested please notify the author via tickets. > We are looking for contributors for this repository, if you are interested please notify the author via tickets.
Author: [Keli Grubb](https://github.com/kgrubb) && Barthelemy Vessemont. Author: [Keli Grubb](https://github.com/kgrubb) && Barthelemy Vessemont.

View file

@ -1,6 +1,6 @@
--- ---
id: ci id: ci
title: "Continuous Integration" title: 'Continuous Integration'
--- ---
Verdaccio can be used with continuous integration (CI) platforms to install or publish packages. Verdaccio can be used with continuous integration (CI) platforms to install or publish packages.

View file

@ -1,6 +1,6 @@
--- ---
id: cli id: cli
title: "Command Line Tool" title: 'Command Line Tool'
--- ---
The verdaccio CLI is your go start the application. The verdaccio CLI is your go start the application.
@ -11,15 +11,15 @@ The verdaccio CLI is your go start the application.
verdaccio --listen 4000 --config ~./config.yaml verdaccio --listen 4000 --config ~./config.yaml
``` ```
Command | Default | Example | Description | Command | Default | Example | Description |
--- | --- | --- | --- | ----------------- | ------------------------------ | -------------- | ------------------------------------ |
--listen \ **-l** | 4873 | -p 7000 | http port | --listen \ **-l** | 4873 | -p 7000 | http port |
--config \ **-c** | ~/.local/verdaccio/config.yaml | ~./config.yaml | the configuration file | --config \ **-c** | ~/.local/verdaccio/config.yaml | ~./config.yaml | the configuration file |
--info \ **-i** | | | prints local environment information | --info \ **-i** | | | prints local environment information |
## Default config file location ## Default config file location
To locate the home directory, we rely on **$XDG_DATA_HOME** as a first choice and Windows environment we look for [APPDATA environment variable](https://www.howtogeek.com/318177/what-is-the-appdata-folder-in-windows/). To locate the home directory, we rely on **\$XDG_DATA_HOME** as a first choice and Windows environment we look for [APPDATA environment variable](https://www.howtogeek.com/318177/what-is-the-appdata-folder-in-windows/).
## Config file format ## Config file format
@ -27,7 +27,7 @@ Config file should be YAML, JSON or NodeJS module. YAML format is detected by pa
## Default storage location ## Default storage location
We use **$XDG_DATA_HOME** environment variable as default to locate the storage by default which [should be the same](https://askubuntu.com/questions/538526/is-home-local-share-the-default-value-for-xdg-data-home-in-ubuntu-14-04) as $HOME/.local/share. We use **\$XDG_DATA_HOME** environment variable as default to locate the storage by default which [should be the same](https://askubuntu.com/questions/538526/is-home-local-share-the-default-value-for-xdg-data-home-in-ubuntu-14-04) as \$HOME/.local/share.
If you are using a custom storage, this location is irrelevant. If you are using a custom storage, this location is irrelevant.
## Default database file location ## Default database file location

View file

@ -1,6 +1,6 @@
--- ---
id: configuration id: configuration
title: "Configuration File" title: 'Configuration File'
--- ---
This file is the cornerstone of verdaccio where you can modify the default behaviour, enable plugins and extend features. This file is the cornerstone of verdaccio where you can modify the default behaviour, enable plugins and extend features.
@ -86,6 +86,7 @@ security:
verify: verify:
someProp: [value] someProp: [value]
``` ```
> We highly recommend move to JWT since legacy signature (`aes192`) is deprecated and will disappear in future versions. > We highly recommend move to JWT since legacy signature (`aes192`) is deprecated and will disappear in future versions.
### Server ### Server
@ -93,15 +94,14 @@ security:
A set of properties to modify the behavior of the server application, specifically the API (Express.js). A set of properties to modify the behavior of the server application, specifically the API (Express.js).
> You can specify HTTP/1.1 server keep alive timeout in seconds for incomming connections. > You can specify HTTP/1.1 server keep alive timeout in seconds for incomming connections.
A value of 0 makes the http server behave similarly to Node.js versions prior to 8.0.0, which did not have a keep-alive timeout. > A value of 0 makes the http server behave similarly to Node.js versions prior to 8.0.0, which did not have a keep-alive timeout.
WORKAROUND: Through given configuration you can workaround following issue https://github.com/verdaccio/verdaccio/issues/301. Set to 0 in case 60 is not enough. > WORKAROUND: Through given configuration you can workaround following issue https://github.com/verdaccio/verdaccio/issues/301. Set to 0 in case 60 is not enough.
```yaml ```yaml
server: server:
keepAliveTimeout: 60 keepAliveTimeout: 60
``` ```
### Web UI ### Web UI
This property allow you to modify the look and feel of the web UI. For more information about this section read the [web ui page](web.md). This property allow you to modify the look and feel of the web UI. For more information about this section read the [web ui page](web.md).
@ -118,7 +118,6 @@ web:
Uplinks is the ability of the system to fetch packages from remote registries when those packages are not available locally. For more information about this section read the [uplinks page](uplinks.md). Uplinks is the ability of the system to fetch packages from remote registries when those packages are not available locally. For more information about this section read the [uplinks page](uplinks.md).
```yaml ```yaml
uplinks: uplinks:
npmjs: npmjs:
@ -129,7 +128,6 @@ uplinks:
Packages allow the user to control how the packages are gonna be accessed. For more information about this section read the [packages page](packages.md). Packages allow the user to control how the packages are gonna be accessed. For more information about this section read the [packages page](packages.md).
```yaml ```yaml
packages: packages:
'@*/*': '@*/*':
@ -142,7 +140,7 @@ packages:
### Offline Publish ### Offline Publish
By default `verdaccio` does not allow to publish when the client is offline, that behavior can be overridden by setting this to *true*. By default `verdaccio` does not allow to publish when the client is offline, that behavior can be overridden by setting this to _true_.
```yaml ```yaml
publish: publish:
@ -183,8 +181,7 @@ listen:
### HTTPS ### HTTPS
To enable `https` in `verdaccio` it's enough to set the `listen` flag with the protocol *https://*. For more information about this section read the [ssl page](ssl.md). To enable `https` in `verdaccio` it's enough to set the `listen` flag with the protocol _https://_. For more information about this section read the [ssl page](ssl.md).
```yaml ```yaml
https: https:
@ -226,10 +223,8 @@ notify:
content: '{"color":"green","message":"New package published: * {{ name }}*","notify":true,"message_format":"text"}' content: '{"color":"green","message":"New package published: * {{ name }}*","notify":true,"message_format":"text"}'
``` ```
> For more detailed configuration settings, please [check the source code](https://github.com/verdaccio/verdaccio/tree/master/conf). > For more detailed configuration settings, please [check the source code](https://github.com/verdaccio/verdaccio/tree/master/conf).
### Audit ### Audit
<small>Since: `verdaccio@3.0.0`</small> <small>Since: `verdaccio@3.0.0`</small>

View file

@ -1,15 +1,15 @@
--- ---
id: dev-plugins id: dev-plugins
title: "Developing Plugins" title: 'Developing Plugins'
--- ---
There are many ways to extend `verdaccio`, the kind of plugins supported are: There are many ways to extend `verdaccio`, the kind of plugins supported are:
* [Authentication](plugin-auth.md) - [Authentication](plugin-auth.md)
* [Middleware](plugin-middleware.md) - [Middleware](plugin-middleware.md)
* [Storage](plugin-storage.md) - [Storage](plugin-storage.md)
* Theme - Theme
* Filter plugins - Filter plugins
> We recommend developing plugins using our [Typescript type definitions](https://github.com/verdaccio/monorepo/tree/master/core/types). > We recommend developing plugins using our [Typescript type definitions](https://github.com/verdaccio/monorepo/tree/master/core/types).
@ -19,7 +19,6 @@ There are many ways to extend `verdaccio`, the kind of plugins supported are:
The following plugins are valid and in process of incubation. The following plugins are valid and in process of incubation.
## Theme Plugin ## Theme Plugin
The plugin must return a function that returns a **string**. The string should be the absolute location of the root of your user interface. The plugin must return a function that returns a **string**. The string should be the absolute location of the root of your user interface.
@ -38,27 +37,23 @@ It is imporant that the name of the plugin **must start with `verdaccio-theme-`
### Theme Example ### Theme Example
* [@verdaccio/ui-theme](https://github.com/verdaccio/ui): The default Verdaccio theme based in React.js. - [@verdaccio/ui-theme](https://github.com/verdaccio/ui): The default Verdaccio theme based in React.js.
## Filter Plugin ## Filter Plugin
Since [`4.1.0`](https://github.com/verdaccio/verdaccio/pull/1313) Since [`4.1.0`](https://github.com/verdaccio/verdaccio/pull/1313)
Filter plugins were introduced due a [request](https://github.com/verdaccio/verdaccio/issues/818) in order Filter plugins were introduced due a [request](https://github.com/verdaccio/verdaccio/issues/818) in order
to be able to filter metadata from uplinks. to be able to filter metadata from uplinks.
More [info in the PR](https://github.com/verdaccio/verdaccio/pull/1161). More [info in the PR](https://github.com/verdaccio/verdaccio/pull/1161).
```yaml ```yaml
filters: filters:
storage-filter-blackwhitelist: storage-filter-blackwhitelist:
filter_file: /path/to/file filter_file: /path/to/file
``` ```
### API ### API
The method `filter_metadata` will allow you to filter metadata that comes from any uplink, it is `Promise` based The method `filter_metadata` will allow you to filter metadata that comes from any uplink, it is `Promise` based

View file

@ -3,8 +3,7 @@ id: docker
title: Docker title: Docker
--- ---
![alt Docker Pulls Count](https://dockeri.co/image/verdaccio/verdaccio "Docker Pulls Count") ![alt Docker Pulls Count](https://dockeri.co/image/verdaccio/verdaccio 'Docker Pulls Count')
To pull the latest pre-built [docker image](https://hub.docker.com/r/verdaccio/verdaccio/): To pull the latest pre-built [docker image](https://hub.docker.com/r/verdaccio/verdaccio/):
@ -25,6 +24,7 @@ For a major version:
```bash ```bash
docker pull verdaccio/verdaccio:4 docker pull verdaccio/verdaccio:4
``` ```
For a minor version: For a minor version:
```bash ```bash
@ -52,7 +52,6 @@ The above line will pull the latest prebuilt image from dockerhub, if you haven'
If you have [build an image locally](#build-your-own-docker-image) use `verdaccio` as the last argument. If you have [build an image locally](#build-your-own-docker-image) use `verdaccio` as the last argument.
You can use `-v` to bind mount `conf`, `storage` and `plugins` to the hosts filesystem: You can use `-v` to bind mount `conf`, `storage` and `plugins` to the hosts filesystem:
```bash ```bash
@ -65,23 +64,22 @@ V_PATH=/path/for/verdaccio; docker run -it --rm --name verdaccio \
``` ```
> Note: Verdaccio runs as a non-root user (uid=10001) inside the container, if you use bind mount to override default, > Note: Verdaccio runs as a non-root user (uid=10001) inside the container, if you use bind mount to override default,
you need to make sure the mount directory is assigned to the right user. In above example, you need to run `sudo chown -R 10001:65533 /opt/verdaccio` otherwise > you need to make sure the mount directory is assigned to the right user. In above example, you need to run `sudo chown -R 10001:65533 /opt/verdaccio` otherwise
you will get permission errors at runtime. > you will get permission errors at runtime.
[Use docker volume](https://docs.docker.com/storage/volumes/) is recommended over using bind mount. > [Use docker volume](https://docs.docker.com/storage/volumes/) is recommended over using bind mount.
Verdaccio 4 provides a new set of environment variables to modify either permissions, port or http protocol. Here the complete list: Verdaccio 4 provides a new set of environment variables to modify either permissions, port or http protocol. Here the complete list:
Property | default | Description | Property | default | Description |
--- | --- | --- | ------------------- | ---------------- | -------------------------------------------------- |
VERDACCIO_APPDIR | `/opt/verdaccio` | the docker working directory | VERDACCIO_APPDIR | `/opt/verdaccio` | the docker working directory |
VERDACCIO_USER_NAME | `verdaccio` | the system user | VERDACCIO_USER_NAME | `verdaccio` | the system user |
VERDACCIO_USER_UID | `10001` | the user id being used to apply folder permissions | VERDACCIO_USER_UID | `10001` | the user id being used to apply folder permissions |
VERDACCIO_PORT | `4873` | the verdaccio port | VERDACCIO_PORT | `4873` | the verdaccio port |
VERDACCIO_PROTOCOL | `http` | the default http protocol | VERDACCIO_PROTOCOL | `http` | the default http protocol |
### Plugins ### Plugins
Plugins can be installed in a separate directory and mounted using Docker or Kubernetes, however make sure you build plugins with native dependencies using the same base image as the Verdaccio Dockerfile. Plugins can be installed in a separate directory and mounted using Docker or Kubernetes, however make sure you build plugins with native dependencies using the same base image as the Verdaccio Dockerfile.
```docker ```docker
@ -97,6 +95,7 @@ USER verdaccio
``` ```
### Docker and custom port configuration ### Docker and custom port configuration
Any `host:port` configured in `conf/config.yaml` under `listen` **is currently ignored when using docker**. Any `host:port` configured in `conf/config.yaml` under `listen` **is currently ignored when using docker**.
If you want to reach Verdaccio docker instance under different port, lets say `5000` If you want to reach Verdaccio docker instance under different port, lets say `5000`
@ -111,6 +110,7 @@ V_PATH=/path/for/verdaccio; docker run -it --rm --name verdaccio \
Of course the numbers you give to `-p` paremeter need to match. Of course the numbers you give to `-p` paremeter need to match.
### Using HTTPS with Docker ### Using HTTPS with Docker
You can configure the protocol verdaccio is going to listen on, similarly to the port configuration. You can configure the protocol verdaccio is going to listen on, similarly to the port configuration.
You have to overwrite the default value("http") of the `PROTOCOL` environment variable to "https", after you specified the certificates in the config.yaml. You have to overwrite the default value("http") of the `PROTOCOL` environment variable to "https", after you specified the certificates in the config.yaml.
@ -131,24 +131,23 @@ $ docker-compose up --build
You can set the port to use (for both container and host) by prefixing the above command with `VERDACCIO_PORT=5000`. You can set the port to use (for both container and host) by prefixing the above command with `VERDACCIO_PORT=5000`.
```yaml ```yaml
version: '3.1' version: '3.1'
services: services:
verdaccio: verdaccio:
image: verdaccio/verdaccio image: verdaccio/verdaccio
container_name: "verdaccio" container_name: 'verdaccio'
networks: networks:
- node-network - node-network
environment: environment:
- VERDACCIO_PORT=4873 - VERDACCIO_PORT=4873
ports: ports:
- "4873:4873" - '4873:4873'
volumes: volumes:
- "./storage:/verdaccio/storage" - './storage:/verdaccio/storage'
- "./config:/verdaccio/conf" - './config:/verdaccio/conf'
- "./plugins:/verdaccio/plugins" - './plugins:/verdaccio/plugins'
networks: networks:
node-network: node-network:
driver: bridge driver: bridge
@ -197,13 +196,13 @@ There is a separate repository that hosts multiple configurations to compose Doc
> If you have made an image based on Verdaccio, feel free to add it to this list. > If you have made an image based on Verdaccio, feel free to add it to this list.
* [docker-verdaccio-gitlab](https://github.com/snics/docker-verdaccio-gitlab) - [docker-verdaccio-gitlab](https://github.com/snics/docker-verdaccio-gitlab)
* [docker-verdaccio](https://github.com/deployable/docker-verdaccio) - [docker-verdaccio](https://github.com/deployable/docker-verdaccio)
* [docker-verdaccio-s3](https://github.com/asynchrony/docker-verdaccio-s3) Private NPM container that can backup to s3 - [docker-verdaccio-s3](https://github.com/asynchrony/docker-verdaccio-s3) Private NPM container that can backup to s3
* [docker-verdaccio-ldap](https://github.com/snadn/docker-verdaccio-ldap) - [docker-verdaccio-ldap](https://github.com/snadn/docker-verdaccio-ldap)
* [verdaccio-ldap](https://github.com/nathantreid/verdaccio-ldap) - [verdaccio-ldap](https://github.com/nathantreid/verdaccio-ldap)
* [verdaccio-compose-local-bridge](https://github.com/shingtoli/verdaccio-compose-local-bridge) - [verdaccio-compose-local-bridge](https://github.com/shingtoli/verdaccio-compose-local-bridge)
* [docker-verdaccio](https://github.com/Global-Solutions/docker-verdaccio) - [docker-verdaccio](https://github.com/Global-Solutions/docker-verdaccio)
* [verdaccio-docker](https://github.com/idahobean/verdaccio-docker) - [verdaccio-docker](https://github.com/idahobean/verdaccio-docker)
* [verdaccio-server](https://github.com/andru255/verdaccio-server) - [verdaccio-server](https://github.com/andru255/verdaccio-server)
* [coldrye-debian-verdaccio](https://github.com/coldrye-docker/coldrye-debian-verdaccio) docker image providing verdaccio from coldrye-debian-nodejs. - [coldrye-debian-verdaccio](https://github.com/coldrye-docker/coldrye-debian-verdaccio) docker image providing verdaccio from coldrye-debian-nodejs.

View file

@ -1,6 +1,6 @@
--- ---
id: e2e id: e2e
title: "End to End testing" title: 'End to End testing'
--- ---
Some projects organize packages in multi-packages repositories or [monorepos](https://github.com/babel/babel/blob/master/doc/design/monorepo.md). E2E testing is a topic that usually is only relevant for User Interfaces, but from a Node.js perspective, **publishing packages also need to be tested**. Some projects organize packages in multi-packages repositories or [monorepos](https://github.com/babel/babel/blob/master/doc/design/monorepo.md). E2E testing is a topic that usually is only relevant for User Interfaces, but from a Node.js perspective, **publishing packages also need to be tested**.
@ -12,9 +12,9 @@ Some projects organize packages in multi-packages repositories or [monorepos](ht
Such approach has been really hard to achieve considering: Such approach has been really hard to achieve considering:
* Populate canary packages on public services seems not to be a good idea - Populate canary packages on public services seems not to be a good idea
* Some self-hosted OSS registries are too heavy - Some self-hosted OSS registries are too heavy
* Offline environments (private networks) - Offline environments (private networks)
**Verdaccio** is a lightweight registry with zero-configuration that **fits perfectly in any E2E + CI workflow**. **Verdaccio** is a lightweight registry with zero-configuration that **fits perfectly in any E2E + CI workflow**.
@ -25,7 +25,7 @@ the following thread [clicking here](https://stackoverflow.com/a/50222427/308341
### Example using Bash ### Example using Bash
This is the most simple example using Verdaccio in a bash script (extracted from *create-react-app*). This is the most simple example using Verdaccio in a bash script (extracted from _create-react-app_).
```bash ```bash
#!/bin/sh #!/bin/sh
@ -47,25 +47,18 @@ sh -c "npm-auth-to-token -u test -p test -e test@test.com -r $local_registry"
sh -c "npm --registry $local_registry publish" sh -c "npm --registry $local_registry publish"
``` ```
## Who is using it for E2E? ## Who is using it for E2E?
* [create-react-app](https://github.com/facebook/create-react-app/blob/master/CONTRIBUTING.md#contributing-to-e2e-end-to-end-tests) *(+73.5k ⭐️)* - [create-react-app](https://github.com/facebook/create-react-app/blob/master/CONTRIBUTING.md#contributing-to-e2e-end-to-end-tests) _(+73.5k ⭐️)_
* [Storybook](https://github.com/storybooks/storybook) *(+44k ⭐️)* - [Storybook](https://github.com/storybooks/storybook) _(+44k ⭐️)_
* [Gatsby](https://github.com/gatsbyjs/gatsby) *(+40k ⭐️) - [Gatsby](https://github.com/gatsbyjs/gatsby) \*(+40k ⭐️)
* [Babel.js](https://github.com/babel/babel) *(+35k ⭐️)* - [Babel.js](https://github.com/babel/babel) _(+35k ⭐️)_
* [Uppy](https://github.com/transloadit/uppy) *(+21k ⭐️)* - [Uppy](https://github.com/transloadit/uppy) _(+21k ⭐️)_
* [Aurelia Framework](https://github.com/aurelia) *(+12k ⭐️)* - [Aurelia Framework](https://github.com/aurelia) _(+12k ⭐️)_
* [ethereum/web3.js](https://github.com/ethereum/web3.js) *(+8k ⭐️)* - [ethereum/web3.js](https://github.com/ethereum/web3.js) _(+8k ⭐️)_
* [bit](https://github.com/teambit/bit) *(+6k ⭐️)* - [bit](https://github.com/teambit/bit) _(+6k ⭐️)_
* [pnpm](https://github.com/pnpm/pnpm) *(+6k ⭐️)* - [pnpm](https://github.com/pnpm/pnpm) _(+6k ⭐️)_
* [Mozilla Neutrino](https://github.com/neutrinojs/neutrino) *(+3k ⭐️)* - [Mozilla Neutrino](https://github.com/neutrinojs/neutrino) _(+3k ⭐️)_
* [Embark](https://embark.status.im/) *(+3k ⭐️)* - [Embark](https://embark.status.im/) _(+3k ⭐️)_
* [Hyperledger Composer](https://github.com/hyperledger/composer) *(+1.6k ⭐️)* - [Hyperledger Composer](https://github.com/hyperledger/composer) _(+1.6k ⭐️)_
* [Wix Yoshi](https://github.com/wix/yoshi) - [Wix Yoshi](https://github.com/wix/yoshi)

View file

@ -1,6 +1,6 @@
--- ---
id: github-actions id: github-actions
title: "Github Actions" title: 'Github Actions'
--- ---
With [GitHub Actions](https://github.com/features/actions) you can automate your workflow, each GitHub Action performs a specific step in a process. With [GitHub Actions](https://github.com/features/actions) you can automate your workflow, each GitHub Action performs a specific step in a process.

View file

@ -1,6 +1,6 @@
--- ---
id: google-cloud id: google-cloud
title: "Google Cloud" title: 'Google Cloud'
--- ---
dsadsa dsadsa

View file

@ -1,36 +1,36 @@
--- ---
id: iss-server id: iss-server
title: "Installing on IIS server" title: 'Installing on IIS server'
--- ---
These instructions were written for Windows Server 2016, IIS 10, [Node.js 10.15.0](https://nodejs.org/), [iisnode 0.2.26](https://github.com/Azure/iisnode) and [verdaccio 3.11.0](https://github.com/verdaccio/verdaccio). These instructions were written for Windows Server 2016, IIS 10, [Node.js 10.15.0](https://nodejs.org/), [iisnode 0.2.26](https://github.com/Azure/iisnode) and [verdaccio 3.11.0](https://github.com/verdaccio/verdaccio).
* Install IIS Install [iisnode](https://github.com/Azure/iisnode). - Install IIS Install [iisnode](https://github.com/Azure/iisnode).
Make sure you install prerequisites (Url Rewrite Module & node) as explained in the instructions for iisnode. Make sure you install prerequisites (Url Rewrite Module & node) as explained in the instructions for iisnode.
* Create a new folder in Explorer where you want to host verdaccio. - Create a new folder in Explorer where you want to host verdaccio.
For example `C:\verdaccio`. For example `C:\verdaccio`.
Save [package.json](#packagejson), Save [package.json](#packagejson),
[start.js](#startjs) [start.js](#startjs)
and [web.config](#webconfig) in this folder. and [web.config](#webconfig) in this folder.
* Create a new site in Internet Information Services Manager. You can name it whatever you want. - Create a new site in Internet Information Services Manager. You can name it whatever you want.
I'll call it verdaccio in these [instructions](http://www.iis.net/learn/manage/configuring-security/application-pool-identities). Specify the path to where you saved all files and a port number. I'll call it verdaccio in these [instructions](http://www.iis.net/learn/manage/configuring-security/application-pool-identities). Specify the path to where you saved all files and a port number.
* Go back to Explorer and give the user that runs the application pool modify rights to the folder you just created. If you've named the new site verdaccio and did not change the app pool, it's running under an ApplicationPoolIdentity and you should give the user IIS AppPool\verdaccio modify rights see instructions if you need help. (You can restrict access later if you want so that it only has modify rights on the iisnode and verdaccio\storage) - Go back to Explorer and give the user that runs the application pool modify rights to the folder you just created. If you've named the new site verdaccio and did not change the app pool, it's running under an ApplicationPoolIdentity and you should give the user IIS AppPool\verdaccio modify rights see instructions if you need help. (You can restrict access later if you want so that it only has modify rights on the iisnode and verdaccio\storage)
* Start a command prompt and execute the commands below to download verdaccio: - Start a command prompt and execute the commands below to download verdaccio:
```` ```
cd c:\verdaccio cd c:\verdaccio
npm install npm install
```` ```
* Make sure you have an inbound rule accepting TCP traffic to the port in Windows Firewall - Make sure you have an inbound rule accepting TCP traffic to the port in Windows Firewall
* Thats it! Now you can navigate to the host and port that you specified - Thats it! Now you can navigate to the host and port that you specified
<div id="codefund">''</div> <div id="codefund">''</div>
I wanted the `verdaccio` site to be the default site in IIS so I did the following: I wanted the `verdaccio` site to be the default site in IIS so I did the following:
* I stopped the "Default Web Site" and only start the site "verdaccio" site in IIS - I stopped the "Default Web Site" and only start the site "verdaccio" site in IIS
* I set the bindings to "http", ip address "All Unassigned" on port 80, ok any warning or prompts - I set the bindings to "http", ip address "All Unassigned" on port 80, ok any warning or prompts
These instructions are based on [Host Sinopia in IIS These instructions are based on [Host Sinopia in IIS
on Windows](https://gist.github.com/HCanber/4dd8409f79991a09ac75). I had to tweak my web config as per below but you may find the original from the on Windows](https://gist.github.com/HCanber/4dd8409f79991a09ac75). I had to tweak my web config as per below but you may find the original from the
@ -40,7 +40,7 @@ A default configuration file will be created `c:\verdaccio\verdaccio\config.yaml
### package.json ### package.json
````json ```json
{ {
"name": "iisnode-verdaccio", "name": "iisnode-verdaccio",
"version": "1.0.0", "version": "1.0.0",
@ -50,25 +50,25 @@ A default configuration file will be created `c:\verdaccio\verdaccio\config.yaml
"verdaccio": "^3.11.0" "verdaccio": "^3.11.0"
} }
} }
```` ```
### start.js ### start.js
````bash ```bash
process.argv.push('-l', 'unix:' + process.env.PORT, '-c', './config.yaml'); process.argv.push('-l', 'unix:' + process.env.PORT, '-c', './config.yaml');
require('./node_modules/verdaccio/build/lib/cli.js'); require('./node_modules/verdaccio/build/lib/cli.js');
```` ```
### Alternate start.js for Verdaccio versions < v3.0 ### Alternate start.js for Verdaccio versions < v3.0
````bash ```bash
process.argv.push('-l', 'unix:' + process.env.PORT); process.argv.push('-l', 'unix:' + process.env.PORT);
require('./node_modules/verdaccio/src/lib/cli.js'); require('./node_modules/verdaccio/src/lib/cli.js');
```` ```
### web.config ### web.config
````xml ```xml
<configuration> <configuration>
<system.webServer> <system.webServer>
<modules> <modules>
@ -115,8 +115,9 @@ require('./node_modules/verdaccio/src/lib/cli.js');
</system.webServer> </system.webServer>
</configuration> </configuration>
```` ```
### Troubleshooting ### Troubleshooting
- **The web interface does not load when hosted with https as it tries to download scripts over http.** - **The web interface does not load when hosted with https as it tries to download scripts over http.**
Make sure that you have correctly mentioned `url_prefix` in verdaccio config. Follow the [discussion](https://github.com/verdaccio/verdaccio/issues/622). Make sure that you have correctly mentioned `url_prefix` in verdaccio config. Follow the [discussion](https://github.com/verdaccio/verdaccio/issues/622).

View file

@ -1,6 +1,6 @@
--- ---
id: installation id: installation
title: "Installation" title: 'Installation'
--- ---
Verdaccio is a multiplatform web application. To install it, you need a few basic prerequisites. Verdaccio is a multiplatform web application. To install it, you need a few basic prerequisites.
@ -9,7 +9,7 @@ Verdaccio is a multiplatform web application. To install it, you need a few basi
1. Node higher Node `10.x` (LTS "Carbon") is the minimum supported version. 1. Node higher Node `10.x` (LTS "Carbon") is the minimum supported version.
> After v4.5.0 *Node.js v10* is now the minimum supported version. If you cannot upgrade *Node.js v8*, keep using `v4.4.4`. > After v4.5.0 _Node.js v10_ is now the minimum supported version. If you cannot upgrade _Node.js v8_, keep using `v4.4.4`.
2. npm `>=5.x` or, `pnpm` or `yarn` 2. npm `>=5.x` or, `pnpm` or `yarn`
> We highly recommend to use the latest Node Package Managers clients `> npm@6.x | yarn@1.x | pnpm@4.x` > We highly recommend to use the latest Node Package Managers clients `> npm@6.x | yarn@1.x | pnpm@4.x`
@ -28,6 +28,7 @@ Using `npm`
```bash ```bash
npm install -g verdaccio npm install -g verdaccio
``` ```
or using `yarn` or using `yarn`
```bash ```bash
@ -36,7 +37,6 @@ yarn global add verdaccio
![install verdaccio](assets/install_verdaccio.gif) ![install verdaccio](assets/install_verdaccio.gif)
## Basic Usage ## Basic Usage
Once it has been installed, you only need to execute the CLI command: Once it has been installed, you only need to execute the CLI command:
@ -55,7 +55,7 @@ You can set the registry by using the following command.
npm set registry http://localhost:4873/ npm set registry http://localhost:4873/
``` ```
you can pass a ``--registry`` flag when needed. you can pass a `--registry` flag when needed.
```bash ```bash
npm install --registry http://localhost:4873 npm install --registry http://localhost:4873
@ -98,4 +98,3 @@ docker run -it --rm --name verdaccio -p 4873:4873 verdaccio/verdaccio
`verdaccio` is also available as a 1-click install on [Cloudron](https://cloudron.io) `verdaccio` is also available as a 1-click install on [Cloudron](https://cloudron.io)
[![Install](https://cloudron.io/img/button.svg)](https://cloudron.io/button.html?app=org.eggertsson.verdaccio) [![Install](https://cloudron.io/img/button.svg)](https://cloudron.io/button.html?app=org.eggertsson.verdaccio)

View file

@ -1,6 +1,6 @@
--- ---
id: kubernetes id: kubernetes
title: "Kubernetes" title: 'Kubernetes'
--- ---
You can find instructions to deploy Verdaccio on a Kubernetes cluster on the You can find instructions to deploy Verdaccio on a Kubernetes cluster on the
@ -63,10 +63,9 @@ helm del --purge npm
**Note:** this command delete all the resources, including packages that you may **Note:** this command delete all the resources, including packages that you may
have previously published to the registry. have previously published to the registry.
### Custom Verdaccio configuration ### Custom Verdaccio configuration
You can customize the Verdaccio configuration using a Kubernetes *configMap*. You can customize the Verdaccio configuration using a Kubernetes _configMap_.
#### Prepare #### Prepare
@ -108,4 +107,4 @@ helm install --name npm --set customConfigMap=verdaccio-config verdaccio/verdacc
[Rancher](http://rancher.com/) is a complete container management platform that makes managing and using containers in production really easy. [Rancher](http://rancher.com/) is a complete container management platform that makes managing and using containers in production really easy.
* [verdaccio-rancher](https://github.com/lgaticaq/verdaccio-rancher) - [verdaccio-rancher](https://github.com/lgaticaq/verdaccio-rancher)

View file

@ -1,6 +1,6 @@
--- ---
id: linking-remote-registry id: linking-remote-registry
title: "Linking a Remote Registry" title: 'Linking a Remote Registry'
--- ---
Verdaccio is a proxy and by default [links](uplinks.md) the public registry. Verdaccio is a proxy and by default [links](uplinks.md) the public registry.
@ -27,10 +27,10 @@ registry=https://registry.npmjs.org
This approach is valid, but comes with several disadvantages: This approach is valid, but comes with several disadvantages:
* It **only works with scopes** - It **only works with scopes**
* Scope must match, **no Regular Expressions are allowed** - Scope must match, **no Regular Expressions are allowed**
* One scope **cannot fetch from multiple registries** - One scope **cannot fetch from multiple registries**
* Tokens/passwords **must be defined within** `.npmrc` and checked in into the repo. - Tokens/passwords **must be defined within** `.npmrc` and checked in into the repo.
See a full example [here](https://stackoverflow.com/questions/54543979/npmrc-multiple-registries-for-the-same-scope/54550940#54550940). See a full example [here](https://stackoverflow.com/questions/54543979/npmrc-multiple-registries-for-the-same-scope/54550940#54550940).
@ -80,7 +80,6 @@ Having a full Offline Registry is completely possible. If you don't want any con
can do the following. can do the following.
```yaml ```yaml
auth: auth:
htpasswd: htpasswd:
file: ./htpasswd file: ./htpasswd

View file

@ -1,6 +1,6 @@
--- ---
id: logger id: logger
title: "Logger" title: 'Logger'
--- ---
As any web application, verdaccio has a customisable built-in logger. You can define multiple types of outputs. As any web application, verdaccio has a customisable built-in logger. You can define multiple types of outputs.
@ -22,9 +22,9 @@ Note: Rotating log stream is not supported in cluster mode. [See here](https://g
### Configuration ### Configuration
Property | Type | Required | Example | Support | Description | Property | Type | Required | Example | Support | Description |
--- | --- | --- | --- | --- | --- | -------- | ------ | -------- | ---------------------------------------------- | ------- | ------------------------------------------------- |
type | string | No | [stdout, file] | all | define the output | type | string | No | [stdout, file] | all | define the output |
path | string | No | verdaccio.log | all | if type is file, define the location of that file | path | string | No | verdaccio.log | all | if type is file, define the location of that file |
format | string | No | [pretty, pretty-timestamped] | all | output format | format | string | No | [pretty, pretty-timestamped] | all | output format |
level | string | No | [fatal, error, warn, http, info, debug, trace] | all | verbose level | level | string | No | [fatal, error, warn, http, info, debug, trace] | all | verbose level |

View file

@ -1,22 +1,22 @@
--- ---
id: logo id: logo
title: "Logotype" title: 'Logotype'
--- ---
The logotype was designed by __[Breno Rodrigues](https://github.com/rodriguesbreno)__ which The logotype was designed by **[Breno Rodrigues](https://github.com/rodriguesbreno)** which
won the [contest](https://github.com/verdaccio/verdaccio/issues/237) won the [contest](https://github.com/verdaccio/verdaccio/issues/237)
([last stage](https://github.com/verdaccio/verdaccio/issues/328)) and donated his work to this project. ([last stage](https://github.com/verdaccio/verdaccio/issues/328)) and donated his work to this project.
> All logos are licensed under [Creative Commons](https://github.com/verdaccio/verdaccio/blob/master/LICENSE-docs). > All logos are licensed under [Creative Commons](https://github.com/verdaccio/verdaccio/blob/master/LICENSE-docs).
Special thanks to *[@Lisapressmar](https://github.com/Lisapressmar)* for her contribution Special thanks to _[@Lisapressmar](https://github.com/Lisapressmar)_ for her contribution
with multiple image formats and sizes. with multiple image formats and sizes.
<div id="codefund">''</div> <div id="codefund">''</div>
## Symbols ## Symbols
__With text__ **With text**
![symbol tiny with text](assets/logo/symbol/png/logo-small-header-bottom.png) ![symbol tiny with text](assets/logo/symbol/png/logo-small-header-bottom.png)
@ -24,11 +24,11 @@ __With text__
![symbol big with text](assets/logo/symbol/png/logo-small-header-bottom@3x.png) ![symbol big with text](assets/logo/symbol/png/logo-small-header-bottom@3x.png)
__SVG__ **SVG**
![symbol svg](assets/logo/symbol/svg/logo-small-header-bottom.svg) ![symbol svg](assets/logo/symbol/svg/logo-small-header-bottom.svg)
__No text__ **No text**
![symbol tiny](assets/logo/symbol/png/verdaccio-tiny.png) ![symbol tiny](assets/logo/symbol/png/verdaccio-tiny.png)
@ -36,12 +36,10 @@ __No text__
![symbol big](assets/logo/symbol/png/verdaccio-tiny@3x.png) ![symbol big](assets/logo/symbol/png/verdaccio-tiny@3x.png)
__SVG__ **SVG**
![svg format symbol no text](assets/logo/symbol/svg/verdaccio-tiny.svg) ![svg format symbol no text](assets/logo/symbol/svg/verdaccio-tiny.svg)
### Black&White ### Black&White
![symbol bw small](assets/logo/symbol/png/verdaccio-blackwhite.png) ![symbol bw small](assets/logo/symbol/png/verdaccio-blackwhite.png)
@ -50,11 +48,10 @@ __SVG__
![symbol bw big](assets/logo/symbol/png/verdaccio-blackwhite@3x.png) ![symbol bw big](assets/logo/symbol/png/verdaccio-blackwhite@3x.png)
__SVG__ **SVG**
![symbol bw svg](assets/logo/symbol/svg/verdaccio-blackwhite.svg) ![symbol bw svg](assets/logo/symbol/svg/verdaccio-blackwhite.svg)
## Banner ## Banner
![banner small](assets/logo/banner/png/verdaccio-banner.png) ![banner small](assets/logo/banner/png/verdaccio-banner.png)
@ -62,5 +59,3 @@ __SVG__
![banner medium](assets/logo/banner/png/verdaccio-banner@2x.png) ![banner medium](assets/logo/banner/png/verdaccio-banner@2x.png)
![banner big](assets/logo/banner/png/verdaccio-banner@3x.png) ![banner big](assets/logo/banner/png/verdaccio-banner@3x.png)

View file

@ -1,6 +1,6 @@
--- ---
id: node-api id: node-api
title: "Node API" title: 'Node API'
--- ---
Verdaccio can be invoked programmatically. The node API was introduced after version `verdaccio@3.0.0`. Verdaccio can be invoked programmatically. The node API was introduced after version `verdaccio@3.0.0`.
@ -14,8 +14,7 @@ Verdaccio can be invoked programmatically. The node API was introduced after ver
```js ```js
import startServer from 'verdaccio'; import startServer from 'verdaccio';
startServer(configJsonFormat, 6000, store, '1.0.0', 'verdaccio', startServer(configJsonFormat, 6000, store, '1.0.0', 'verdaccio', (webServer, addrs, pkgName, pkgVersion) => {
(webServer, addrs, pkgName, pkgVersion) => {
webServer.listen(addr.port || addr.path, addr.host, () => { webServer.listen(addr.port || addr.path, addr.host, () => {
console.log('verdaccio running'); console.log('verdaccio running');
}); });
@ -24,11 +23,11 @@ Verdaccio can be invoked programmatically. The node API was introduced after ver
## Other implementations ## Other implementations
* [verdaccio-server](https://github.com/boringame/verdaccio-server) local npm registry proxy server - [verdaccio-server](https://github.com/boringame/verdaccio-server) local npm registry proxy server
```js ```js
// js // js
import * as verdaccioServer from "verdaccio-server"; import * as verdaccioServer from 'verdaccio-server';
verdaccioServer.start(); verdaccioServer.start();
verdaccioServer.stop(); verdaccioServer.stop();
verdaccioServer.list(); verdaccioServer.list();

View file

@ -1,6 +1,6 @@
--- ---
id: notifications id: notifications
title: "Notifications" title: 'Notifications'
--- ---
Notify was built primarily to use with Slack's Incoming Notify was built primarily to use with Slack's Incoming
@ -65,9 +65,9 @@ We use [Handlebars](https://handlebarsjs.com/) as main template engine.
List of properties accesible via template List of properties accesible via template
* Metadata - Metadata
* Publisher (who is publishing) - Publisher (who is publishing)
* Package Published (package@1.0.0) - Package Published (package@1.0.0)
### Metadata ### Metadata
@ -123,7 +123,6 @@ Package metadata that the template has access
} }
``` ```
### Publisher ### Publisher
You can access to the package publisher information in the `content` of a webhook using the `publisher` object. You can access to the package publisher information in the `content` of a webhook using the `publisher` object.
@ -160,11 +159,11 @@ You can access to the package is being published with the keyword `{{publishedPa
## Configuration ## Configuration
Property | Type | Required | Support | Default | Description | Property | Type | Required | Support | Default | Description |
--- | --- | --- | --- | --- | --- | ------------------- | ------------ | -------- | ------- | ------- | -------------------------------------------------------------------------------------------- |
method| string | No | all | | HTTP verb | method | string | No | all | | HTTP verb |
packagePattern| string | No | all | | Only run this notification if the package name matches the regular expression | packagePattern | string | No | all | | Only run this notification if the package name matches the regular expression |
packagePatternFlags| string | No | all | | Any flags to be used with the regular expression | packagePatternFlags | string | No | all | | Any flags to be used with the regular expression |
headers| array/object | Yes | all | | If this endpoint requires specific headers, set them here as an array of key: value objects. | headers | array/object | Yes | all | | If this endpoint requires specific headers, set them here as an array of key: value objects. |
endpoint| string | Yes | all | | set the URL endpoint for this call | endpoint | string | Yes | all | | set the URL endpoint for this call |
content| string | Yes | all | | any [Handlebar](https://handlebarsjs.com/) expressions | content | string | Yes | all | | any [Handlebar](https://handlebarsjs.com/) expressions |

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