1
0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-12-20 17:05:52 +01:00

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

* build: configure pretter as formatter for most files

* chore: reformat code (#1931)

* chore: re-format all files

* chore: force run quality anaylsis test

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

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

@ -7,4 +7,4 @@
"baseBranch": "master",
"updateInternalDependencies": "patch",
"ignore": []
}
}

@ -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**

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

@ -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/

@ -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,

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

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

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

14
.github/lock.yml vendored

@ -13,10 +13,10 @@ lockLabel: false
lockComment: >
🤖This thread has been automatically locked 🔒 since there has not been
any recent activity after it was closed.
We lock tickets after 90 days with the idea to encourage you to open a ticket with new fresh data
and to provide you better feedback 🤝and better visibility 👀.
If you consider, you can attach this ticket 📨 to the new one as a reference for better context.
Thanks for being a part of the Verdaccio community! 💘
@ -26,10 +26,10 @@ lockComment: >
# Optionally, specify configuration settings just for `issues` or `pulls`
issues:
exemptLabels:
- help-wanted
lockLabel: outdated
exemptLabels:
- help-wanted
lockLabel: outdated
pulls:
daysUntilLock: 90
lockLabel: outdated
daysUntilLock: 90
lockLabel: outdated

14
.github/stale.yml vendored

@ -10,17 +10,17 @@ 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 👋🏼!
Hi pal 👋🏼!
This issue has gone quiet 😶.
This issue has gone quiet 😶.
We get a lot of issues, so we currently close issues after 25 days of inactivity. Its been at least 15 days since the last update here.
If we missed this issue or if you want to keep it open, please reply here. You can also add/suggest the label "discuss" to keep this issue open!
As a friendly reminder: the best way to see this issue, or any other, fixed is to open a Pull Request. Check out [https://github.com/verdaccio/contributing](https://github.com/verdaccio/contributing) for more information about opening PRs, triaging issues, and contributing!
We get a lot of issues, so we currently close issues after 25 days of inactivity. Its been at least 15 days since the last update here.
If we missed this issue or if you want to keep it open, please reply here. You can also add/suggest the label "discuss" to keep this issue open!
As a friendly reminder: the best way to see this issue, or any other, fixed is to open a Pull Request. Check out [https://github.com/verdaccio/contributing](https://github.com/verdaccio/contributing) for more information about opening PRs, triaging issues, and contributing!
Thanks for being a part of the Verdaccio community! 💘
Thanks for being a part of the Verdaccio community! 💘
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

@ -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

@ -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

3
.gitignore vendored

@ -2,6 +2,7 @@
verdaccio-*.tgz
.DS_Store
build/
.eslintcache
### Test
@ -33,4 +34,4 @@ website/public
website/.cache
# CI Pnpm cache
.pnpm-store/
.pnpm-store/

@ -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

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

149
.vscode/launch.json vendored

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

18
.vscode/settings.json vendored

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

43
.vscode/tasks.json vendored

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

@ -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

@ -14,13 +14,13 @@ Additional information is available on the
- [How Do I Contribute?](#how-do-i-contribute)
- [Development](#development)
- [Reporting Bugs](#reporting-bugs)
- [Issue Search](#issue-search)
- [Check Website For Solution](#check-website-for-solution)
- [Chat](#chat)
- [Check If It's Been Fixed](#check-if-its-been-fixed)
- [Issue Search](#issue-search)
- [Check Website For Solution](#check-website-for-solution)
- [Chat](#chat)
- [Check If It's Been Fixed](#check-if-its-been-fixed)
- [Request Features](#request-features)
- [Submitting a Pull Request](#submitting-a-pull-request)
- [Make Changes and Commit](#make-changes-and-commit)
- [Submitting a Pull Request](#submitting-a-pull-request)
- [Make Changes and Commit](#make-changes-and-commit)
- [Update Tests](#update-tests)
- [Develop Plugins](#develop-plugins)
@ -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
@ -51,7 +51,7 @@ We welcome clear, detailed bug reports.
**Bugs are considered features that are not working as described in
documentation.**
If you've found a bug in Verdaccio **that isn't a security risk**, please file
If you've found a bug in Verdaccio **that isn't a security risk**, please file
a report in our [issue tracker](https://github.com/verdaccio/verdaccio/issues).
**NOTE: Verdaccio still does not support all npm commands. Some were not
@ -66,7 +66,7 @@ Additionally, we have labelled questions for easy follow-up as [questions](https
If so, up-vote it (using GitHub reactions) or add additional helpful details to
the existing issue to show that it's affecting multiple people.
### Check Website For Solution
Some of the most popular topics can be found in our website(http://www.verdaccio.org/docs/en/installation.html)
@ -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
@ -188,7 +189,7 @@ Plugins are add-ons that extend the functionality of the application.
If you want to develop your own plugin:
1. Check whether there is a legacy Sinopia plugin for the feature that you need
via [npmjs](https://www.npmjs.com/search?q=sinopia)
via [npmjs](https://www.npmjs.com/search?q=sinopia)
2. Keep in mind the [life-cycle to load a plugin](https://verdaccio.org/docs/en/dev-plugins)
3. You are free to host your plugin in your repository or ours (just ask)
4. Provide a detailed description of your plugin to help users understand it

@ -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 -->

@ -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,19 +98,18 @@ 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
Verdaccio is [MIT licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
The Verdaccio documentation and logos (excluding /thanks, e.g., .md, .png, .sketch) files within the /assets folder) is
[Creative Commons licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE-docs).
The Verdaccio documentation and logos (excluding /thanks, e.g., .md, .png, .sketch) files within the /assets folder) is
[Creative Commons licensed](https://github.com/verdaccio/verdaccio/blob/master/LICENSE-docs).

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

@ -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
require_changes: no

@ -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`

@ -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"
}
}

@ -214,7 +214,7 @@ class Auth implements IAuth {
debug('bypass unpublish for %o, publish will handle the access', packageName);
// @ts-ignore
// eslint-disable-next-line
return this.allow_publish(...arguments);
return this.allow_publish(...arguments);
}
if (ok) {

@ -1 +1 @@
? security
security:

@ -1,11 +1,11 @@
import { getInternalError } from '@verdaccio/commons-api';
module.exports = function ( ) {
module.exports = function () {
return {
authenticate( user, pass, callback ) {
// we return an 500 error, the second argument must be false.
// https://verdaccio.org/docs/en/dev-plugins#onerror
authenticate(user, pass, callback) {
// we return an 500 error, the second argument must be false.
// https://verdaccio.org/docs/en/dev-plugins#onerror
callback(getInternalError(), false);
}
},
};
};

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

@ -1,10 +1,9 @@
module.exports = function ( ) {
module.exports = function () {
return {
authenticate( user, pass, callback ) {
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']);
}
},
};
};

@ -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 !

@ -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

@ -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)

@ -6,7 +6,7 @@
# File Locking
This an utility to lock and unlock files
This an utility to lock and unlock files
[![verdaccio (latest)](https://img.shields.io/npm/v/@verdaccio/file-locking/latest.svg)](https://www.npmjs.com/package/verdaccio)
[![docker pulls](https://img.shields.io/docker/pulls/verdaccio/verdaccio.svg?maxAge=43200)](https://verdaccio.org/docs/en/docker.html)
@ -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)

@ -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).
@ -40,8 +38,8 @@ To log in using NPM, run:
## Generate htpasswd username/password combination
If you wish to handle access control using htpasswd file, you can generate
username/password combination form
If you wish to handle access control using htpasswd file, you can generate
username/password combination form
[here](http://www.htaccesstools.com/htpasswd-generator/) and add it to htpasswd
file.
@ -54,12 +52,14 @@ crypt method and may use MD5 or SHA1.
## Plugin Development in Verdaccio
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).
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)

@ -35,5 +35,5 @@ packages:
# log settings
logs:
- {type: stdout, format: pretty, level: http}
- { type: stdout, format: pretty, level: http }
#- {type: file, path: verdaccio.log, level: info}

@ -1,6 +1,6 @@
# @verdaccio/local-storage
📦 File system storage plugin for verdaccio
📦 File system storage plugin for verdaccio
[![verdaccio (latest)](https://img.shields.io/npm/v/@verdaccio/local-storage/latest.svg)](https://www.npmjs.com/package/@verdaccio/local-storage)
[![CircleCI](https://circleci.com/gh/verdaccio/local-storage/tree/master.svg?style=svg)](https://circleci.com/gh/verdaccio/local-storage/tree/master)
@ -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)

@ -1,56 +1,56 @@
{
"name": "readme-test",
"versions": {
"0.0.0": {
"name": "test-readme",
"version": "0.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": ""
},
"author": "",
"license": "ISC",
"_id": "test-readme@0.0.0",
"dist": {
"shasum": "8ee7331cbc641581b1a8cecd9d38d744a8feb863",
"tarball": "http://localhost:1234/test-readme/-/test-readme-0.0.0.tgz"
},
"_from": ".",
"_npmVersion": "1.3.1",
"_npmUser": {
"name": "alex",
"email": "alex@kocharin.ru"
},
"maintainers": [
{
"name": "juan",
"email": "juanpicado19@gmail.com"
}
]
}
},
"dist-tags": {
"foo": "0.0.0",
"latest": "0.0.0"
},
"time": {
"modified": "2017-10-06T20:30:38.721Z",
"created": "2017-10-06T20:30:38.721Z",
"0.0.0": "2017-10-06T20:30:38.721Z"
},
"_distfiles": {},
"_attachments": {
"test-readme-0.0.0.tgz": {
"shasum": "8ee7331cbc641581b1a8cecd9d38d744a8feb863",
"version": "0.0.0"
}
},
"_uplinks": {},
"_rev": "5-d647003b88ff08a0",
"readme": "this is a readme"
"name": "readme-test",
"versions": {
"0.0.0": {
"name": "test-readme",
"version": "0.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": ""
},
"author": "",
"license": "ISC",
"_id": "test-readme@0.0.0",
"dist": {
"shasum": "8ee7331cbc641581b1a8cecd9d38d744a8feb863",
"tarball": "http://localhost:1234/test-readme/-/test-readme-0.0.0.tgz"
},
"_from": ".",
"_npmVersion": "1.3.1",
"_npmUser": {
"name": "alex",
"email": "alex@kocharin.ru"
},
"maintainers": [
{
"name": "juan",
"email": "juanpicado19@gmail.com"
}
]
}
},
"dist-tags": {
"foo": "0.0.0",
"latest": "0.0.0"
},
"time": {
"modified": "2017-10-06T20:30:38.721Z",
"created": "2017-10-06T20:30:38.721Z",
"0.0.0": "2017-10-06T20:30:38.721Z"
},
"_distfiles": {},
"_attachments": {
"test-readme-0.0.0.tgz": {
"shasum": "8ee7331cbc641581b1a8cecd9d38d744a8feb863",
"version": "0.0.0"
}
},
"_uplinks": {},
"_rev": "5-d647003b88ff08a0",
"readme": "this is a readme"
}

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

@ -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>
<a href="https://github.com/webpack/webpack"><img width="200" height="200" src="https://webpack.js.org/assets/icon-square-big.svg"></a>

@ -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>"`
);
});
});

@ -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

@ -1,10 +1,10 @@
{
"rules": {
"spaced-comment": 0,
"@typescript-eslint/adjacent-overload-signatures": "off",
"@typescript-eslint/explicit-member-accessibility": "off",
"@typescript-eslint/interface-name-prefix": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-unused-vars": "off"
}
"rules": {
"spaced-comment": 0,
"@typescript-eslint/adjacent-overload-signatures": "off",
"@typescript-eslint/explicit-member-accessibility": "off",
"@typescript-eslint/interface-name-prefix": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-unused-vars": "off"
}
}

@ -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';
...
}
```

@ -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 }}"}]}]}}'

@ -1,11 +1,11 @@
import { getInternalError } from '@verdaccio/commons-api';
module.exports = function ( ) {
module.exports = function () {
return {
authenticate( user, pass, callback ) {
// we return an 500 error, the second argument must be false.
// https://verdaccio.org/docs/en/dev-plugins#onerror
authenticate(user, pass, callback) {
// we return an 500 error, the second argument must be false.
// https://verdaccio.org/docs/en/dev-plugins#onerror
callback(getInternalError(), false);
}
},
};
};

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

@ -1,10 +1,9 @@
module.exports = function ( ) {
module.exports = function () {
return {
authenticate( user, pass, callback ) {
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']);
}
},
};
};

@ -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;

@ -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;

@ -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;

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

File diff suppressed because it is too large Load Diff

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

@ -3,11 +3,10 @@
The test are structured by feature following this shape:
```bash
test
test
--- feat
--- config.yaml
--- spec.test.ts
--- mock (storage folder) optional
--- partials (optional)
```

@ -1,76 +1,76 @@
{
"name": "@jquery/jquery",
"versions": {
"1.5.1": {
"name": "@jquery/jquery",
"description": "jQuery: The Write Less, Do More, JavaScript Library",
"url": "jquery.com",
"keywords": [
"util",
"dom",
"jquery"
],
"author": {
"name": "John Resig",
"email": "jeresig@gmail.com"
},
"contributors": [],
"dependencies": {
"jsdom": "=0.1.20",
"htmlparser": ">= 1.7.3"
},
"lib": "lib",
"main": "./dist/node-jquery.js",
"version": "1.5.1",
"_id": "@jquery/jquery@1.5.1",
"engines": {
"node": "*"
},
"_engineSupported": true,
"_npmVersion": "0.3.15",
"_nodeVersion": "v0.4.2",
"directories": {
"lib": "./lib"
},
"files": [
""
],
"_defaultsLoaded": true,
"dist": {
"shasum": "2ae2d661e906c1a01e044a71bb5b2743942183e5",
"tarball": "https://registry.npmjs.org/@jquery%2jquery/-/jquery-1.5.1.tgz"
},
"deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0."
}
},
"time": {
"modified": "2018-05-21T21:39:54.702Z",
"created": "2011-03-19T07:19:56.392Z",
"1.5.1": "2011-03-19T07:19:56.956Z"
},
"dist-tags": {
"beta": "3.0.0",
"latest": "3.3.1",
"jota": "1.6.3"
},
"_uplinks": {
"npmjs": {
"etag": "W/\"252f0a131cedd3ea82dfefd6fa049558\"",
"fetched": 1529779934081
}
},
"_distfiles": {
"jquery-1.5.1.tgz": {
"url": "https://registry.npmjs.org/@jquery%2jquery/-/jquery-1.5.1.tgz",
"sha": "2ae2d661e906c1a01e044a71bb5b2743942183e5",
"registry": "npmjs"
}
},
"_attachments": {
"jquery-1.5.1.tgz": {
"shasum": "2ae2d661e906c1a01e044a71bb5b2743942183e5"
}
},
"_rev": "60-fed4915c27b9c1e6",
"readme": "# jQuery\n\n> jQuery is a fast, small, and feature-rich JavaScript library.\n\nFor information on how to get started and how to use jQuery, please see [jQuery's documentation](http://api.jquery.com/).\nFor source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery).\n\nIf upgrading, please see the [blog post for 3.3.1](https://blog.jquery.com/2017/03/20/jquery-3.3.1-now-available/). This includes notable differences from the previous version and a more readable changelog.\n\n## Including jQuery\n\nBelow are some of the most common ways to include jQuery.\n\n### Browser\n\n#### Script tag\n\n```html\n<script src=\"https://code.jquery.com/jquery-3.3.1.min.js\"></script>\n```\n\n#### Babel\n\n[Babel](http://babeljs.io/) is a next generation JavaScript compiler. One of the features is the ability to use ES6/ES2015 modules now, even though browsers do not yet support this feature natively.\n\n```js\nimport $ from \"jquery\";\n```\n\n#### Browserify/Webpack\n\nThere are several ways to use [Browserify](http://browserify.org/) and [Webpack](https://webpack.github.io/). For more information on using these tools, please refer to the corresponding project's documention. In the script, including jQuery will usually look like this...\n\n```js\nvar $ = require(\"jquery\");\n```\n\n#### AMD (Asynchronous Module Definition)\n\nAMD is a module format built for the browser. For more information, we recommend [require.js' documentation](http://requirejs.org/docs/whyamd.html).\n\n```js\ndefine([\"jquery\"], function($) {\n\n});\n```\n\n### Node\n\nTo include jQuery in [Node](nodejs.org), first install with npm.\n\n```sh\nnpm install jquery\n```\n\nFor jQuery to work in Node, a window with a document is required. Since no such window exists natively in Node, one can be mocked by tools such as [jsdom](https://github.com/tmpvar/jsdom). This can be useful for testing purposes.\n\n```js\nrequire(\"jsdom\").env(\"\", function(err, window) {\n\tif (err) {\n\t\tconsole.error(err);\n\t\treturn;\n\t}\n\n\tvar $ = require(\"jquery\")(window);\n});\n```"
"name": "@jquery/jquery",
"versions": {
"1.5.1": {
"name": "@jquery/jquery",
"description": "jQuery: The Write Less, Do More, JavaScript Library",
"url": "jquery.com",
"keywords": [
"util",
"dom",
"jquery"
],
"author": {
"name": "John Resig",
"email": "jeresig@gmail.com"
},
"contributors": [],
"dependencies": {
"jsdom": "=0.1.20",
"htmlparser": ">= 1.7.3"
},
"lib": "lib",
"main": "./dist/node-jquery.js",
"version": "1.5.1",
"_id": "@jquery/jquery@1.5.1",
"engines": {
"node": "*"
},
"_engineSupported": true,
"_npmVersion": "0.3.15",
"_nodeVersion": "v0.4.2",
"directories": {
"lib": "./lib"
},
"files": [
""
],
"_defaultsLoaded": true,
"dist": {
"shasum": "2ae2d661e906c1a01e044a71bb5b2743942183e5",
"tarball": "https://registry.npmjs.org/@jquery%2jquery/-/jquery-1.5.1.tgz"
},
"deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0."
}
},
"time": {
"modified": "2018-05-21T21:39:54.702Z",
"created": "2011-03-19T07:19:56.392Z",
"1.5.1": "2011-03-19T07:19:56.956Z"
},
"dist-tags": {
"beta": "3.0.0",
"latest": "3.3.1",
"jota": "1.6.3"
},
"_uplinks": {
"npmjs": {
"etag": "W/\"252f0a131cedd3ea82dfefd6fa049558\"",
"fetched": 1529779934081
}
},
"_distfiles": {
"jquery-1.5.1.tgz": {
"url": "https://registry.npmjs.org/@jquery%2jquery/-/jquery-1.5.1.tgz",
"sha": "2ae2d661e906c1a01e044a71bb5b2743942183e5",
"registry": "npmjs"
}
},
"_attachments": {
"jquery-1.5.1.tgz": {
"shasum": "2ae2d661e906c1a01e044a71bb5b2743942183e5"
}
},
"_rev": "60-fed4915c27b9c1e6",
"readme": "# jQuery\n\n> jQuery is a fast, small, and feature-rich JavaScript library.\n\nFor information on how to get started and how to use jQuery, please see [jQuery's documentation](http://api.jquery.com/).\nFor source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery).\n\nIf upgrading, please see the [blog post for 3.3.1](https://blog.jquery.com/2017/03/20/jquery-3.3.1-now-available/). This includes notable differences from the previous version and a more readable changelog.\n\n## Including jQuery\n\nBelow are some of the most common ways to include jQuery.\n\n### Browser\n\n#### Script tag\n\n```html\n<script src=\"https://code.jquery.com/jquery-3.3.1.min.js\"></script>\n```\n\n#### Babel\n\n[Babel](http://babeljs.io/) is a next generation JavaScript compiler. One of the features is the ability to use ES6/ES2015 modules now, even though browsers do not yet support this feature natively.\n\n```js\nimport $ from \"jquery\";\n```\n\n#### Browserify/Webpack\n\nThere are several ways to use [Browserify](http://browserify.org/) and [Webpack](https://webpack.github.io/). For more information on using these tools, please refer to the corresponding project's documention. In the script, including jQuery will usually look like this...\n\n```js\nvar $ = require(\"jquery\");\n```\n\n#### AMD (Asynchronous Module Definition)\n\nAMD is a module format built for the browser. For more information, we recommend [require.js' documentation](http://requirejs.org/docs/whyamd.html).\n\n```js\ndefine([\"jquery\"], function($) {\n\n});\n```\n\n### Node\n\nTo include jQuery in [Node](nodejs.org), first install with npm.\n\n```sh\nnpm install jquery\n```\n\nFor jQuery to work in Node, a window with a document is required. Since no such window exists natively in Node, one can be mocked by tools such as [jsdom](https://github.com/tmpvar/jsdom). This can be useful for testing purposes.\n\n```js\nrequire(\"jsdom\").env(\"\", function(err, window) {\n\tif (err) {\n\t\tconsole.error(err);\n\t\treturn;\n\t}\n\n\tvar $ = require(\"jquery\")(window);\n});\n```"
}

File diff suppressed because it is too large Load Diff

@ -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
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

@ -1,76 +1,76 @@
{
"name": "@jquery/jquery",
"versions": {
"1.5.1": {
"name": "@jquery/jquery",
"description": "jQuery: The Write Less, Do More, JavaScript Library",
"url": "jquery.com",
"keywords": [
"util",
"dom",
"jquery"
],
"author": {
"name": "John Resig",
"email": "jeresig@gmail.com"
},
"contributors": [],
"dependencies": {
"jsdom": "=0.1.20",
"htmlparser": ">= 1.7.3"
},
"lib": "lib",
"main": "./dist/node-jquery.js",
"version": "1.5.1",
"_id": "@jquery/jquery@1.5.1",
"engines": {
"node": "*"
},
"_engineSupported": true,
"_npmVersion": "0.3.15",
"_nodeVersion": "v0.4.2",
"directories": {
"lib": "./lib"
},
"files": [
""
],
"_defaultsLoaded": true,
"dist": {
"shasum": "2ae2d661e906c1a01e044a71bb5b2743942183e5",
"tarball": "https://registry.npmjs.org/@jquery%2jquery/-/jquery-1.5.1.tgz"
},
"deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0."
}
},
"time": {
"modified": "2018-05-21T21:39:54.702Z",
"created": "2011-03-19T07:19:56.392Z",
"1.5.1": "2011-03-19T07:19:56.956Z"
},
"dist-tags": {
"beta": "3.0.0",
"latest": "3.3.1",
"jota": "1.6.3"
},
"_uplinks": {
"npmjs": {
"etag": "W/\"252f0a131cedd3ea82dfefd6fa049558\"",
"fetched": 1529779934081
}
},
"_distfiles": {
"jquery-1.5.1.tgz": {
"url": "https://registry.npmjs.org/@jquery%2jquery/-/jquery-1.5.1.tgz",
"sha": "2ae2d661e906c1a01e044a71bb5b2743942183e5",
"registry": "npmjs"
}
},
"_attachments": {
"jquery-1.5.1.tgz": {
"shasum": "2ae2d661e906c1a01e044a71bb5b2743942183e5"
}
},
"_rev": "60-fed4915c27b9c1e6",
"readme": "# jQuery\n\n> jQuery is a fast, small, and feature-rich JavaScript library.\n\nFor information on how to get started and how to use jQuery, please see [jQuery's documentation](http://api.jquery.com/).\nFor source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery).\n\nIf upgrading, please see the [blog post for 3.3.1](https://blog.jquery.com/2017/03/20/jquery-3.3.1-now-available/). This includes notable differences from the previous version and a more readable changelog.\n\n## Including jQuery\n\nBelow are some of the most common ways to include jQuery.\n\n### Browser\n\n#### Script tag\n\n```html\n<script src=\"https://code.jquery.com/jquery-3.3.1.min.js\"></script>\n```\n\n#### Babel\n\n[Babel](http://babeljs.io/) is a next generation JavaScript compiler. One of the features is the ability to use ES6/ES2015 modules now, even though browsers do not yet support this feature natively.\n\n```js\nimport $ from \"jquery\";\n```\n\n#### Browserify/Webpack\n\nThere are several ways to use [Browserify](http://browserify.org/) and [Webpack](https://webpack.github.io/). For more information on using these tools, please refer to the corresponding project's documention. In the script, including jQuery will usually look like this...\n\n```js\nvar $ = require(\"jquery\");\n```\n\n#### AMD (Asynchronous Module Definition)\n\nAMD is a module format built for the browser. For more information, we recommend [require.js' documentation](http://requirejs.org/docs/whyamd.html).\n\n```js\ndefine([\"jquery\"], function($) {\n\n});\n```\n\n### Node\n\nTo include jQuery in [Node](nodejs.org), first install with npm.\n\n```sh\nnpm install jquery\n```\n\nFor jQuery to work in Node, a window with a document is required. Since no such window exists natively in Node, one can be mocked by tools such as [jsdom](https://github.com/tmpvar/jsdom). This can be useful for testing purposes.\n\n```js\nrequire(\"jsdom\").env(\"\", function(err, window) {\n\tif (err) {\n\t\tconsole.error(err);\n\t\treturn;\n\t}\n\n\tvar $ = require(\"jquery\")(window);\n});\n```"
"name": "@jquery/jquery",
"versions": {
"1.5.1": {
"name": "@jquery/jquery",
"description": "jQuery: The Write Less, Do More, JavaScript Library",
"url": "jquery.com",
"keywords": [
"util",
"dom",
"jquery"
],
"author": {
"name": "John Resig",
"email": "jeresig@gmail.com"
},
"contributors": [],
"dependencies": {
"jsdom": "=0.1.20",
"htmlparser": ">= 1.7.3"
},
"lib": "lib",
"main": "./dist/node-jquery.js",
"version": "1.5.1",
"_id": "@jquery/jquery@1.5.1",
"engines": {
"node": "*"
},
"_engineSupported": true,
"_npmVersion": "0.3.15",
"_nodeVersion": "v0.4.2",
"directories": {
"lib": "./lib"
},
"files": [
""
],
"_defaultsLoaded": true,
"dist": {
"shasum": "2ae2d661e906c1a01e044a71bb5b2743942183e5",
"tarball": "https://registry.npmjs.org/@jquery%2jquery/-/jquery-1.5.1.tgz"
},
"deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0."
}
},
"time": {
"modified": "2018-05-21T21:39:54.702Z",
"created": "2011-03-19T07:19:56.392Z",
"1.5.1": "2011-03-19T07:19:56.956Z"
},
"dist-tags": {
"beta": "3.0.0",
"latest": "3.3.1",
"jota": "1.6.3"
},
"_uplinks": {
"npmjs": {
"etag": "W/\"252f0a131cedd3ea82dfefd6fa049558\"",
"fetched": 1529779934081
}
},
"_distfiles": {
"jquery-1.5.1.tgz": {
"url": "https://registry.npmjs.org/@jquery%2jquery/-/jquery-1.5.1.tgz",
"sha": "2ae2d661e906c1a01e044a71bb5b2743942183e5",
"registry": "npmjs"
}
},
"_attachments": {
"jquery-1.5.1.tgz": {
"shasum": "2ae2d661e906c1a01e044a71bb5b2743942183e5"
}
},
"_rev": "60-fed4915c27b9c1e6",
"readme": "# jQuery\n\n> jQuery is a fast, small, and feature-rich JavaScript library.\n\nFor information on how to get started and how to use jQuery, please see [jQuery's documentation](http://api.jquery.com/).\nFor source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery).\n\nIf upgrading, please see the [blog post for 3.3.1](https://blog.jquery.com/2017/03/20/jquery-3.3.1-now-available/). This includes notable differences from the previous version and a more readable changelog.\n\n## Including jQuery\n\nBelow are some of the most common ways to include jQuery.\n\n### Browser\n\n#### Script tag\n\n```html\n<script src=\"https://code.jquery.com/jquery-3.3.1.min.js\"></script>\n```\n\n#### Babel\n\n[Babel](http://babeljs.io/) is a next generation JavaScript compiler. One of the features is the ability to use ES6/ES2015 modules now, even though browsers do not yet support this feature natively.\n\n```js\nimport $ from \"jquery\";\n```\n\n#### Browserify/Webpack\n\nThere are several ways to use [Browserify](http://browserify.org/) and [Webpack](https://webpack.github.io/). For more information on using these tools, please refer to the corresponding project's documention. In the script, including jQuery will usually look like this...\n\n```js\nvar $ = require(\"jquery\");\n```\n\n#### AMD (Asynchronous Module Definition)\n\nAMD is a module format built for the browser. For more information, we recommend [require.js' documentation](http://requirejs.org/docs/whyamd.html).\n\n```js\ndefine([\"jquery\"], function($) {\n\n});\n```\n\n### Node\n\nTo include jQuery in [Node](nodejs.org), first install with npm.\n\n```sh\nnpm install jquery\n```\n\nFor jQuery to work in Node, a window with a document is required. Since no such window exists natively in Node, one can be mocked by tools such as [jsdom](https://github.com/tmpvar/jsdom). This can be useful for testing purposes.\n\n```js\nrequire(\"jsdom\").env(\"\", function(err, window) {\n\tif (err) {\n\t\tconsole.error(err);\n\t\treturn;\n\t}\n\n\tvar $ = require(\"jquery\")(window);\n});\n```"
}

File diff suppressed because it is too large Load Diff

@ -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
}
}

@ -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;

@ -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;

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

@ -32,7 +32,7 @@ exports[`Utilities parseReadme should parse makrdown text to html template 1`] =
<li>Used to generate RSS Feeds</li>
</ul>
<h2 id=\\"contributing\\">Contributing</h2>
<p>Please read <a href=\\"CONTRIBUTING.md\\">CONTRIBUTING.md</a> for details on our code of conduct, and the process for submitting pull requests to us.</p>
<p>Please read <a href=\\"CONTRIBUTING.md\\">CONTRIBUTING.md</a> for details on our code of conduct, and the process for submitting pull requests to us.</p>
<h2 id=\\"versioning\\">Versioning</h2>
<p>We use <a href=\\"http://semver.org/\\">SemVer</a> for versioning. For the versions available, see the <a href=\\"https://github.com/your/project/tags\\">tags on this repository</a>.</p>
<h2 id=\\"license\\">License</h2>

@ -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' },
'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' } ] };
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' }],
};

@ -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

@ -58,13 +58,13 @@ 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
Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.
Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.
## Versioning
@ -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

@ -1,5 +1,5 @@
# Verdaccio Core
```bash
npm install --global verdaccio
npm install --global verdaccio
```

@ -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
@ -40,14 +40,14 @@ Unit tests aim to test the CLI API and the Web API. The configuration file is lo
We have prepared a template at `test/unit/api/api.__test.template.spec.ts` that you can follow to create your own unit test. Only the tests are appended with `.spec.ts` which will be found and used by `jest`.
> Feel free to suggest improvements to the template, there is still a lot of room for improvement.
> Feel free to suggest improvements to the template, there is still a lot of room for improvement.
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,59 +56,60 @@ 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();
app = await endPointAPI(configForTest);
mockRegistry = await mockServer(mockServerPort).init();
```
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.**
The `app = await endPointAPI(configForTest);` is the server that you are about to run your test against. The `app` object is used to call the endoints, for instance:
```js
```js
test('should fetch jquery package from remote uplink', (done) => {
request(app)
.get('/jquery')
.set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(HTTP_STATUS.OK)
.end(function(err, res) {
if (err) {
return done(err);
}
request(app)
.get('/jquery')
.set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(HTTP_STATUS.OK)
.end(function (err, res) {
if (err) {
return done(err);
}
expect(res.body).toBeDefined();
expect(res.body.name).toMatch(/jquery/);
done();
});
expect(res.body).toBeDefined();
expect(res.body.name).toMatch(/jquery/);
done();
});
});
```
@ -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,62 +199,59 @@ 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
The functional tests aim to run only **cli endpoint** and **web point** using real request to an existing and compiled running Verdaccio server.
> Be aware if you change something in the `{root}/src` source code, you must run `yarn code:build` before to be able to see your changes because functional tests use the transpiled code.
> Be aware if you change something in the `{root}/src` source code, you must run `yarn code:build` before to be able to see your changes because functional tests use the transpiled code.
All tests must be included in the `test/functional/index.spec.ts` file, which bootstraps the whole process. There is only one spec file and **must be only one**.
The jest configuration file is defined in `test/jest.config.functional.js`. The configuration will create a custom environment launching 3 Verdaccio servers with different configurations.
The servers are linked as follows:
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.
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) {
export default function (server) {
describe('package access control', () => {
test('should ...', (done) => {
done();
});
});
}
```
Then import the feature and run the function within the main `describe` block.
Then import the feature and run the function within the main `describe` block.
```js
// index.spec.ts
import newFeature from './newFeature';
describe('functional test verdaccio', function() {
describe('functional test verdaccio', function () {
// test are fast, but do not change this time out, 10 seconds should be more than enough
jest.setTimeout(10000);
// servers are accessed via a global jest state.
@ -272,39 +269,33 @@ Functional tests run over one single file, thus, it is not possible at this stag
## E2E Test
Verdaccio includes a Web User Interface that must be tested. We use End-to-End testing to run some mock tests against the web API using the UI Theme
Verdaccio includes a Web User Interface that must be tested. We use End-to-End testing to run some mock tests against the web API using the UI Theme
include by default.
```bash
yarn lint && yarn test:all
```
The test does not have aim to test the integrity of the page, mostly, ensure the basic functionality still works. If you add or modify
The test does not have aim to test the integrity of the page, mostly, ensure the basic functionality still works. If you add or modify
a UI feature, the tests must be updated.
> The tests rely on CSS classes naming convention, so, it is required some sort of coordination with the **verdaccio/ui** project.
We uses `puppeteer`, you can find more information about how to use it in their website.
We uses `puppeteer`, you can find more information about how to use it in their website.
## Before commit
We recommend run your tests and linters before commit.
We recommend run your tests and linters before commit.
```bash
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
Verdaccio uses [CircleCI](https://circleci.com/gh/verdaccio) as its primary Continuous Integration tool. We run the tests against the most common Node.js versions available. Among them is LTS and the latest release. Before the PR is being merged, all checks must be green.
Node.js versions available, LTS and the latest release. Before the PR is being merged, all check must be green.
> You need a CircleCI account to be able see the test running
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

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

@ -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;

@ -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;

@ -1,48 +1,48 @@
{
"name": "__NAME__",
"versions": {
"0.1.0": {
"name": "__NAME__",
"version": "0.1.0",
"dist": {
"shasum": "fake",
"tarball": "http://localhost:55551/__NAME__/-/blahblah"
}
},
"0.1.1alpha": {
"name": "__NAME__",
"version": "0.1.1alpha",
"dist": {
"shasum": "fake",
"tarball": "http://localhost:55551/__NAME__/-/blahblah"
}
},
"0.1.2": {
"name": "__NAME__",
"version": "0.1.2",
"dist": {
"shasum": "fake",
"tarball": "http://localhost:55551/__NAME__/-/blahblah"
}
},
"0.1.3alpha": {
"name": "__NAME__",
"version": "0.1.3alpha",
"dist": {
"shasum": "fake",
"tarball": "http://localhost:55551/__NAME__/-/blahblah"
}
},
"1.1.0": {
"name": "__NAME__",
"version": "1.1.0",
"dist": {
"shasum": "fake",
"tarball": "http://localhost:55551/__NAME__/-/blahblah"
}
}
},
"dist-tags": {
"latest": "1.1.0"
}
"name": "__NAME__",
"versions": {
"0.1.0": {
"name": "__NAME__",
"version": "0.1.0",
"dist": {
"shasum": "fake",
"tarball": "http://localhost:55551/__NAME__/-/blahblah"
}
},
"0.1.1alpha": {
"name": "__NAME__",
"version": "0.1.1alpha",
"dist": {
"shasum": "fake",
"tarball": "http://localhost:55551/__NAME__/-/blahblah"
}
},
"0.1.2": {
"name": "__NAME__",
"version": "0.1.2",
"dist": {
"shasum": "fake",
"tarball": "http://localhost:55551/__NAME__/-/blahblah"
}
},
"0.1.3alpha": {
"name": "__NAME__",
"version": "0.1.3alpha",
"dist": {
"shasum": "fake",
"tarball": "http://localhost:55551/__NAME__/-/blahblah"
}
},
"1.1.0": {
"name": "__NAME__",
"version": "1.1.0",
"dist": {
"shasum": "fake",
"tarball": "http://localhost:55551/__NAME__/-/blahblah"
}
}
},
"dist-tags": {
"latest": "1.1.0"
}
}

@ -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
}
}

@ -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
}
}

@ -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
}
}

@ -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
}
}

@ -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

@ -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
}
}

@ -4,4 +4,4 @@ This folder is intended to check whether any type update might break plugin impl
## Contribute
- Add more scenarios, middleware, plugins, filters etc.
- Add more scenarios, middleware, plugins, filters etc.

@ -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.

@ -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;

@ -1 +1 @@
{"list":["@verdaccio/test"],"secret":"48cd053de97d4ef34aea4f1efb902334442bea1e735df5fdc9424c986a281b3d"}
{ "list": ["@verdaccio/test"], "secret": "48cd053de97d4ef34aea4f1efb902334442bea1e735df5fdc9424c986a281b3d" }

129
pnpm-lock.yaml generated

@ -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'

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

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

@ -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"]
}

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

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

@ -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
@ -26,4 +26,4 @@ yarn clean && yarn build && yarn serve
#### Deployment
Website is deployed on push on master at [https://alpha.verdaccio.dev/](https://alpha.verdaccio.dev/)
Website is deployed on push on master at [https://alpha.verdaccio.dev/](https://alpha.verdaccio.dev/)

@ -5,12 +5,12 @@ services:
context: .
dockerfile: Dockerfile
ports:
- "8000:8000"
- "9929:9929"
- "9230:9230"
- '8000:8000'
- '9929:9929'
- '9230:9230'
volumes:
- /app/node_modules
- .:/app
environment:
- NODE_ENV=development
- GATSBY_WEBPACK_PUBLICPATH=/
- GATSBY_WEBPACK_PUBLICPATH=/

@ -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

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