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/auth": patch
"@verdaccio/cli": patch
"@verdaccio/dev-commons": patch
"@verdaccio/config": patch
"@verdaccio/commons-api": patch
"@verdaccio/file-locking": patch
"@verdaccio/htpasswd": patch
"@verdaccio/local-storage": patch
"@verdaccio/readme": patch
"@verdaccio/streams": patch
"@verdaccio/types": patch
"@verdaccio/hooks": patch
"@verdaccio/loaders": patch
"@verdaccio/logger": patch
"@verdaccio/logger-prettify": patch
"@verdaccio/middleware": patch
"@verdaccio/mock": patch
"@verdaccio/node-api": patch
"@verdaccio/proxy": patch
"@verdaccio/server": patch
"@verdaccio/store": patch
"@verdaccio/dev-types": patch
"@verdaccio/utils": patch
"verdaccio": patch
"@verdaccio/web": patch
'@verdaccio/api': patch
'@verdaccio/auth': patch
'@verdaccio/cli': patch
'@verdaccio/dev-commons': patch
'@verdaccio/config': patch
'@verdaccio/commons-api': patch
'@verdaccio/file-locking': patch
'@verdaccio/htpasswd': patch
'@verdaccio/local-storage': patch
'@verdaccio/readme': patch
'@verdaccio/streams': patch
'@verdaccio/types': patch
'@verdaccio/hooks': patch
'@verdaccio/loaders': patch
'@verdaccio/logger': patch
'@verdaccio/logger-prettify': patch
'@verdaccio/middleware': patch
'@verdaccio/mock': patch
'@verdaccio/node-api': patch
'@verdaccio/proxy': patch
'@verdaccio/server': patch
'@verdaccio/store': patch
'@verdaccio/dev-types': patch
'@verdaccio/utils': patch
'verdaccio': patch
'@verdaccio/web': patch
---
Enable prerelease mode with **changesets**

View File

@ -1,5 +1,5 @@
---
"@verdaccio/api": patch
'@verdaccio/api': patch
---
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/**
types/custom.d.ts
**/mock/store/**
**/partials/**
**/types/custom.d.ts
build/
coverage/
flow-typed/
node_modules/
static/
website/
wiki/

View File

@ -2,18 +2,15 @@
"extends": [
"eslint:recommended",
"google",
"plugin:prettier/recommended",
"plugin:react/recommended",
"plugin:jest/recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"plugin:import/typescript",
"plugin:jsx-a11y/recommended",
"prettier",
"prettier/react",
"prettier/@typescript-eslint"
"prettier"
],
"plugins": ["import", "jest", "jsx-a11y", "react-hooks", "prettier"],
"plugins": ["import", "jest", "jsx-a11y", "react-hooks"],
"env": {
"es6": true,
"node": true,
@ -32,9 +29,6 @@
}
},
"settings": {
"react": {
"version": "detect"
},
"import/resolver": {
"node": {
"extensions": [".js", ".jsx", ".ts", ".tsx"]
@ -44,22 +38,6 @@
"parser": "@typescript-eslint/parser",
"rules": {
"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,
"jest/no-export": 0,
"jest/no-test-callback": 0,

View File

@ -7,9 +7,11 @@ assignees: ''
---
**Describe the bug**
<!-- A clear and concise description of what the bug is. -->
**To Reproduce**
<!-- IMPORTANT:
- How to reproduce the issue
- Steps to reproduce the issue
@ -18,9 +20,11 @@ Be aware, the lack of reproducible steps the issue might cause your ticket to be
-->
**Expected behavior**
<!-- A clear and concise description of what you expected to happen. -->
**Screenshots**
<!-- If applicable, add screenshots to help explain your problem. -->
**Configuration File (cat ~/.config/verdaccio/config.yaml)**
@ -28,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 -->
**Environment information**
<!-- Please paste the results of running `verdaccio --info` -->
**Debugging output**
- `$ NODE_DEBUG=request verdaccio` display request calls (verdaccio <--> uplinks)
- `$ DEBUG=express:* verdaccio` enable extreme verdaccio debug mode (verdaccio api)
- `$ npm -ddd` prints:
@ -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.
-->

View File

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

View File

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

2
.github/stale.yml vendored
View File

@ -10,7 +10,7 @@ exemptLabels:
- issue: bug
- dev: discuss
# 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
markComment: >
Hi pal 👋🏼!

View File

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

View File

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

1
.gitignore vendored
View File

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

View File

@ -13,20 +13,3 @@
CHANGELOG.md
CONTRIBUTORS.md
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",
"useTabs": false,
"printWidth": 180,
"printWidth": 160,
"tabWidth": 2,
"singleQuote": 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
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
@ -24,13 +23,10 @@
"request": "launch",
"program": "${workspaceRoot}/node_modules/bin/jest",
"stopOnEntry": false,
"args": [
"--debug=true" ],
"args": ["--debug=true"],
"cwd": "${workspaceRoot}",
"runtimeExecutable": null,
"runtimeArgs": [
"--nolazy"
],
"runtimeArgs": ["--nolazy"],
"env": {
"NODE_ENV": "test",
"TZ": "UTC"
@ -51,7 +47,8 @@
"--debug=false",
"--verbose",
"--useStderr",
"--detectOpenHandles"],
"--detectOpenHandles"
],
"cwd": "${workspaceRoot}",
"env": {
"BABEL_ENV": "testOldEnv",
@ -62,9 +59,7 @@
"preLaunchTask": "pre-test",
"console": "integratedTerminal",
"runtimeExecutable": null,
"runtimeArgs": [
"--nolazy"
],
"runtimeArgs": ["--nolazy"]
},
{
"type": "node",

5
.vscode/tasks.json vendored
View File

@ -15,10 +15,7 @@
},
{
"label": "pre-test",
"dependsOn": [
"npm: code:build",
"npm: test:clean"
]
"dependsOn": ["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:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* 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
- The use of sexualized language or imagery and unwelcome sexual attention or advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- 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
## 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
of involvement and technical knowledge required, such as:
* [Reporting Bugs](#reporting-bugs)
* [Request Features](#request-features)
* [Develop Plugins](#develop-plugins)
* [Improve Documentation](http://www.verdaccio.org/docs/en/installation.html)
- [Reporting Bugs](#reporting-bugs)
- [Request Features](#request-features)
- [Develop Plugins](#develop-plugins)
- [Improve Documentation](http://www.verdaccio.org/docs/en/installation.html)
**Please read this document carefully. It will help maintainers and readers
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):
* [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)
- [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)
## Reporting Bugs
@ -89,10 +89,10 @@ the project. Then, detail your request, ensuring context and use case is provide
**Please provide:**
* A detailed description the advantages of your request
* Whether or not it's compatible with `npm` and `yarn`
* A potential implementation or design
* Whatever else you have in your mind 🤓
- A detailed description the advantages of your request
- Whether or not it's compatible with `npm` and `yarn`
- A potential implementation or design
- Whatever else you have in your mind 🤓
### Submitting a Pull Request
@ -137,8 +137,8 @@ semantic versioning.
For example:
* `feat: A new feature`
* `fix: A bug fix`
- `feat: A new feature`
- `fix: A bug fix`
A commit of the type feat introduces a new feature to the codebase
(this correlates with MINOR in semantic versioning).
@ -154,7 +154,7 @@ A commit of the type fix patches a bug in your codebase (this correlates with PA
e.g.:
```
fix: xxxxxxxxxx
fix: xxxxxxxxxxx
```
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.**
Things excluded from tests:
* Documentation
* Website
* Build
* Deployment
* Assets
* Flow types
- Documentation
- Website
- Build
- Deployment
- Assets
- Flow types
## Develop Plugins

View File

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

View File

@ -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,
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)
[![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)
@ -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)
[![Github](https://img.shields.io/github/stars/verdaccio/verdaccio.svg?style=social&label=Stars)](https://github.com/verdaccio/verdaccio/stargazers)
## Install 5.x
> ⚠️ Not available on npmjs yet
@ -35,8 +33,8 @@ docker pull verdaccio/verdaccio:5.x-next
The `5.x` still under development, key points:
* 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
- 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
```
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.
## Donations
Verdaccio is run by **volunteers**; nobody is working full-time on it. If you find this project to be useful and would like to support its development, consider making a donation - **your logo might end up in this readme.** 😉
**[Donate](https://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
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
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.
* [Blog](https://verdaccio.org/blog/)
* [Donations](https://opencollective.com/verdaccio)
* [Reporting an issue](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md#reporting-a-bug)
* [Running discussions](https://github.com/verdaccio/verdaccio/issues?q=is%3Aissue+is%3Aopen+label%3Adiscuss)
* [Chat](http://chat.verdaccio.org/)
* [Logos](https://verdaccio.org/docs/en/logo)
* [Docker Examples](https://github.com/verdaccio/docker-examples)
* [FAQ](https://github.com/verdaccio/verdaccio/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Aquestion%20)
- [Blog](https://verdaccio.org/blog/)
- [Donations](https://opencollective.com/verdaccio)
- [Reporting an issue](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md#reporting-a-bug)
- [Running discussions](https://github.com/verdaccio/verdaccio/issues?q=is%3Aissue+is%3Aopen+label%3Adiscuss)
- [Chat](http://chat.verdaccio.org/)
- [Logos](https://verdaccio.org/docs/en/logo)
- [Docker Examples](https://github.com/verdaccio/docker-examples)
- [FAQ](https://github.com/verdaccio/verdaccio/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Aquestion%20)
### License

View File

@ -8,9 +8,7 @@ The following table describes the versions of this project that are currently su
| ------- | ------------------ |
| 2.x | :x: |
| 3.x | :x: |
| 4.x | :white_check_mark: (until 1st July 2021) |
| 5.x | :white_check_mark: |
| 4.x | :white_check_mark: |
## 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:
* 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.
* 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.

View File

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

View File

@ -1,10 +1,7 @@
# Debuging Documentation
## Debugging tests
### Running a single test
```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:
* `supertest`: `DEBUG=superagent 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`
* All of if: `DEBUG=* 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`
- `nock`: `DEBUG=nock 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/register": "7.10.5",
"@babel/runtime": "7.10.5",
"@changesets/changelog-github": "^0.1.1",
"@changesets/cli": "^2.10.1",
"@changesets/changelog-github": "0.1.1",
"@changesets/cli": "2.10.1",
"@commitlint/cli": "8.3.5",
"@commitlint/config-conventional": "8.2.0",
"@octokit/rest": "17.0.0",
@ -54,8 +54,8 @@
"@types/request": "2.48.3",
"@types/semver": "7.2.0",
"@types/supertest": "2.0.9",
"@typescript-eslint/eslint-plugin": "^3.10.1",
"@typescript-eslint/parser": "^3.10.1",
"@typescript-eslint/eslint-plugin": "3.10.1",
"@typescript-eslint/parser": "3.10.1",
"@verdaccio/types": "workspace:*",
"@verdaccio/ui-theme": "latest",
"babel-core": "7.0.0-bridge.0",
@ -72,10 +72,9 @@
"eslint-plugin-babel": "5.3.0",
"eslint-plugin-import": "2.22.0",
"eslint-plugin-jest": "23.8.0",
"eslint-plugin-jsx-a11y": "^6.3.1",
"eslint-plugin-prettier": "3.1.2",
"eslint-plugin-react": "^7.20.6",
"eslint-plugin-react-hooks": "^4.1.0",
"eslint-plugin-jsx-a11y": "6.3.1",
"eslint-plugin-react": "7.20.6",
"eslint-plugin-react-hooks": "4.1.0",
"eslint-plugin-simple-import-sort": "5.0.2",
"eslint-plugin-verdaccio": "8.4.2",
"fs-extra": "8.1.0",
@ -88,13 +87,13 @@
"kleur": "3.0.3",
"lint-staged": "8.2.1",
"nock": "12.0.3",
"npm-run-all": "^4.1.5",
"npm-run-all": "4.1.5",
"prettier": "2.0.5",
"rimraf": "3.0.2",
"selfsigned": "1.10.7",
"standard-version": "8.0.0",
"supertest": "4.0.2",
"typescript": "4.0.2",
"typescript": ">=3.3.1 <3.10.0",
"verdaccio": "latest",
"verdaccio-audit": "latest",
"verdaccio-auth-memory": "latest",
@ -107,7 +106,9 @@
"clean": "pnpm recursive run clean",
"build": "pnpm recursive run build",
"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:e2e:cli": "cross-env NODE_ENV=test jest --config ./test/e2e-cli/jest.config.e2e.cli.js --passWithNoTests",
"website:lint": "cd website && yarn lint",
@ -124,5 +125,14 @@
"extends": [
"@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.
// https://verdaccio.org/docs/en/dev-plugins#onerror
callback(getInternalError(), false);
}
},
};
};

View File

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

View File

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

View File

@ -2,8 +2,8 @@
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)
* [Chat with us](http://chat.verdaccio.org) <- You need a Discord account
* [Follow us on Twitter](https://twitter.com/verdaccio_npm)
- [https://verdaccio.org/docs/en/installation](https://verdaccio.org/docs/en/installation)
- [Chat with us](http://chat.verdaccio.org) <- You need a Discord account
- [Follow us on Twitter](https://twitter.com/verdaccio_npm)
Enjoy Verdaccio !

View File

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

View File

@ -11,6 +11,5 @@ commons api utilities for verdaccio
![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)
[![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)
[![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)
[![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)
[![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)
[![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)
@ -8,7 +7,6 @@
![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)
# Verdaccio Module For User Auth Via Htpasswd
`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),
currently it support authentication plugins, middleware plugins (since v2.7.0)
and storage plugins since (v3.x).
#### Useful Links
- [Plugin Development](http://www.verdaccio.org/docs/en/dev-plugins.html)
- [List of Plugins](http://www.verdaccio.org/docs/en/plugins.html)
## 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)

View File

@ -29,8 +29,8 @@ The main object that handle a JSON database the private packages.
new LocalDatabase(config, logger);
```
* **config**: A verdaccio configuration instance.
* **logger**: A logger instance
- **config**: A verdaccio configuration instance.
- **logger**: A logger instance
### LocalFS
@ -40,10 +40,8 @@ A class that handle an package instance in the File System
new LocalFS(packageStoragePath, logger);
```
## 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)

View File

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

View File

@ -1,5 +1,5 @@
# 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>

View File

@ -193,8 +193,8 @@ describe('readme', () => {
test('should parse marked', async () => {
const readme: string = await readReadme('mixed-html-mk');
expect(clean(parseReadme(readme) as string)).toEqual(
`<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>`
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>"`
);
});
});

View File

@ -8,7 +8,6 @@
![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)
This project provides an extension of `PassThrough` stream.
## Detail

View File

@ -3,6 +3,7 @@
Typescript definitions for verdaccio plugins and internal code
# Typescript
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"}'
'example-stride':
method: POST
headers:
[
{ 'Content-Type': 'application/json' },
{ 'authorization': 'Bearer secretToken' },
]
headers: [{ 'Content-Type': 'application/json' }, { 'authorization': 'Bearer secretToken' }]
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 }}"}]}]}}'

View File

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

View File

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

View File

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

View File

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

View File

@ -1,16 +1,35 @@
// this is how a Babel.js transpiled plugin looks like
"use strict";
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
Object.defineProperty(exports, '__esModule', {
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) {
_classCallCheck(this, Dummy);
@ -19,12 +38,14 @@ var Dummy = function () {
this.data = [];
}
_createClass(Dummy, [{
key: "getPackageStorage",
value: function getPackageStorage() {}
}]);
_createClass(Dummy, [
{
key: 'getPackageStorage',
value: function getPackageStorage() {},
},
]);
return Dummy;
}();
})();
exports.default = Dummy;

View File

@ -1,8 +1,8 @@
'use strict';
/* eslint-disable @typescript-eslint/no-var-requires */
Object.defineProperty(exports, "__esModule", {
value: true
Object.defineProperty(exports, '__esModule', {
value: true,
});
exports.Dummy = undefined;
@ -10,7 +10,9 @@ var _dummy = require('./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.default = _dummy2.default;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,53 +1,50 @@
const json = {
"_id": "forbidden-place",
"name": "forbidden-place",
"description": "",
"dist-tags": {
"latest": "1.0.6"
_id: 'forbidden-place',
name: 'forbidden-place',
description: '',
'dist-tags': {
latest: '1.0.6',
},
"versions": {
"1.0.6": {
"name": "forbidden-place",
"version": "1.0.6",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
versions: {
'1.0.6': {
name: 'forbidden-place',
version: '1.0.6',
description: '',
main: 'index.js',
scripts: {
test: 'echo "Error: no test specified" && exit 1',
},
"keywords": [
],
"author": {
"name": "User NPM",
"email": "user@domain.com"
keywords: [],
author: {
name: 'User NPM',
email: 'user@domain.com',
},
"license": "ISC",
"dependencies": {
"verdaccio": "^2.7.2"
license: 'ISC',
dependencies: {
verdaccio: '^2.7.2',
},
"readme": "# test",
"readmeFilename": "README.md",
"_id": "forbidden-place@1.0.6",
"_npmVersion": "5.5.1",
"_nodeVersion": "8.7.0",
"_npmUser": {
readme: '# test',
readmeFilename: 'README.md',
_id: 'forbidden-place@1.0.6',
_npmVersion: '5.5.1',
_nodeVersion: '8.7.0',
_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": {
"forbidden-place-1.0.6.tgz": {
"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=",
"length": 512
}
}
}
},
readme: '# test',
_attachments: {
'forbidden-place-1.0.6.tgz': {
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=',
length: 512,
},
},
};
module.exports = json;

View File

@ -1,54 +1,50 @@
const json = {
"_id": "@scope\/pk1-test",
"name": "@scope\/pk1-test",
"description": "",
"dist-tags": {
"latest": "1.0.6"
_id: '@scope/pk1-test',
name: '@scope/pk1-test',
description: '',
'dist-tags': {
latest: '1.0.6',
},
"versions": {
"1.0.6": {
"name": "@scope\/pk1-test",
"version": "1.0.6",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
versions: {
'1.0.6': {
name: '@scope/pk1-test',
version: '1.0.6',
description: '',
main: 'index.js',
scripts: {
test: 'echo "Error: no test specified" && exit 1',
},
"keywords": [
],
"author": {
"name": "User NPM",
"email": "user@domain.com"
keywords: [],
author: {
name: 'User NPM',
email: 'user@domain.com',
},
"license": "ISC",
"dependencies": {
"verdaccio": "^2.7.2"
license: 'ISC',
dependencies: {
verdaccio: '^2.7.2',
},
"readme": "# test",
"readmeFilename": "README.md",
"_id": "@scope\/pk1-test@1.0.6",
"_npmVersion": "5.5.1",
"_nodeVersion": "8.7.0",
"_npmUser": {
readme: '# test',
readmeFilename: 'README.md',
_id: '@scope/pk1-test@1.0.6',
_npmVersion: '5.5.1',
_nodeVersion: '8.7.0',
_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": {
"@scope\/pk1-test-1.0.6.tgz": {
"content_type": "application\/octet-stream",
// eslint-disable-next-line max-len
"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
}
}
}
},
readme: '# test',
_attachments: {
'@scope/pk1-test-1.0.6.tgz': {
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=',
length: 512,
},
},
};
module.exports = json;

View File

@ -5,4 +5,4 @@ function readFile(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/' } },
packages:
{ '@*/*': { access: '$all', publish: '$all', proxy: 'npmjs' },
packages: {
'@*/*': { access: '$all', publish: '$all', proxy: 'npmjs' },
'forbidden-place': { access: 'nobody', publish: '$all' },
react: { access: '$all', publish: '$all', proxy: 'npmjs' },
'corrupted-package': { access: '$all', publish: '$all', proxy: 'npmjs' },
jquery: { access: '$all', publish: '$all', proxy: 'npmjs' },
'auth-package': { access: '$authenticated', publish: '$authenticated' },
vue:
{ access: '$authenticated',
publish: '$authenticated',
proxy: 'npmjs' },
'*': { access: '$all', publish: '$all', proxy: 'npmjs' } },
logs: [ { type: 'stdout', format: 'pretty', level: 'warn' } ] };
vue: { access: '$authenticated', publish: '$authenticated', proxy: 'npmjs' },
'*': { access: '$all', publish: '$all', proxy: 'npmjs' },
},
logs: [{ type: 'stdout', format: 'pretty', level: 'warn' }],
};

View File

@ -1,6 +1,6 @@
# 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

View File

@ -58,9 +58,9 @@ Add additional notes about how to deploy this on a live system
## Built With
* The web framework used
* Dependency Management
* Used to generate RSS Feeds
- The web framework used
- Dependency Management
- Used to generate RSS Feeds
## Contributing
@ -76,6 +76,6 @@ This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md
## Acknowledgments
* Hat tip to anyone whose code was used
* Inspiration
* etc
- Hat tip to anyone whose code was used
- Inspiration
- 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 **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.
* 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.
* 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.
* 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).
* If you are creating mock data file which use the state and need a clean state, use `rimraf` to remove folders.
- 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.
- 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.
- 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.
- 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).
- If you are creating mock data file which use the state and need a clean state, use `rimraf` to remove folders.
## 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 add a new API endpoint, unit and functional tests are 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 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 add a new API endpoint, unit and functional tests are 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 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.
## 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:
* 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.
* 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.
- 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.
- 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.
### 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:
```js
const configForTest = configDefault({
const configForTest = configDefault(
{
auth: {
htpasswd: {
file: './test-storage-api-spec/.htpasswd'
}
file: './test-storage-api-spec/.htpasswd',
},
},
filters: {
'../../modules/api/partials/plugin/filter': {
pkg: 'npm_test',
version: '2.0.0'
}
version: '2.0.0',
},
},
storage: store,
self_path: store,
uplinks: {
npmjs: {
url: `http://${DOMAIN_SERVERS}:${mockServerPort}`
}
url: `http://${DOMAIN_SERVERS}:${mockServerPort}`,
},
logs: [
{ type: 'stdout', format: 'pretty', level: 'trace' }
]
}, 'api.spec.yaml');
},
logs: [{ type: 'stdout', format: 'pretty', level: 'trace' }],
},
'api.spec.yaml'
);
app = await endPointAPI(configForTest);
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 *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 _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 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 *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.
@ -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.
> 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
@ -137,7 +137,7 @@ To run a single test, use the following command:
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
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
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.
## 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:
* Server 1
* -> Server 2
* -> Server 3
* Server 2
* -> Server 1
* Server 3
* -> Server 2
* -> Server 1
* Express app: (if you need to emulate any external endpoint, use the express app)
- Server 1
- -> Server 2
- -> Server 3
- Server 2
- -> Server 1
- Server 3
- -> Server 2
- -> Server 1
- 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`.
> 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
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
// newFeature.ts
export default function (server) {
describe('package access control', () => {
test('should ...', (done) => {
done();
});
});
}
```
@ -294,7 +291,6 @@ We recommend run your tests and linters before commit.
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).
## 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.
> 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) {
const { message } = this._config;
app.get('/test/route', function (req, res, next) {
res.status(200);
return next({ ok: message })
return next({ ok: message });
});
};

View File

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

View File

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

View File

@ -1,13 +1,13 @@
{
"_id": "@test\/scoped",
"name": "@test\/scoped",
"_id": "@test/scoped",
"name": "@test/scoped",
"description": "test... test... test...",
"dist-tags": {
"latest": "1.0.0"
},
"versions": {
"1.0.0": {
"name": "@test\/scoped",
"name": "@test/scoped",
"version": "1.0.0",
"description": "test... test... test...",
"main": "index.js",
@ -17,25 +17,23 @@
"author": "",
"license": "ISC",
"readme": "ERROR: No README data found!",
"_id": "@test\/scoped@1.0.0",
"_id": "@test/scoped@1.0.0",
"_shasum": "6e67b14e2c0e450b942e2bc8086b49e90f594790",
"_from": ".",
"_npmVersion": "2.0.1",
"_nodeVersion": "0.10.25",
"_npmUser": {
},
"_npmUser": {},
"dist": {
"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!",
"_attachments": {
"@test\/scoped-1.0.0.tgz": {
"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==",
"@test/scoped-1.0.0.tgz": {
"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==",
"length": 736
}
}

View File

@ -24,7 +24,7 @@
"_id": "test-readme@0.0.0",
"dist": {
"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": ".",
"_npmVersion": "1.3.1",
@ -48,8 +48,8 @@
],
"_attachments": {
"test-readme-0.0.0.tgz": {
"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==",
"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==",
"length": 352
}
}

View File

@ -25,7 +25,7 @@
"_id": "test-readme@0.0.0",
"dist": {
"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": ".",
"_npmVersion": "1.3.1",
@ -50,8 +50,8 @@
],
"_attachments": {
"test-readme-0.0.0.tgz": {
"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==",
"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==",
"length": 352
}
}

View File

@ -24,7 +24,7 @@
"_id": "testpkg-search@0.0.1",
"dist": {
"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": ".",
"_npmVersion": "1.3.1",
@ -49,8 +49,8 @@
],
"_attachments": {
"testpkg-search-0.0.1.tgz": {
"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==",
"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==",
"length": 352
}
}

View File

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

View File

@ -24,7 +24,7 @@
"_id": "testpkg-preserve@0.0.1",
"dist": {
"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": ".",
"_npmVersion": "1.3.1",
@ -49,8 +49,8 @@
],
"_attachments": {
"testpkg-preserve-0.0.1.tgz": {
"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==",
"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==",
"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**
- 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.
- 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.

View File

@ -1,54 +1,50 @@
const json = {
"_id": "forbidden-place",
"name": "forbidden-place",
"description": "",
"dist-tags": {
"latest": "1.0.6"
_id: 'forbidden-place',
name: 'forbidden-place',
description: '',
'dist-tags': {
latest: '1.0.6',
},
"versions": {
"1.0.6": {
"name": "forbidden-place",
"version": "1.0.6",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
versions: {
'1.0.6': {
name: 'forbidden-place',
version: '1.0.6',
description: '',
main: 'index.js',
scripts: {
test: 'echo "Error: no test specified" && exit 1',
},
"keywords": [
],
"author": {
"name": "User NPM",
"email": "user@domain.com"
keywords: [],
author: {
name: 'User NPM',
email: 'user@domain.com',
},
"license": "ISC",
"dependencies": {
"verdaccio": "^2.7.2"
license: 'ISC',
dependencies: {
verdaccio: '^2.7.2',
},
"readme": "# test",
"readmeFilename": "README.md",
"_id": "forbidden-place@1.0.6",
"_npmVersion": "5.5.1",
"_nodeVersion": "8.7.0",
"_npmUser": {
readme: '# test',
readmeFilename: 'README.md',
_id: 'forbidden-place@1.0.6',
_npmVersion: '5.5.1',
_nodeVersion: '8.7.0',
_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": {
"forbidden-place-1.0.6.tgz": {
"content_type": "application\/octet-stream",
// eslint-disable-next-line max-len
"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
}
}
}
},
readme: '# test',
_attachments: {
'forbidden-place-1.0.6.tgz': {
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=',
length: 512,
},
},
};
module.exports = json;

View File

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

View File

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

View File

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

View File

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

View File

@ -2,6 +2,11 @@
"env": {
"browser": true
},
"settings": {
"react": {
"version": "detect"
}
},
"rules": {
"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/)
GraphQL [http://localhost:8000/___graphql](http://localhost:8000/___graphql)
GraphQL [http://localhost:8000/\_\_\_graphql](http://localhost:8000/___graphql)
or build locally

View File

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

View File

@ -1,6 +1,6 @@
---
id: amazon
title: "Amazon Web Services"
title: 'Amazon Web Services'
---
This document describes several approaches for deploying Verdaccio in the AWS cloud.
@ -31,19 +31,21 @@ Elastic File System
```
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.
* 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.
* 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
- 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.
- 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.
- 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):
* ALB (1 LCU average): $22.265/mo
* EC2 (t3.nano): $3.796/mo
* EBS (8gb): $0.80/mo
* EFS (5gb): $1.5/mo
* Data transfer: (10gb): $0.9/mo
* **TOTAL:** Under $30/mo
- ALB (1 LCU average): \$22.265/mo
- EC2 (t3.nano): \$3.796/mo
- EBS (8gb): \$0.80/mo
- EFS (5gb): \$1.5/mo
- Data transfer: (10gb): \$0.9/mo
- **TOTAL:** Under \$30/mo
## ECS

View File

@ -1,6 +1,6 @@
---
id: ansible
title: "Ansible"
title: 'Ansible'
---
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
* 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-verdaccio-role [https://github.com/refinery29/ansible-verdaccio-role](https://github.com/refinery29/ansible-verdaccio-role)
- 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-verdaccio-role [https://github.com/refinery29/ansible-verdaccio-role](https://github.com/refinery29/ansible-verdaccio-role)

View File

@ -1,6 +1,6 @@
---
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!
@ -9,83 +9,79 @@ Below is a list of articles about Verdaccio. If you have written a blog post or
## Core Team Articles
* [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)
* [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)
* [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)
* [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)
* [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 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)
- [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)
- [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)
- [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)
- [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)
- [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 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)
### Remarkable Articles
* [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/)
* [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/)
* [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)
* [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)
* [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)
- [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/)
- [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/)
- [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)
- [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)
- [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
* [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)
* [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)
* [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)
* [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)
* [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)
* [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)
- [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)
- [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)
- [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)
- [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)
- [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)
- [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
* [Verdaccio でプライベート npm リポジトリをサクッと立てる](http://neos21.hatenablog.com/entry/2017/09/08/080000)
* [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)
- [Verdaccio でプライベート npm リポジトリをサクッと立てる](http://neos21.hatenablog.com/entry/2017/09/08/080000)
- [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)
### Chinese
* [使用 verdaccio 搭建 npm 私有仓储](https://blog.sigoden.com/verdaccio--private-npm-registry/)
* [Verdaccio一个轻量级的私有npm代理注册表sinopia fork)](https://www.ctolib.com/verdaccio-verdaccio.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私库——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)
- [使用 verdaccio 搭建 npm 私有仓储](https://blog.sigoden.com/verdaccio--private-npm-registry/)
- [Verdaccio一个轻量级的私有 npm 代理注册表sinopia fork)](https://www.ctolib.com/verdaccio-verdaccio.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 私库——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)
### 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
* [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
* [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)
* [Privates NPM Repository mit Verdaccio (SSL & Docker)](https://blog.zotorn.de/privates-npm-repository-mit-verdaccio-ssl-docker-1/)
- [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)
- [Privates NPM Repository mit Verdaccio (SSL & Docker)](https://blog.zotorn.de/privates-npm-repository-mit-verdaccio-ssl-docker-1/)
## Slides
* [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)
* [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)
- [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)
- [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)

View File

@ -1,6 +1,6 @@
---
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).
@ -41,11 +41,11 @@ As is described [on issue #212](https://github.com/verdaccio/verdaccio/issues/21
### 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`.
Thus, *Verdaccio* will handle that in the following way:
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:
* 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 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.
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:
* **logged**: `$all`, `$authenticated`, + groups added by the plugin
* **anonymous (logged out)**: `$all` and `$anonymous`.
- **logged**: `$all`, `$authenticated`, + groups added by the plugin
- **anonymous (logged out)**: `$all` and `$anonymous`.
## Default htpasswd
@ -71,9 +71,9 @@ auth:
#max_users: 1000
```
Property | Type | Required | Example | Support | Description
--- | --- | --- | --- | --- | ---
file | string | Yes | ./htpasswd | all | file that host the encrypted credentials
max_users | number | No | 1000 | all | set limit of users
| Property | Type | Required | Example | Support | Description |
| --------- | ------ | -------- | ---------- | ------- | ---------------------------------------- |
| file | string | Yes | ./htpasswd | all | file that host the encrypted credentials |
| 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`.

View File

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

View File

@ -1,6 +1,6 @@
---
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
@ -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`.
## 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.

View File

@ -1,6 +1,6 @@
---
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
@ -10,15 +10,14 @@ a different strategy. Using of plugins you might use the cloud or any sort of da
## 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.**
* **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).
* **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
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
@ -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
you don't update dependencies so often.
## Using the memory instead the hardrive
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
title: "Chef Cookbook"
title: 'Chef Cookbook'
---
Using Chef Cookbook for Verdaccio
For further information:
* [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://github.com/verdaccio/verdaccio-cookbook](https://github.com/verdaccio/verdaccio-cookbook)
- [https://supermarket.chef.io/cookbooks/verdaccio](https://supermarket.chef.io/cookbooks/verdaccio)
<div id="codefund">''</div>
> 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.

View File

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

View File

@ -1,6 +1,6 @@
---
id: cli
title: "Command Line Tool"
title: 'Command Line Tool'
---
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
```
Command | Default | Example | Description
--- | --- | --- | ---
--listen \ **-l** | 4873 | -p 7000 | http port
--config \ **-c** | ~/.local/verdaccio/config.yaml | ~./config.yaml | the configuration file
--info \ **-i** | | | prints local environment information
| Command | Default | Example | Description |
| ----------------- | ------------------------------ | -------------- | ------------------------------------ |
| --listen \ **-l** | 4873 | -p 7000 | http port |
| --config \ **-c** | ~/.local/verdaccio/config.yaml | ~./config.yaml | the configuration file |
| --info \ **-i** | | | prints local environment information |
## 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
@ -27,7 +27,7 @@ Config file should be YAML, JSON or NodeJS module. YAML format is detected by pa
## 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.
## Default database file location

View File

@ -1,6 +1,6 @@
---
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.
@ -86,6 +86,7 @@ security:
verify:
someProp: [value]
```
> We highly recommend move to JWT since legacy signature (`aes192`) is deprecated and will disappear in future versions.
### Server
@ -93,15 +94,14 @@ security:
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.
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.
> 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.
```yaml
server:
keepAliveTimeout: 60
```
### 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).
@ -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).
```yaml
uplinks:
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).
```yaml
packages:
'@*/*':
@ -142,7 +140,7 @@ packages:
### 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
publish:
@ -183,8 +181,7 @@ listen:
### 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
https:
@ -226,10 +223,8 @@ notify:
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).
### Audit
<small>Since: `verdaccio@3.0.0`</small>

View File

@ -1,15 +1,15 @@
---
id: dev-plugins
title: "Developing Plugins"
title: 'Developing Plugins'
---
There are many ways to extend `verdaccio`, the kind of plugins supported are:
* [Authentication](plugin-auth.md)
* [Middleware](plugin-middleware.md)
* [Storage](plugin-storage.md)
* Theme
* Filter plugins
- [Authentication](plugin-auth.md)
- [Middleware](plugin-middleware.md)
- [Storage](plugin-storage.md)
- Theme
- Filter plugins
> 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.
## 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.
@ -38,27 +37,23 @@ It is imporant that the name of the plugin **must start with `verdaccio-theme-`
### 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
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
to be able to filter metadata from uplinks.
More [info in the PR](https://github.com/verdaccio/verdaccio/pull/1161).
```yaml
filters:
storage-filter-blackwhitelist:
filter_file: /path/to/file
```
### API
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
---
![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/):
@ -25,6 +24,7 @@ For a major version:
```bash
docker pull verdaccio/verdaccio:4
```
For a minor version:
```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.
You can use `-v` to bind mount `conf`, `storage` and `plugins` to the hosts filesystem:
```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,
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.
[Use docker volume](https://docs.docker.com/storage/volumes/) is recommended over using bind mount.
> 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.
> [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:
Property | default | Description
--- | --- | ---
VERDACCIO_APPDIR | `/opt/verdaccio` | the docker working directory
VERDACCIO_USER_NAME | `verdaccio` | the system user
VERDACCIO_USER_UID | `10001` | the user id being used to apply folder permissions
VERDACCIO_PORT | `4873` | the verdaccio port
VERDACCIO_PROTOCOL | `http` | the default http protocol
| Property | default | Description |
| ------------------- | ---------------- | -------------------------------------------------- |
| VERDACCIO_APPDIR | `/opt/verdaccio` | the docker working directory |
| VERDACCIO_USER_NAME | `verdaccio` | the system user |
| VERDACCIO_USER_UID | `10001` | the user id being used to apply folder permissions |
| VERDACCIO_PORT | `4873` | the verdaccio port |
| VERDACCIO_PROTOCOL | `http` | the default http protocol |
### 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.
```docker
@ -97,6 +95,7 @@ USER verdaccio
```
### Docker and custom port configuration
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`
@ -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.
### Using HTTPS with Docker
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.
@ -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`.
```yaml
version: '3.1'
services:
verdaccio:
image: verdaccio/verdaccio
container_name: "verdaccio"
container_name: 'verdaccio'
networks:
- node-network
environment:
- VERDACCIO_PORT=4873
ports:
- "4873:4873"
- '4873:4873'
volumes:
- "./storage:/verdaccio/storage"
- "./config:/verdaccio/conf"
- "./plugins:/verdaccio/plugins"
- './storage:/verdaccio/storage'
- './config:/verdaccio/conf'
- './plugins:/verdaccio/plugins'
networks:
node-network:
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.
* [docker-verdaccio-gitlab](https://github.com/snics/docker-verdaccio-gitlab)
* [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-ldap](https://github.com/snadn/docker-verdaccio-ldap)
* [verdaccio-ldap](https://github.com/nathantreid/verdaccio-ldap)
* [verdaccio-compose-local-bridge](https://github.com/shingtoli/verdaccio-compose-local-bridge)
* [docker-verdaccio](https://github.com/Global-Solutions/docker-verdaccio)
* [verdaccio-docker](https://github.com/idahobean/verdaccio-docker)
* [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.
- [docker-verdaccio-gitlab](https://github.com/snics/docker-verdaccio-gitlab)
- [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-ldap](https://github.com/snadn/docker-verdaccio-ldap)
- [verdaccio-ldap](https://github.com/nathantreid/verdaccio-ldap)
- [verdaccio-compose-local-bridge](https://github.com/shingtoli/verdaccio-compose-local-bridge)
- [docker-verdaccio](https://github.com/Global-Solutions/docker-verdaccio)
- [verdaccio-docker](https://github.com/idahobean/verdaccio-docker)
- [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.

View File

@ -1,6 +1,6 @@
---
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**.
@ -12,9 +12,9 @@ Some projects organize packages in multi-packages repositories or [monorepos](ht
Such approach has been really hard to achieve considering:
* Populate canary packages on public services seems not to be a good idea
* Some self-hosted OSS registries are too heavy
* Offline environments (private networks)
- Populate canary packages on public services seems not to be a good idea
- Some self-hosted OSS registries are too heavy
- Offline environments (private networks)
**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
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
#!/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"
```
## 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 ⭐️)*
* [Storybook](https://github.com/storybooks/storybook) *(+44k ⭐️)*
* [Gatsby](https://github.com/gatsbyjs/gatsby) *(+40k ⭐️)
* [Babel.js](https://github.com/babel/babel) *(+35k ⭐️)*
* [Uppy](https://github.com/transloadit/uppy) *(+21k ⭐️)*
* [Aurelia Framework](https://github.com/aurelia) *(+12k ⭐️)*
* [ethereum/web3.js](https://github.com/ethereum/web3.js) *(+8k ⭐️)*
* [bit](https://github.com/teambit/bit) *(+6k ⭐️)*
* [pnpm](https://github.com/pnpm/pnpm) *(+6k ⭐️)*
* [Mozilla Neutrino](https://github.com/neutrinojs/neutrino) *(+3k ⭐️)*
* [Embark](https://embark.status.im/) *(+3k ⭐️)*
* [Hyperledger Composer](https://github.com/hyperledger/composer) *(+1.6k ⭐️)*
* [Wix Yoshi](https://github.com/wix/yoshi)
- [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 ⭐️)_
- [Gatsby](https://github.com/gatsbyjs/gatsby) \*(+40k ⭐️)
- [Babel.js](https://github.com/babel/babel) _(+35k ⭐️)_
- [Uppy](https://github.com/transloadit/uppy) _(+21k ⭐️)_
- [Aurelia Framework](https://github.com/aurelia) _(+12k ⭐️)_
- [ethereum/web3.js](https://github.com/ethereum/web3.js) _(+8k ⭐️)_
- [bit](https://github.com/teambit/bit) _(+6k ⭐️)_
- [pnpm](https://github.com/pnpm/pnpm) _(+6k ⭐️)_
- [Mozilla Neutrino](https://github.com/neutrinojs/neutrino) _(+3k ⭐️)_
- [Embark](https://embark.status.im/) _(+3k ⭐️)_
- [Hyperledger Composer](https://github.com/hyperledger/composer) _(+1.6k ⭐️)_
- [Wix Yoshi](https://github.com/wix/yoshi)

View File

@ -1,6 +1,6 @@
---
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.

View File

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

View File

@ -1,36 +1,36 @@
---
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).
* 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.
* 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`.
Save [package.json](#packagejson),
[start.js](#startjs)
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.
* 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:
- 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:
````
```
cd c:\verdaccio
npm install
````
```
* 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
- 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
<div id="codefund">''</div>
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 set the bindings to "http", ip address "All Unassigned" on port 80, ok any warning or prompts
- 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
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
@ -40,7 +40,7 @@ A default configuration file will be created `c:\verdaccio\verdaccio\config.yaml
### package.json
````json
```json
{
"name": "iisnode-verdaccio",
"version": "1.0.0",
@ -50,25 +50,25 @@ A default configuration file will be created `c:\verdaccio\verdaccio\config.yaml
"verdaccio": "^3.11.0"
}
}
````
```
### start.js
````bash
```bash
process.argv.push('-l', 'unix:' + process.env.PORT, '-c', './config.yaml');
require('./node_modules/verdaccio/build/lib/cli.js');
````
```
### Alternate start.js for Verdaccio versions < v3.0
````bash
```bash
process.argv.push('-l', 'unix:' + process.env.PORT);
require('./node_modules/verdaccio/src/lib/cli.js');
````
```
### web.config
````xml
```xml
<configuration>
<system.webServer>
<modules>
@ -115,8 +115,9 @@ require('./node_modules/verdaccio/src/lib/cli.js');
</system.webServer>
</configuration>
````
```
### Troubleshooting
- **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).

View File

@ -1,6 +1,6 @@
---
id: installation
title: "Installation"
title: 'Installation'
---
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.
> 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`
> 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
npm install -g verdaccio
```
or using `yarn`
```bash
@ -36,7 +37,6 @@ yarn global add verdaccio
![install verdaccio](assets/install_verdaccio.gif)
## Basic Usage
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/
```
you can pass a ``--registry`` flag when needed.
you can pass a `--registry` flag when needed.
```bash
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)
[![Install](https://cloudron.io/img/button.svg)](https://cloudron.io/button.html?app=org.eggertsson.verdaccio)

View File

@ -1,6 +1,6 @@
---
id: kubernetes
title: "Kubernetes"
title: 'Kubernetes'
---
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
have previously published to the registry.
### Custom Verdaccio configuration
You can customize the Verdaccio configuration using a Kubernetes *configMap*.
You can customize the Verdaccio configuration using a Kubernetes _configMap_.
#### 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.
* [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
title: "Linking a Remote Registry"
title: 'Linking a Remote 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:
* It **only works with scopes**
* Scope must match, **no Regular Expressions are allowed**
* One scope **cannot fetch from multiple registries**
* Tokens/passwords **must be defined within** `.npmrc` and checked in into the repo.
- It **only works with scopes**
- Scope must match, **no Regular Expressions are allowed**
- One scope **cannot fetch from multiple registries**
- 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).
@ -80,7 +80,6 @@ Having a full Offline Registry is completely possible. If you don't want any con
can do the following.
```yaml
auth:
htpasswd:
file: ./htpasswd

View File

@ -1,6 +1,6 @@
---
id: logger
title: "Logger"
title: 'Logger'
---
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
Property | Type | Required | Example | Support | Description
--- | --- | --- | --- | --- | ---
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
format | string | No | [pretty, pretty-timestamped] | all | output format
level | string | No | [fatal, error, warn, http, info, debug, trace] | all | verbose level
| Property | Type | Required | Example | Support | Description |
| -------- | ------ | -------- | ---------------------------------------------- | ------- | ------------------------------------------------- |
| 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 |
| format | string | No | [pretty, pretty-timestamped] | all | output format |
| level | string | No | [fatal, error, warn, http, info, debug, trace] | all | verbose level |

View File

@ -1,22 +1,22 @@
---
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)
([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).
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.
<div id="codefund">''</div>
## Symbols
__With text__
**With text**
![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)
__SVG__
**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)
@ -36,12 +36,10 @@ __No text__
![symbol big](assets/logo/symbol/png/verdaccio-tiny@3x.png)
__SVG__
**SVG**
![svg format symbol no text](assets/logo/symbol/svg/verdaccio-tiny.svg)
### Black&White
![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)
__SVG__
**SVG**
![symbol bw svg](assets/logo/symbol/svg/verdaccio-blackwhite.svg)
## Banner
![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 big](assets/logo/banner/png/verdaccio-banner@3x.png)

View File

@ -1,6 +1,6 @@
---
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`.
@ -14,8 +14,7 @@ Verdaccio can be invoked programmatically. The node API was introduced after ver
```js
import startServer from 'verdaccio';
startServer(configJsonFormat, 6000, store, '1.0.0', 'verdaccio',
(webServer, addrs, pkgName, pkgVersion) => {
startServer(configJsonFormat, 6000, store, '1.0.0', 'verdaccio', (webServer, addrs, pkgName, pkgVersion) => {
webServer.listen(addr.port || addr.path, addr.host, () => {
console.log('verdaccio running');
});
@ -24,11 +23,11 @@ Verdaccio can be invoked programmatically. The node API was introduced after ver
## 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
import * as verdaccioServer from "verdaccio-server";
import * as verdaccioServer from 'verdaccio-server';
verdaccioServer.start();
verdaccioServer.stop();
verdaccioServer.list();

View File

@ -1,6 +1,6 @@
---
id: notifications
title: "Notifications"
title: 'Notifications'
---
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
* Metadata
* Publisher (who is publishing)
* Package Published (package@1.0.0)
- Metadata
- Publisher (who is publishing)
- Package Published (package@1.0.0)
### Metadata
@ -123,7 +123,6 @@ Package metadata that the template has access
}
```
### Publisher
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
Property | Type | Required | Support | Default | Description
--- | --- | --- | --- | --- | ---
method| string | No | all | | HTTP verb
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
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
content| string | Yes | all | | any [Handlebar](https://handlebarsjs.com/) expressions
| Property | Type | Required | Support | Default | Description |
| ------------------- | ------------ | -------- | ------- | ------- | -------------------------------------------------------------------------------------------- |
| method | string | No | all | | HTTP verb |
| 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 |
| 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 |
| 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