Compare commits

...

13 Commits

Author SHA1 Message Date
github-actions[bot]
7fb5c45243 chore: update versions (6-next) (#2227)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2021-05-05 21:16:22 +02:00
Juan Picado
aecbd226de feat: allow ui hide package managers on sidebar (#2226)
* feat: allow ui hide package managers on sidebar

* add test

* add changeset

* chore: remove snapshot

* chore: update config
2021-05-04 21:15:07 +02:00
github-actions[bot]
9ffa205076 chore: update versions (6-next) (#2219)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2021-05-02 09:58:22 +02:00
Slava
1b217fd346 refactor: replace mkdirp with fs.mkdir(Sync) (#2217) 2021-05-02 09:52:12 +02:00
Juan Picado
84373c4669 chore: add migration notes from v5 to master branch 2021-05-01 15:45:18 +02:00
Sergio Moreno
c17ee46519 fix: markdown lists don't render bullet points (#2209) 2021-04-29 19:20:59 +02:00
Juan Picado
6791c2bcfa chore: format md 2021-04-26 08:03:55 +02:00
Juan Picado
9a2f4a4667 Update SECURITY.md 2021-04-26 07:56:07 +02:00
github-actions[bot]
629cbdd6b5 chore: update versions (6-next) (#2203)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2021-04-26 07:48:38 +02:00
Juan Picado
19d272d10e fix: restore logger on init (#2202)
* chore: restore logger on init

* chore: changeset
2021-04-26 07:42:25 +02:00
Juan Picado
6e21bee204 chore: remove not need dependency 2021-04-25 19:35:18 +02:00
Juan Picado
4932d1f47e chore: update contributing file 2021-04-25 19:27:09 +02:00
Juan Picado
cbdccf7177 build: add fastify starting package (#2201)
* chore: add fastify library as example with command

* chore: update format

* chore: add fastify package and start
2021-04-25 13:17:50 +02:00
103 changed files with 1128 additions and 618 deletions

View File

@@ -0,0 +1,11 @@
---
'@verdaccio/config': minor
'@verdaccio/local-storage': minor
'@verdaccio/e2e-ui': minor
---
Some verdaccio modules depend on 'mkdirp' library which provides recursive directory creation functionality.
NodeJS can do this out of the box since v.10.12. The last commit in 'mkdirp' was made in early 2016, and it's mid 2021 now.
Time to stick with a built-in library solution!
- All 'mkdirp' calls are replaced with appropriate 'fs' calls.

View File

@@ -0,0 +1,21 @@
---
'@verdaccio/cli': patch
'@verdaccio/types': patch
'@verdaccio/node-api': patch
'@verdaccio/server': patch
---
fix: restore logger on init
Enable logger after parse configuration and log the very first step on startup phase.
```bash
warn --- experiments are enabled, it is recommended do not use experiments in production comment out this section to disable it
info --- support for experiment [token] is disabled
info --- support for experiment [search] is disabled
(node:50831) Warning: config.logs is deprecated, rename configuration to "config.log"
(Use `node --trace-warnings ...` to show where the warning was created)
info --- http address http://localhost:4873/
info --- version: 6.0.0-6-next.11
info --- server started
```

View File

@@ -38,15 +38,17 @@
"@verdaccio/e2e-cli": "1.0.0",
"@verdaccio/e2e-ui": "1.0.0",
"@verdaccio/cli-standalone": "6.0.0-alpha.3",
"@verdaccio/cli-ui": "6.0.0-alpha.3",
"@verdaccio/tarball": "11.0.0-alpha.3",
"@verdaccio/url": "11.0.0-alpha.3"
"@verdaccio/url": "11.0.0-alpha.3",
"@verdaccio/fastify-migration": "6.0.0-6-next.9"
},
"changesets": [
"big-lobsters-sin",
"few-cooks-destroy",
"fifty-jars-rest",
"gentle-parrots-lay",
"gentle-trains-switch",
"healthy-bikes-behave",
"healthy-poets-compare",
"hip-hounds-destroy",
"late-adults-love",
@@ -64,6 +66,7 @@
"spicy-frogs-press",
"tender-bags-call",
"three-pots-sit",
"two-dolls-check"
"two-dolls-check",
"wild-jokes-beam"
]
}

View File

@@ -0,0 +1,32 @@
---
'@verdaccio/types': minor
'@verdaccio/ui-theme': minor
'@verdaccio/web': minor
---
web: allow ui hide package managers on sidebar
If there is a package manager of preference over others, you can define the package managers to be displayed on the detail page and sidebar, just define in the `config.yaml` and web section the list of package managers to be displayed.
```
web:
title: Verdaccio
sort_packages: asc
primary_color: #cccccc
pkgManagers:
- pnpm
- yarn
# - npm
```
To disable all package managers, just define empty:
```
web:
title: Verdaccio
sort_packages: asc
primary_color: #cccccc
pkgManagers:
```
and the section would be hidden.

View File

@@ -2,7 +2,7 @@
{
"files.exclude": {
"**/.nyc_output": true,
"**/build": false,
"**/build": true,
"**/coverage": true,
".idea": true,
"storage_default_storage": true,

View File

@@ -268,7 +268,7 @@ All commits message are going to be validated when they are created using husky
We use [changesets](https://github.com/atlassian/changesets) in order to generate a detailed Changelog as possible.
Add a changeset with your Pull Request is essential if you want your contribution get merged. To create a changeset please run:
Add a changeset with your Pull Request is essential if you want your contribution get merged (unless is a change that does not affect library functionality, eg: typo, docs, readme, add additional test or linting code). To create a changeset please run:
```
pnpm changeset

View File

@@ -4,11 +4,13 @@
The following table describes the versions of this project that are currently supported with security updates:
| Version | Supported |
| ------- | ------------------ |
| 2.x | :x: |
| 3.x | :x: |
| 4.x | :white_check_mark: |
| Version | Supported |
| --------- | ---------------------------------------- |
| 2.x | :x: |
| 3.x | :x: |
| 4.x | :white_check_mark: (until 1st July 2021) |
| 5.x | :white_check_mark: |
| 6.x alpha | :x: |
## Responsible disclosure security policy

View File

@@ -0,0 +1,76 @@
# Migration guide from Verdaccio 5 to Verdaccio 6
Notes regarding breaking changes for next major release.
> This list might growth over the development.
## Breaking changes
### New node-api interface [#2165](https://github.com/verdaccio/verdaccio/pull/2165)
If you are using the node-api, the new structure is Promise based and less arguments.
```js
import { runServer } from '@verdaccio/node-api';
// or
import { runServer } from 'verdaccio';
const app = await runServer(); // default configuration
const app = await runServer('./config/config.yaml');
const app = await runServer({ configuration });
app.listen(4000, (event) => {
// do something
});
```
### allow other password hashing algorithms [#1917](https://github.com/verdaccio/verdaccio/pull/1917)
The current implementation of the `htpasswd` module supports multiple hash formats on verify, but only `crypt` on sign in.
`crypt` is an insecure old format, so to improve the security of the new `verdaccio` release we introduce the support of multiple hash algorithms on sign in step.
#### New hashing algorithms
The new possible hash algorithms to use are `bcrypt`, `md5`, `sha1`. `bcrypt` is chosen as a default, because of its customizable complexity and overall reliability. You can read more about them [here](https://httpd.apache.org/docs/2.4/misc/password_encryptions.html).
Two new properties are added to `auth` section in the configuration file:
- `algorithm` to choose the way you want to hash passwords.
- `rounds` is used to determine `bcrypt` complexity. So one can improve security according to increasing computational power.
Example of the new `auth` config file section:
```yaml
auth:
htpasswd:
file: ./htpasswd
max_users: 1000
# Hash algorithm, possible options are: "bcrypt", "md5", "sha1", "crypt".
algorithm: bcrypt
# Rounds number for "bcrypt", will be ignored for other algorithms.
rounds: 10
```
### Refactor config module, experiments renamed to flags [#1996](https://github.com/verdaccio/verdaccio/pull/1996)
- The `experiments` configuration is renamed to `flags`. The functionality is exactly the same.
```js
flags: token: false;
search: false;
```
- The `self_path` property from the config file is being removed in favor of `config_file` full path.
- Refactor `config` module, better types and utilities
### legacy token signature by removing crypto.createDecipher is deprecated [#1953](https://github.com/verdaccio/verdaccio/pull/1953)
- Replace signature handler for legacy tokens by removing deprecated crypto.createDecipher by createCipheriv
- **The new signature invalidates all previous tokens generated by Verdaccio 5 or previous versions**.
- The secret key must have 32 characters long
> Remediation, update `.verdaccio-db.json` secret field with a secret key with 32 characters.
#### New environment variables
Introduce environment variables for legacy tokens.
- `VERDACCIO_LEGACY_ALGORITHM`: Allows to define the specific algorithm for the token signature which by default is `aes-256-ctr`
- `VERDACCIO_LEGACY_ENCRYPTION_KEY`: By default, the token stores in the database, but using this variable allows to get it from memory

View File

@@ -1,5 +1,16 @@
# @verdaccio/api
## 6.0.0-6-next.10
### Patch Changes
- Updated dependencies [1b217fd3]
- @verdaccio/config@6.0.0-6-next.6
- @verdaccio/auth@6.0.0-6-next.8
- @verdaccio/hooks@6.0.0-6-next.4
- @verdaccio/store@6.0.0-6-next.8
- @verdaccio/middleware@6.0.0-6-next.8
## 6.0.0-6-next.9
### Patch Changes

View File

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

View File

@@ -1,5 +1,13 @@
# @verdaccio/auth
## 6.0.0-6-next.8
### Patch Changes
- Updated dependencies [1b217fd3]
- @verdaccio/config@6.0.0-6-next.6
- @verdaccio/loaders@6.0.0-6-next.4
## 6.0.0-6-next.7
### Patch Changes

View File

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

View File

@@ -1,5 +1,45 @@
# @verdaccio/cli
## 6.0.0-6-next.14
### Patch Changes
- @verdaccio/fastify-migration@6.0.0-6-next.9
- @verdaccio/logger@6.0.0-6-next.4
- @verdaccio/node-api@6.0.0-6-next.14
## 6.0.0-6-next.13
### Patch Changes
- Updated dependencies [1b217fd3]
- @verdaccio/config@6.0.0-6-next.6
- @verdaccio/node-api@6.0.0-6-next.13
## 6.0.0-6-next.12
### Patch Changes
- 19d272d1: fix: restore logger on init
Enable logger after parse configuration and log the very first step on startup phase.
```bash
warn --- experiments are enabled, it is recommended do not use experiments in production comment out this section to disable it
info --- support for experiment [token] is disabled
info --- support for experiment [search] is disabled
(node:50831) Warning: config.logs is deprecated, rename configuration to "config.log"
(Use `node --trace-warnings ...` to show where the warning was created)
info --- http address http://localhost:4873/
info --- version: 6.0.0-6-next.11
info --- server started
```
- Updated dependencies [19d272d1]
- @verdaccio/node-api@6.0.0-6-next.12
- @verdaccio/fastify-migration@6.0.0-6-next.9
- @verdaccio/logger@6.0.0-6-next.4
## 6.0.0-6-next.11
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/cli",
"version": "6.0.0-6-next.11",
"version": "6.0.0-6-next.14",
"author": {
"name": "Juan Picado",
"email": "juanpicado19@gmail.com"
@@ -26,7 +26,7 @@
"verdaccio"
],
"engines": {
"node": ">=10",
"node": ">=12",
"npm": ">=6"
},
"description": "verdaccio CLI",
@@ -43,9 +43,10 @@
"build": "pnpm run build:js && pnpm run build:types"
},
"dependencies": {
"@verdaccio/config": "workspace:6.0.0-6-next.5",
"@verdaccio/cli-ui": "workspace:6.0.0-alpha.3",
"@verdaccio/node-api": "workspace:6.0.0-6-next.11",
"@verdaccio/config": "workspace:6.0.0-6-next.6",
"@verdaccio/logger": "workspace:6.0.0-6-next.4",
"@verdaccio/node-api": "workspace:6.0.0-6-next.14",
"@verdaccio/fastify-migration": "workspace:6.0.0-6-next.9",
"commander": "6.2.0",
"clipanion": "3.0.0-rc.11",
"envinfo": "7.4.0",

View File

@@ -1,8 +1,9 @@
import { displayError } from '@verdaccio/cli-ui';
import { Cli } from 'clipanion';
import { InfoCommand } from './commands/info';
import { InitCommand } from './commands/init';
import { VersionCommand } from './commands/version';
import { NewServer } from './commands/newServer';
import { isVersionValid, MIN_NODE_VERSION } from './utils';
if (process.getuid && process.getuid() === 0) {
@@ -27,10 +28,11 @@ const cli = new Cli({
cli.register(InfoCommand);
cli.register(InitCommand);
cli.register(VersionCommand);
cli.register(NewServer);
cli.runExit(args, Cli.defaultContext);
process.on('uncaughtException', function (err) {
displayError(
console.error(
// eslint-disable-next-line max-len
`uncaught exception, please report (https://github.com/verdaccio/verdaccio/issues) this: \n${err.stack}`
);

View File

@@ -1,6 +1,8 @@
import { Command, Option } from 'clipanion';
import { findConfigFile, parseConfigFile } from '@verdaccio/config';
import { setup, logger } from '@verdaccio/logger';
import { initServer } from '@verdaccio/node-api';
import { ConfigRuntime } from '@verdaccio/types';
export const DEFAULT_PROCESS_NAME: string = 'verdaccio';
@@ -41,10 +43,23 @@ export class InitCommand extends Command {
description: 'use this configuration file (default: ./config.yaml)',
});
private initLogger(logConfig: ConfigRuntime) {
try {
if (logConfig.logs) {
process.emitWarning('config.logs is deprecated, rename configuration to "config.log"');
}
// FUTURE: remove fallback when is ready
setup(logConfig.log || logConfig.logs);
} catch {
throw new Error('error on init logger');
}
}
public async execute() {
try {
const configPathLocation = findConfigFile(this.config as string);
const configParsed = parseConfigFile(configPathLocation);
this.initLogger(configParsed);
const { web } = configParsed;
process.title = web?.title || DEFAULT_PROCESS_NAME;
@@ -52,6 +67,7 @@ export class InitCommand extends Command {
const { version, name } = require('../../package.json');
await initServer(configParsed, this.port as string, version, name);
logger.info('server started');
} catch (err) {
console.error(err);
process.exit(1);

View File

@@ -0,0 +1,38 @@
import { Command, Option } from 'clipanion';
import { findConfigFile, parseConfigFile } from '@verdaccio/config';
import server from '@verdaccio/fastify-migration';
export const DEFAULT_PROCESS_NAME: string = 'verdaccio';
/**
* This command is intended to run the server with Fastify
* as a migration step.
*/
export class NewServer extends Command {
public static paths = [['new']];
private port = Option.String('-l,-p,--listen,--port', {
description: 'host:port number to listen on (default: localhost:4873)',
});
private config = Option.String('-c,--config', {
description: 'use this configuration file (default: ./config.yaml)',
});
public async execute() {
try {
const configPathLocation = findConfigFile(this.config as string);
const configParsed = parseConfigFile(configPathLocation);
const { web } = configParsed;
process.title = web?.title || DEFAULT_PROCESS_NAME;
// const { version, name } = require('../../package.json');
const ser = await server();
await ser.listen(4000);
console.log('fastify running on port 4000');
} catch (err) {
console.error(err);
process.exit(1);
}
}
}

View File

@@ -13,8 +13,14 @@
{
"path": "../core/cli-ui"
},
{
"path": "../core/server"
},
{
"path": "../node-api"
},
{
"path": "../logger"
}
]
}

View File

@@ -1,5 +1,15 @@
# @verdaccio/config
## 6.0.0-6-next.6
### Minor Changes
- 1b217fd3: Some verdaccio modules depend on 'mkdirp' library which provides recursive directory creation functionality.
NodeJS can do this out of the box since v.10.12. The last commit in 'mkdirp' was made in early 2016, and it's mid 2021 now.
Time to stick with a built-in library solution!
- All 'mkdirp' calls are replaced with appropriate 'fs' calls.
## 6.0.0-6-next.5
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/config",
"version": "6.0.0-6-next.5",
"version": "6.0.0-6-next.6",
"description": "logger",
"main": "./build/index.js",
"types": "build/index.d.ts",
@@ -45,7 +45,6 @@
"js-yaml": "3.14.0",
"lodash": "^4.17.20",
"minimatch": "3.0.4",
"mkdirp": "0.5.5",
"yup": "^0.29.3"
},
"devDependencies": {

View File

@@ -2,7 +2,6 @@ import fs from 'fs';
import path from 'path';
import Path from 'path';
import _ from 'lodash';
import mkdirp from 'mkdirp';
import buildDebug from 'debug';
import { CHARACTER_ENCODING } from '@verdaccio/commons-api';
@@ -67,7 +66,7 @@ export function readDefaultConfig(): Buffer {
}
function createConfigFolder(configLocation): void {
mkdirp.sync(Path.dirname(configLocation.path));
fs.mkdirSync(Path.dirname(configLocation.path), { recursive: true });
debug(`Creating default config file in %o`, configLocation?.path);
}

View File

@@ -1,6 +0,0 @@
{
"extends": "../../../.babelrc",
"presets": [
"@babel/preset-react"
]
}

View File

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

View File

@@ -1 +0,0 @@
export * from './messages';

View File

@@ -1,25 +0,0 @@
import chalk from 'chalk';
import terminalLink from 'terminal-link';
export const PRIMARY_COLOR = `#24394e`;
export function displayMessage(message: string) {
console.log(chalk.hex(PRIMARY_COLOR).bold(message));
}
export function displayWarning(message: string) {
console.log(chalk.yellow.bold(message));
}
export function displayError(message: string) {
console.log(chalk.red.bold(message));
}
export function displayLink(url: string) {
if (terminalLink.isSupported) {
const link = terminalLink(url, url);
return chalk.blue.underline(link);
}
return url;
}

View File

@@ -1,3 +0,0 @@
describe('cli ui', () => {
test.todo('add required test for this module');
});

View File

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

View File

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

View File

@@ -1,5 +1,15 @@
# Change Log
## 11.0.0-6-next.6
### Minor Changes
- 1b217fd3: Some verdaccio modules depend on 'mkdirp' library which provides recursive directory creation functionality.
NodeJS can do this out of the box since v.10.12. The last commit in 'mkdirp' was made in early 2016, and it's mid 2021 now.
Time to stick with a built-in library solution!
- All 'mkdirp' calls are replaced with appropriate 'fs' calls.
## 11.0.0-6-next.5
### Major Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/local-storage",
"version": "11.0.0-6-next.5",
"version": "11.0.0-6-next.6",
"description": "Local storage implementation",
"keywords": [
"private",
@@ -43,12 +43,11 @@
"async": "^3.2.0",
"debug": "^4.1.1",
"lodash": "^4.17.20",
"lowdb": "1.0.0",
"mkdirp": "^0.5.5"
"lowdb": "1.0.0"
},
"devDependencies": {
"@types/minimatch": "^3.0.3",
"@verdaccio/types": "workspace:11.0.0-6-next.4",
"@verdaccio/types": "workspace:11.0.0-6-next.6",
"minimatch": "^3.0.4",
"rmdir-sync": "^1.0.1"
},

View File

@@ -4,7 +4,6 @@ import buildDebug from 'debug';
import _ from 'lodash';
import async from 'async';
import mkdirp from 'mkdirp';
import {
Callback,
Config,
@@ -276,10 +275,9 @@ class LocalDatabase extends TokenActions implements IPluginStorage<{}> {
}
// Uses sync to prevent ugly race condition
try {
// https://www.npmjs.com/package/mkdirp#mkdirpsyncdir-opts
const folderName = Path.dirname(this.path);
debug('creating folder %o', folderName);
mkdirp.sync(folderName);
fs.mkdirSync(folderName, { recursive: true });
debug('sync folder %o created succeed', folderName);
} catch (err) {
debug('sync create folder has failed with error: %o', err);

View File

@@ -5,7 +5,6 @@ import path from 'path';
import buildDebug from 'debug';
import _ from 'lodash';
import mkdirp from 'mkdirp';
import { UploadTarball, ReadTarball } from '@verdaccio/streams';
import { unlockFile, readFile } from '@verdaccio/file-locking';
import { Callback, Logger, Package, ILocalPackageManager, IUploadTarball } from '@verdaccio/types';
@@ -353,7 +352,7 @@ export default class LocalFS implements ILocalFSPackageManager {
createTempFile((err) => {
if (err && err.code === noSuchFile) {
mkdirp(path.dirname(dest), function (err) {
fs.mkdir(path.dirname(dest), { recursive: true }, function (err) {
if (err) {
return cb(err);
}

View File

@@ -1,7 +1,6 @@
import path from 'path';
import fs from 'fs';
import mkdirp from 'mkdirp';
import rm from 'rmdir-sync';
import { Logger, ILocalPackageManager, Package } from '@verdaccio/types';
@@ -113,7 +112,7 @@ describe('Local FS test', () => {
describe('removePackage() group', () => {
beforeEach(() => {
mkdirp.sync(path.join(localTempStorage, '_toDelete'));
fs.mkdirSync(path.join(localTempStorage, '_toDelete'), { recursive: true });
});
test('removePackage() success', (done) => {
@@ -183,7 +182,7 @@ describe('Local FS test', () => {
beforeEach(() => {
const writeTarballFolder: string = path.join(localTempStorage, '_writeTarball');
rm(writeTarballFolder);
mkdirp.sync(writeTarballFolder);
fs.mkdirSync(writeTarballFolder, { recursive: true });
});
test('writeTarball() success', (done) => {

View File

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

View File

@@ -0,0 +1,3 @@
{
"extends": "../../../.babelrc"
}

View File

@@ -0,0 +1,6 @@
node_modules
coverage/
lib/
.nyc_output
tests-report/
build/

View File

@@ -0,0 +1,5 @@
{
"rules": {
"@typescript-eslint/no-use-before-define": "off"
}
}

1
packages/core/server/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
lib/

View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 Verdaccio
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,9 @@
# Server Fastify (migration)
A package intended to start a migration from Express to fastify. (WIP).
Run from root folder
```js
pnpm debug -- new
```

View File

@@ -1,7 +1,7 @@
{
"name": "@verdaccio/cli-ui",
"version": "6.0.0-alpha.3",
"description": "cli ui components",
"name": "@verdaccio/fastify-migration",
"version": "6.0.0-6-next.9",
"description": "Fastify server migration package",
"keywords": [
"private",
"package",
@@ -13,13 +13,19 @@
"server",
"verdaccio"
],
"main": "./build/index.js",
"types": "./build/index.d.ts",
"author": "Juan Picado <juanpicado19@gmail.com>",
"license": "MIT",
"homepage": "https://verdaccio.org",
"engines": {
"node": ">=12",
"npm": ">=6"
},
"repository": {
"type": "https",
"url": "https://github.com/verdaccio/verdaccio",
"directory": "packages/core/cli-ui"
"directory": "packages/core/streams"
},
"bugs": {
"url": "https://github.com/verdaccio/verdaccio/issues"
@@ -27,22 +33,15 @@
"publishConfig": {
"access": "public"
},
"main": "build/index.js",
"types": "build/index.d.ts",
"files": [
"build"
],
"engines": {
"node": ">=10",
"npm": ">=6"
},
"dependencies": {
"chalk": "^4.1.0",
"terminal-link": "^2.1.1"
"fastify": "3.14.2"
},
"devDependencies": {
"@verdaccio/types": "workspace:11.0.0-6-next.6"
},
"scripts": {
"clean": "rimraf ./build",
"test": "cross-env NODE_ENV=test BABEL_ENV=test jest",
"type-check": "tsc --noEmit -p tsconfig.build.json",
"build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json",
"build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps",
"watch": "pnpm build:js -- --watch",

View File

@@ -0,0 +1 @@
export { default } from './server';

View File

@@ -0,0 +1,13 @@
import fastify from 'fastify';
async function startServer() {
const app = fastify();
app.get('/', async (request, reply) => {
return { hello: 'world' };
});
return app;
}
export default startServer;

View File

@@ -2,10 +2,8 @@
"extends": "../../../tsconfig.reference.json",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./build",
"composite": true,
"declaration": true
"outDir": "./build"
},
"include": ["src/**/*.ts"],
"include": ["src/**/*"],
"exclude": ["src/**/*.test.ts"]
}

View File

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

View File

@@ -41,7 +41,7 @@
"@verdaccio/utils": "workspace:6.0.0-6-next.4"
},
"devDependencies": {
"@verdaccio/types": "workspace:11.0.0-6-next.4",
"@verdaccio/types": "workspace:11.0.0-6-next.6",
"express": "^4.17.1",
"node-mocks-http": "^1.10.1"
},

View File

@@ -1,5 +1,55 @@
# Change Log
## 11.0.0-6-next.6
### Minor Changes
- aecbd226: web: allow ui hide package managers on sidebar
If there is a package manager of preference over others, you can define the package managers to be displayed on the detail page and sidebar, just define in the `config.yaml` and web section the list of package managers to be displayed.
```
web:
title: Verdaccio
sort_packages: asc
primary_color: #cccccc
pkgManagers:
- pnpm
- yarn
# - npm
```
To disable all package managers, just define empty:
```
web:
title: Verdaccio
sort_packages: asc
primary_color: #cccccc
pkgManagers:
```
and the section would be hidden.
## 11.0.0-6-next.5
### Patch Changes
- 19d272d1: fix: restore logger on init
Enable logger after parse configuration and log the very first step on startup phase.
```bash
warn --- experiments are enabled, it is recommended do not use experiments in production comment out this section to disable it
info --- support for experiment [token] is disabled
info --- support for experiment [search] is disabled
(node:50831) Warning: config.logs is deprecated, rename configuration to "config.log"
(Use `node --trace-warnings ...` to show where the warning was created)
info --- http address http://localhost:4873/
info --- version: 6.0.0-6-next.11
info --- server started
```
## 11.0.0-6-next.4
### Major Changes

View File

@@ -15,6 +15,50 @@ declare module '@verdaccio/types' {
url?: string;
}
type PackageManagers = 'pnpm' | 'yarn' | 'npm';
// FUTURE: WebConf and TemplateUIOptions should be merged .
type CommonWebConf = {
title?: string;
logo?: string;
favicon?: string;
gravatar?: boolean;
sort_packages?: string;
darkMode?: boolean;
url_prefix?: string;
language?: string;
scope?: string;
pkgManagers?: PackageManagers[];
};
/**
* Options are passed to the index.html
*/
export type TemplateUIOptions = {
uri?: string;
darkMode?: boolean;
protocol?: string;
host?: string;
base: string;
primaryColor?: string;
version?: string;
logoURI?: string;
} & CommonWebConf;
/**
* Options on config.yaml for web
*/
type WebConf = {
// FIXME: rename to primaryColor and move it to CommonWebConf
primary_color?: string;
enable?: boolean;
scriptsHead?: string[];
scriptsBodyAfter?: string[];
metaScripts?: string[];
bodyBefore?: string[];
bodyAfter?: string[];
} & CommonWebConf;
interface Dist {
integrity?: string;
shasum: string;
@@ -276,23 +320,6 @@ declare module '@verdaccio/types' {
interface ListenAddress {
[key: string]: string;
}
interface WebConf {
enable?: boolean;
title?: string;
logo?: string;
favicon?: string;
gravatar?: boolean;
sort_packages?: string;
scriptsHead?: string[];
scriptsBodyAfter?: string[];
metaScripts?: string[];
bodyBefore?: string[];
bodyAfter?: string[];
darkMode?: boolean;
primary_color?: string;
}
interface HttpsConfKeyCert {
key: string;
cert: string;
@@ -371,7 +398,9 @@ declare module '@verdaccio/types' {
storage?: string | void;
packages: PackageList;
uplinks: UpLinksConfList;
// @deprecated in favor of log
logs?: LoggerConf[];
log?: LoggerConf[];
web?: WebConf;
auth?: AuthConf;
security: Security;

View File

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

View File

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

View File

@@ -38,10 +38,10 @@
"request": "2.87.0"
},
"devDependencies": {
"@verdaccio/auth": "workspace:6.0.0-6-next.7",
"@verdaccio/auth": "workspace:6.0.0-6-next.8",
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3",
"@verdaccio/config": "workspace:6.0.0-6-next.5",
"@verdaccio/types": "workspace:11.0.0-6-next.4",
"@verdaccio/config": "workspace:6.0.0-6-next.6",
"@verdaccio/types": "workspace:11.0.0-6-next.6",
"nock": "^13.0.4"
},
"scripts": {

View File

@@ -19,9 +19,9 @@
},
"devDependencies": {
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3",
"@verdaccio/config": "workspace:6.0.0-6-next.5",
"@verdaccio/mock": "workspace:6.0.0-6-next.5",
"@verdaccio/types": "workspace:11.0.0-6-next.4"
"@verdaccio/config": "workspace:6.0.0-6-next.6",
"@verdaccio/mock": "workspace:6.0.0-6-next.6",
"@verdaccio/types": "workspace:11.0.0-6-next.6"
},
"homepage": "https://verdaccio.org",
"keywords": [

View File

@@ -39,7 +39,6 @@
"build": "pnpm run build:js && pnpm run build:types"
},
"dependencies": {
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3",
"dayjs": "1.8.36",
"fast-safe-stringify": "2.0.7",
"kleur": "3.0.3",

View File

@@ -46,7 +46,7 @@
},
"devDependencies": {
"@types/pino": "^6.3.3",
"@verdaccio/types": "workspace:11.0.0-6-next.4"
"@verdaccio/types": "workspace:11.0.0-6-next.6"
},
"funding": {
"type": "opencollective",

View File

@@ -1,5 +1,11 @@
# @verdaccio/middleware
## 6.0.0-6-next.8
### Patch Changes
- @verdaccio/auth@6.0.0-6-next.8
## 6.0.0-6-next.7
### Patch Changes

View File

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

View File

@@ -1,5 +1,12 @@
# @verdaccio/mock
## 6.0.0-6-next.6
### Patch Changes
- Updated dependencies [1b217fd3]
- @verdaccio/config@6.0.0-6-next.6
## 6.0.0-6-next.5
### Patch Changes

View File

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

View File

@@ -1,5 +1,43 @@
# @verdaccio/node-api
## 6.0.0-6-next.14
### Patch Changes
- @verdaccio/logger@6.0.0-6-next.4
- @verdaccio/server@6.0.0-6-next.13
## 6.0.0-6-next.13
### Patch Changes
- Updated dependencies [1b217fd3]
- @verdaccio/config@6.0.0-6-next.6
- @verdaccio/server@6.0.0-6-next.12
## 6.0.0-6-next.12
### Patch Changes
- 19d272d1: fix: restore logger on init
Enable logger after parse configuration and log the very first step on startup phase.
```bash
warn --- experiments are enabled, it is recommended do not use experiments in production comment out this section to disable it
info --- support for experiment [token] is disabled
info --- support for experiment [search] is disabled
(node:50831) Warning: config.logs is deprecated, rename configuration to "config.log"
(Use `node --trace-warnings ...` to show where the warning was created)
info --- http address http://localhost:4873/
info --- version: 6.0.0-6-next.11
info --- server started
```
- Updated dependencies [19d272d1]
- @verdaccio/server@6.0.0-6-next.11
- @verdaccio/logger@6.0.0-6-next.4
## 6.0.0-6-next.11
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/node-api",
"version": "6.0.0-6-next.11",
"version": "6.0.0-6-next.14",
"description": "node API",
"main": "build/index.js",
"types": "build/index.d.ts",
@@ -40,17 +40,16 @@
"license": "MIT",
"dependencies": {
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3",
"@verdaccio/config": "workspace:6.0.0-6-next.5",
"@verdaccio/cli-ui": "workspace:6.0.0-alpha.3",
"@verdaccio/server": "workspace:6.0.0-6-next.10",
"@verdaccio/config": "workspace:6.0.0-6-next.6",
"@verdaccio/server": "workspace:6.0.0-6-next.13",
"@verdaccio/logger": "workspace:6.0.0-6-next.4",
"core-js": "^3.6.5",
"debug": "^4.2.0",
"lodash": "^4.17.20"
},
"devDependencies": {
"@verdaccio/mock": "workspace:6.0.0-6-next.5",
"@verdaccio/types": "workspace:11.0.0-6-next.4",
"@verdaccio/mock": "workspace:6.0.0-6-next.6",
"@verdaccio/types": "workspace:11.0.0-6-next.6",
"jest-mock-process": "^1.4.0",
"selfsigned": "1.10.7",
"supertest": "^6.1.3"

View File

@@ -1,4 +1,4 @@
import { displayWarning, displayMessage } from '@verdaccio/cli-ui';
import { logger } from '@verdaccio/logger';
export function displayExperimentsInfoBox(flags) {
if (!flags) {
@@ -7,14 +7,16 @@ export function displayExperimentsInfoBox(flags) {
const experimentList = Object.keys(flags);
if (experimentList.length >= 1) {
displayWarning(
'⚠️ experiments are enabled, we recommend do not use experiments in production, ' +
'comment out this section to disable it'
logger.warn(
// eslint-disable-next-line max-len
`experiments are enabled, it is recommended do not use experiments in production comment out this section to disable it`
);
experimentList.forEach((experiment) => {
displayMessage(
` - support for ${experiment} ${flags[experiment] ? 'is enabled' : ' is disabled'}
`
// eslint-disable-next-line max-len
logger.info(
`support for experiment [${experiment}] ${
flags[experiment] ? 'is enabled' : ' is disabled'
}`
);
});
}

View File

@@ -10,7 +10,7 @@ import url from 'url';
import { findConfigFile, parseConfigFile } from '@verdaccio/config';
import { API_ERROR } from '@verdaccio/commons-api';
import { ConfigRuntime, HttpsConfKeyCert, HttpsConfPfx } from '@verdaccio/types';
import { setup } from '@verdaccio/logger';
import { setup, logger } from '@verdaccio/logger';
import server from '@verdaccio/server';
import { getListListenAddresses } from './cli-utils';
import { displayExperimentsInfoBox } from './experiments';
@@ -132,8 +132,8 @@ export async function initServer(
pathname: '/',
})
}`;
console.log(`http address ${addressServer}`);
console.log(`${pkgName} / ${version}`);
logger.info(`http address ${addressServer}`);
logger.info(`version: ${version}`);
resolve();
})
.on('error', function (err): void {

View File

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

View File

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

View File

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

View File

@@ -36,7 +36,7 @@
"aws-sdk": "^2.607.0"
},
"devDependencies": {
"@verdaccio/types": "workspace:11.0.0-6-next.4",
"@verdaccio/types": "workspace:11.0.0-6-next.6",
"recursive-readdir": "2.2.2"
},
"scripts": {

View File

@@ -37,7 +37,7 @@
"@verdaccio/streams": "workspace:11.0.0-alpha.3"
},
"devDependencies": {
"@verdaccio/types": "workspace:11.0.0-6-next.4",
"@verdaccio/types": "workspace:11.0.0-6-next.6",
"memory-fs": "0.5.0"
},
"optionalDependencies": {

View File

@@ -38,7 +38,7 @@
"memfs": "3.2.0"
},
"devDependencies": {
"@verdaccio/types": "workspace:11.0.0-6-next.4"
"@verdaccio/types": "workspace:11.0.0-6-next.6"
},
"scripts": {
"clean": "rimraf ./build",

View File

@@ -1,5 +1,36 @@
# @verdaccio/ui-theme
## 6.0.0-6-next.7
### Minor Changes
- aecbd226: web: allow ui hide package managers on sidebar
If there is a package manager of preference over others, you can define the package managers to be displayed on the detail page and sidebar, just define in the `config.yaml` and web section the list of package managers to be displayed.
```
web:
title: Verdaccio
sort_packages: asc
primary_color: #cccccc
pkgManagers:
- pnpm
- yarn
# - npm
```
To disable all package managers, just define empty:
```
web:
title: Verdaccio
sort_packages: asc
primary_color: #cccccc
pkgManagers:
```
and the section would be hidden.
## 6.0.0-6-next.6
### Patch Changes

View File

@@ -15,6 +15,7 @@ global.__VERDACCIO_BASENAME_UI_OPTIONS = {
darkMode: false,
language: 'en-US',
uri: 'http://localhost:4873',
pkgManagers: ['pnpm', 'yarn', 'npm'],
title: 'Verdaccio Dev UI',
scope: '',
version: 'v1.0.0',

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/ui-theme",
"version": "6.0.0-6-next.6",
"version": "6.0.0-6-next.7",
"description": "Verdaccio User Interface",
"author": {
"name": "Verdaccio Core Team",
@@ -29,7 +29,7 @@
"@testing-library/dom": "^7.29.0",
"@testing-library/jest-dom": "^5.11.6",
"@testing-library/react": "10.4.9",
"@verdaccio/node-api": "workspace:6.0.0-6-next.11",
"@verdaccio/node-api": "workspace:6.0.0-6-next.14",
"autosuggest-highlight": "3.1.1",
"babel-loader": "^8.2.2",
"babel-plugin-dynamic-import-node": "^2.3.3",

View File

@@ -34,7 +34,7 @@ const ActionBar: React.FC = () => {
}
return (
<Box alignItems="center" display="flex" marginBottom="8px">
<Box alignItems="center" display="flex" marginBottom="14px">
{actions.map((action) => (
<ActionBarAction key={action.link} {...action} />
))}

View File

@@ -16,4 +16,7 @@ const Wrapper = styled('div')<{ theme?: Theme }>(({ theme }) => ({
background: theme?.palette.white,
color: theme?.palette.black,
padding: theme?.spacing(2, 3),
ul: {
listStyle: 'disc',
},
}));

View File

@@ -9,6 +9,10 @@ Object {
padding: 16px 24px;
}
.emotion-0 ul {
list-style: disc;
}
<body>
<div>
<div
@@ -24,6 +28,10 @@ Object {
padding: 16px 24px;
}
.emotion-0 ul {
list-style: disc;
}
<div>
<div
class="markdown-body emotion-0 emotion-1"

View File

@@ -1,6 +1,6 @@
import React from 'react';
import { render } from 'verdaccio-ui/utils/test-react-testing-library';
import { render, screen } from 'verdaccio-ui/utils/test-react-testing-library';
import { DetailContext } from '../../context';
import { DetailContextProps } from '../../version-config';
@@ -22,11 +22,14 @@ const ComponentToBeRendered: React.FC = () => (
/* eslint-disable react/jsx-no-bind*/
describe('<Install />', () => {
test('renders correctly', () => {
const { container } = render(<ComponentToBeRendered />);
expect(container.firstChild).toMatchSnapshot();
render(<ComponentToBeRendered />);
expect(screen.getByText('pnpm install foo')).toBeInTheDocument();
expect(screen.getByText('yarn add foo')).toBeInTheDocument();
expect(screen.getByText('npm install foo')).toBeInTheDocument();
});
test('should have 3 children', () => {
window.__VERDACCIO_BASENAME_UI_OPTIONS.pkgManagers = ['yarn', 'pnpm', 'npm'];
const { getByTestId } = render(<ComponentToBeRendered />);
const installListItems = getByTestId('installList');
// installitems + subHeader = 4
@@ -34,13 +37,17 @@ describe('<Install />', () => {
});
test('should have the element NPM', () => {
window.__VERDACCIO_BASENAME_UI_OPTIONS.pkgManagers = ['npm'];
const { getByTestId, queryByText } = render(<ComponentToBeRendered />);
expect(getByTestId('installListItem-npm')).toBeTruthy();
expect(queryByText(`npm install ${detailContextValue.packageName}`)).toBeTruthy();
expect(queryByText('Install using npm')).toBeTruthy();
expect(screen.queryByText('pnpm install foo')).not.toBeInTheDocument();
expect(screen.queryByText('yarn add foo')).not.toBeInTheDocument();
});
test('should have the element YARN', () => {
window.__VERDACCIO_BASENAME_UI_OPTIONS.pkgManagers = ['yarn'];
const { getByTestId, queryByText } = render(<ComponentToBeRendered />);
expect(getByTestId('installListItem-yarn')).toBeTruthy();
expect(queryByText(`yarn add ${detailContextValue.packageName}`)).toBeTruthy();
@@ -48,6 +55,7 @@ describe('<Install />', () => {
});
test('should have the element PNPM', () => {
window.__VERDACCIO_BASENAME_UI_OPTIONS.pkgManagers = ['pnpm'];
const { getByTestId, queryByText } = render(<ComponentToBeRendered />);
expect(getByTestId('installListItem-pnpm')).toBeTruthy();
expect(queryByText(`pnpm install ${detailContextValue.packageName}`)).toBeTruthy();

View File

@@ -5,18 +5,20 @@ import { useTranslation } from 'react-i18next';
import List from 'verdaccio-ui/components/List';
import Text from 'verdaccio-ui/components/Text';
import { Theme } from 'verdaccio-ui/design-tokens/theme';
import { useConfig } from 'verdaccio-ui/providers/config';
import { DetailContext } from '../..';
import InstallListItem, { DependencyManager } from './InstallListItem';
const StyledText = styled(Text)<{ theme?: Theme }>((props) => ({
fontWeight: props.theme && props.theme.fontWeight.bold,
fontWeight: props.theme?.fontWeight.bold,
textTransform: 'capitalize',
}));
const Install: React.FC = () => {
const { t } = useTranslation();
const { configOptions } = useConfig();
const detailContext = useContext(DetailContext);
const { packageMeta, packageName } = detailContext;
@@ -25,15 +27,26 @@ const Install: React.FC = () => {
return null;
}
return (
const hasNpm = configOptions?.pkgManagers?.includes('npm');
const hasYarn = configOptions?.pkgManagers?.includes('yarn');
const hasPnpm = configOptions?.pkgManagers?.includes('pnpm') ?? true;
const hasPkgManagers = hasNpm | hasPnpm | hasYarn;
return hasPkgManagers ? (
<List
data-testid={'installList'}
subheader={<StyledText variant={'subtitle1'}>{t('sidebar.installation.title')}</StyledText>}>
<InstallListItem dependencyManager={DependencyManager.NPM} packageName={packageName} />
<InstallListItem dependencyManager={DependencyManager.YARN} packageName={packageName} />
<InstallListItem dependencyManager={DependencyManager.PNPM} packageName={packageName} />
{hasNpm && (
<InstallListItem dependencyManager={DependencyManager.NPM} packageName={packageName} />
)}
{hasYarn && (
<InstallListItem dependencyManager={DependencyManager.YARN} packageName={packageName} />
)}
{hasPnpm && (
<InstallListItem dependencyManager={DependencyManager.PNPM} packageName={packageName} />
)}
</List>
);
) : null;
};
export default Install;

View File

@@ -1,266 +0,0 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`<Install /> renders correctly 1`] = `
.emotion-0 {
font-weight: 700;
text-transform: capitalize;
}
.emotion-2 {
padding: 0;
}
.emotion-2:hover {
background-color: transparent;
}
.emotion-4 {
border-radius: 0px;
padding: 0;
}
.emotion-4 img {
background-color: transparent;
}
.emotion-6 {
padding: 0 10px;
margin: 0;
}
.emotion-8 {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-align-items: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: justify;
-webkit-justify-content: space-between;
-ms-flex-pack: justify;
justify-content: space-between;
}
.emotion-10 {
display: inline-block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
height: 21px;
font-size: 1rem;
}
<ul
class="MuiList-root MuiList-padding MuiList-subheader"
data-testid="installList"
>
<span
class="MuiTypography-root emotion-0 emotion-1 MuiTypography-subtitle1"
>
Installation
</span>
<div
aria-disabled="false"
class="MuiButtonBase-root MuiListItem-root emotion-2 emotion-3 MuiListItem-gutters MuiListItem-button"
data-testid="installListItem-npm"
role="button"
tabindex="0"
>
<div
class="MuiAvatar-root MuiAvatar-circle emotion-4 emotion-5"
>
<img
alt="npm"
class="MuiAvatar-img"
src="[object Object]"
/>
</div>
<div
class="MuiListItemText-root emotion-6 emotion-7 MuiListItemText-multiline"
>
<span
class="MuiTypography-root MuiListItemText-primary MuiTypography-body1 MuiTypography-displayBlock"
>
<div
class="emotion-8 emotion-9"
>
<span
class="emotion-10 emotion-11"
>
npm install foo
</span>
<button
class="MuiButtonBase-root MuiIconButton-root"
data-testid="copy-icon"
tabindex="0"
title="Copy to clipboard"
type="button"
>
<span
class="MuiIconButton-label"
>
<svg
aria-hidden="true"
class="MuiSvgIcon-root"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm-1 4l6 6v10c0 1.1-.9 2-2 2H7.99C6.89 23 6 22.1 6 21l.01-14c0-1.1.89-2 1.99-2h7zm-1 7h5.5L14 6.5V12z"
/>
</svg>
</span>
<span
class="MuiTouchRipple-root"
/>
</button>
</div>
</span>
<p
class="MuiTypography-root MuiListItemText-secondary MuiTypography-body2 MuiTypography-colorTextSecondary MuiTypography-displayBlock"
>
Install using npm
</p>
</div>
<span
class="MuiTouchRipple-root"
/>
</div>
<div
aria-disabled="false"
class="MuiButtonBase-root MuiListItem-root emotion-2 emotion-3 MuiListItem-gutters MuiListItem-button"
data-testid="installListItem-yarn"
role="button"
tabindex="0"
>
<div
class="MuiAvatar-root MuiAvatar-circle emotion-4 emotion-5"
>
<img
alt="yarn"
class="MuiAvatar-img"
src="[object Object]"
/>
</div>
<div
class="MuiListItemText-root emotion-6 emotion-7 MuiListItemText-multiline"
>
<span
class="MuiTypography-root MuiListItemText-primary MuiTypography-body1 MuiTypography-displayBlock"
>
<div
class="emotion-8 emotion-9"
>
<span
class="emotion-10 emotion-11"
>
yarn add foo
</span>
<button
class="MuiButtonBase-root MuiIconButton-root"
data-testid="copy-icon"
tabindex="0"
title="Copy to clipboard"
type="button"
>
<span
class="MuiIconButton-label"
>
<svg
aria-hidden="true"
class="MuiSvgIcon-root"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm-1 4l6 6v10c0 1.1-.9 2-2 2H7.99C6.89 23 6 22.1 6 21l.01-14c0-1.1.89-2 1.99-2h7zm-1 7h5.5L14 6.5V12z"
/>
</svg>
</span>
<span
class="MuiTouchRipple-root"
/>
</button>
</div>
</span>
<p
class="MuiTypography-root MuiListItemText-secondary MuiTypography-body2 MuiTypography-colorTextSecondary MuiTypography-displayBlock"
>
Install using yarn
</p>
</div>
<span
class="MuiTouchRipple-root"
/>
</div>
<div
aria-disabled="false"
class="MuiButtonBase-root MuiListItem-root emotion-2 emotion-3 MuiListItem-gutters MuiListItem-button"
data-testid="installListItem-pnpm"
role="button"
tabindex="0"
>
<div
class="MuiAvatar-root MuiAvatar-circle emotion-4 emotion-5"
>
<img
alt="pnpm"
class="MuiAvatar-img"
src="[object Object]"
/>
</div>
<div
class="MuiListItemText-root emotion-6 emotion-7 MuiListItemText-multiline"
>
<span
class="MuiTypography-root MuiListItemText-primary MuiTypography-body1 MuiTypography-displayBlock"
>
<div
class="emotion-8 emotion-9"
>
<span
class="emotion-10 emotion-11"
>
pnpm install foo
</span>
<button
class="MuiButtonBase-root MuiIconButton-root"
data-testid="copy-icon"
tabindex="0"
title="Copy to clipboard"
type="button"
>
<span
class="MuiIconButton-label"
>
<svg
aria-hidden="true"
class="MuiSvgIcon-root"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm-1 4l6 6v10c0 1.1-.9 2-2 2H7.99C6.89 23 6 22.1 6 21l.01-14c0-1.1.89-2 1.99-2h7zm-1 7h5.5L14 6.5V12z"
/>
</svg>
</span>
<span
class="MuiTouchRipple-root"
/>
</button>
</div>
</span>
<p
class="MuiTypography-root MuiListItemText-secondary MuiTypography-body2 MuiTypography-colorTextSecondary MuiTypography-displayBlock"
>
Install using pnpm
</p>
</div>
<span
class="MuiTouchRipple-root"
/>
</div>
</ul>
`;

View File

@@ -1,26 +1,12 @@
import { TemplateUIOptions } from '@verdaccio/types';
import isEmpty from 'lodash/isEmpty';
import isNil from 'lodash/isNil';
import React, { createContext, FunctionComponent, useContext, useMemo, useState } from 'react';
import { PRIMARY_COLOR } from 'verdaccio-ui/utils/colors';
export type VerdaccioOptions = {
url_prefix: string;
base: string;
scope: string;
title: string;
primaryColor: string;
darkMode: boolean;
uri?: string;
language?: string;
version?: string;
protocol?: string;
host?: string;
logo?: string;
};
type ConfigProviderProps = {
configOptions: VerdaccioOptions;
configOptions: TemplateUIOptions;
setConfigOptions: Function;
};
@@ -28,6 +14,7 @@ const defaultValues: ConfigProviderProps = {
configOptions: {
primaryColor: PRIMARY_COLOR,
darkMode: false,
pkgManagers: ['yarn', 'pnpm', 'npm'],
scope: '',
base: '',
url_prefix: '',

View File

@@ -2,6 +2,9 @@ web:
title: Verdaccio Local Dev
sort_packages: asc
primary_color: #CCC
pkgManagers:
- npm
- yarn
plugins: ../

View File

@@ -8,10 +8,11 @@ import config from './webpack.dev.config.babel';
const compiler = webpack(config);
const spinner = ora('Compiler is running...').start();
const port = 4873;
compiler.hooks.done.tap('Verdaccio Dev Server', () => {
if (!global.rebuild) {
spinner.stop();
console.log('Dev Server Listening at http://localhost:4873/');
console.log(`Dev Server Listening at http://localhost:${port}/`);
global.rebuild = true;
}
});
@@ -40,7 +41,7 @@ new WebpackDevServer(compiler, {
target: 'http://localhost:8000',
},
],
}).listen(4873, 'localhost', function (err) {
}).listen(port, 'localhost', function (err) {
if (err) {
return console.log(err);
}

View File

@@ -1,5 +1,8 @@
import fs from 'fs';
import FriendlyErrorsPlugin from 'friendly-errors-webpack-plugin';
import HTMLWebpackPlugin from 'html-webpack-plugin';
import yalm from 'js-yaml';
import StyleLintPlugin from 'stylelint-webpack-plugin';
import webpack from 'webpack';
@@ -8,6 +11,7 @@ import env from '../config/env';
import getPackageJson from './getPackageJson';
import baseConfig from './webpack.config';
const configJsonFormat = yalm.safeLoad(fs.readFileSync('./tools/_verdaccio.config.yaml', 'utf8'));
export default {
...baseConfig,
mode: 'development',
@@ -35,8 +39,7 @@ export default {
}),
new HTMLWebpackPlugin({
__UI_OPTIONS: JSON.stringify({
title: 'Verdaccio Dev UI',
scope: '',
...configJsonFormat.web,
filename: 'index.html',
verdaccioURL: '//localhost:4873',
base: new URL('/', 'http://localhost:4873'),

View File

@@ -1,13 +1,20 @@
// FIXME: this should comes from @verdaccio/types
type PackageManagers = 'pnpm' | 'yarn' | 'npm';
export interface VerdaccioOptions {
// @deprecated
url_prefix: string;
// @deprecated
base: string;
basePath: string;
basename: string;
scope: string;
title: string;
primaryColor: string;
darkMode: boolean;
uri?: string;
language?: string;
darkMode?: boolean;
version?: string;
protocol?: string;
host?: string;
logo?: string;
pkgManagers?: PackageManagers[];
}
declare global {

View File

@@ -1,5 +1,13 @@
# @verdaccio/proxy
## 6.0.0-6-next.8
### Patch Changes
- Updated dependencies [1b217fd3]
- @verdaccio/config@6.0.0-6-next.6
- @verdaccio/local-storage@11.0.0-6-next.6
## 6.0.0-6-next.7
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/proxy",
"version": "6.0.0-6-next.7",
"version": "6.0.0-6-next.8",
"description": "verdaccio proxy fetcher",
"main": "./build/index.js",
"types": "build/index.d.ts",
@@ -40,8 +40,8 @@
},
"dependencies": {
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3",
"@verdaccio/config": "workspace:6.0.0-6-next.5",
"@verdaccio/local-storage": "workspace:11.0.0-6-next.5",
"@verdaccio/config": "workspace:6.0.0-6-next.6",
"@verdaccio/local-storage": "workspace:11.0.0-6-next.6",
"@verdaccio/logger": "workspace:6.0.0-6-next.4",
"@verdaccio/streams": "workspace:11.0.0-alpha.3",
"@verdaccio/utils": "workspace:6.0.0-6-next.4",
@@ -50,7 +50,7 @@
"request": "2.87.0"
},
"devDependencies": {
"@verdaccio/types": "workspace:11.0.0-6-next.4"
"@verdaccio/types": "workspace:11.0.0-6-next.6"
},
"funding": {
"type": "opencollective",

View File

@@ -1,5 +1,58 @@
# @verdaccio/server
## 6.0.0-6-next.13
### Patch Changes
- Updated dependencies [aecbd226]
- @verdaccio/web@6.0.0-6-next.12
- @verdaccio/api@6.0.0-6-next.10
- @verdaccio/auth@6.0.0-6-next.8
- @verdaccio/loaders@6.0.0-6-next.4
- @verdaccio/logger@6.0.0-6-next.4
- verdaccio-audit@11.0.0-alpha.4
- @verdaccio/store@6.0.0-6-next.8
## 6.0.0-6-next.12
### Patch Changes
- Updated dependencies [1b217fd3]
- @verdaccio/config@6.0.0-6-next.6
- @verdaccio/api@6.0.0-6-next.10
- @verdaccio/auth@6.0.0-6-next.8
- @verdaccio/loaders@6.0.0-6-next.4
- @verdaccio/store@6.0.0-6-next.8
- @verdaccio/web@6.0.0-6-next.11
- @verdaccio/middleware@6.0.0-6-next.8
## 6.0.0-6-next.11
### Patch Changes
- 19d272d1: fix: restore logger on init
Enable logger after parse configuration and log the very first step on startup phase.
```bash
warn --- experiments are enabled, it is recommended do not use experiments in production comment out this section to disable it
info --- support for experiment [token] is disabled
info --- support for experiment [search] is disabled
(node:50831) Warning: config.logs is deprecated, rename configuration to "config.log"
(Use `node --trace-warnings ...` to show where the warning was created)
info --- http address http://localhost:4873/
info --- version: 6.0.0-6-next.11
info --- server started
```
- @verdaccio/api@6.0.0-6-next.9
- @verdaccio/auth@6.0.0-6-next.7
- @verdaccio/loaders@6.0.0-6-next.4
- @verdaccio/logger@6.0.0-6-next.4
- verdaccio-audit@11.0.0-alpha.4
- @verdaccio/store@6.0.0-6-next.7
- @verdaccio/web@6.0.0-6-next.10
## 6.0.0-6-next.10
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/server",
"version": "6.0.0-6-next.10",
"version": "6.0.0-6-next.13",
"description": "server logic",
"main": "./build/index.js",
"types": "build/index.d.ts",
@@ -30,16 +30,16 @@
"npm": ">=6"
},
"dependencies": {
"@verdaccio/api": "workspace:6.0.0-6-next.9",
"@verdaccio/auth": "workspace:6.0.0-6-next.7",
"@verdaccio/api": "workspace:6.0.0-6-next.10",
"@verdaccio/auth": "workspace:6.0.0-6-next.8",
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3",
"@verdaccio/config": "workspace:6.0.0-6-next.5",
"@verdaccio/config": "workspace:6.0.0-6-next.6",
"@verdaccio/loaders": "workspace:6.0.0-6-next.4",
"@verdaccio/logger": "workspace:6.0.0-6-next.4",
"@verdaccio/middleware": "workspace:6.0.0-6-next.7",
"@verdaccio/store": "workspace:6.0.0-6-next.7",
"@verdaccio/middleware": "workspace:6.0.0-6-next.8",
"@verdaccio/store": "workspace:6.0.0-6-next.8",
"@verdaccio/utils": "workspace:6.0.0-6-next.4",
"@verdaccio/web": "workspace:6.0.0-6-next.10",
"@verdaccio/web": "workspace:6.0.0-6-next.12",
"verdaccio-audit": "workspace:11.0.0-alpha.4",
"compression": "1.7.4",
"cors": "2.8.5",
@@ -48,8 +48,8 @@
"lodash": "4.17.15"
},
"devDependencies": {
"@verdaccio/mock": "workspace:6.0.0-6-next.5",
"@verdaccio/proxy": "workspace:6.0.0-6-next.7",
"@verdaccio/mock": "workspace:6.0.0-6-next.6",
"@verdaccio/proxy": "workspace:6.0.0-6-next.8",
"http-errors": "1.7.3",
"request": "2.87.0"
},

View File

@@ -18,7 +18,7 @@ import { ConfigRuntime } from '@verdaccio/types';
import { IAuth, IBasicAuth } from '@verdaccio/auth';
import { IStorageHandler } from '@verdaccio/store';
import { setup, logger } from '@verdaccio/logger';
import { logger } from '@verdaccio/logger';
import { log, final, errorReportingMiddleware } from '@verdaccio/middleware';
import AuditMiddleware from 'verdaccio-audit';
@@ -143,7 +143,6 @@ const defineAPI = function (config: IConfig, storage: IStorageHandler): any {
};
export default (async function (configHash: ConfigRuntime): Promise<any> {
setup(configHash.logs);
const config: IConfig = new AppConfig(_.cloneDeep(configHash));
// register middleware plugins
const plugin_params = {

View File

@@ -32,8 +32,8 @@
"homepage": "https://verdaccio.org",
"license": "MIT",
"devDependencies": {
"@verdaccio/cli": "workspace:6.0.0-6-next.11",
"@verdaccio/ui-theme": "workspace:6.0.0-6-next.6",
"@verdaccio/cli": "workspace:6.0.0-6-next.14",
"@verdaccio/ui-theme": "workspace:6.0.0-6-next.7",
"fs-extra": "9.0.1",
"webpack": "^5.11.1",
"webpack-cli": "^4.3.1",

View File

@@ -1,5 +1,15 @@
# @verdaccio/store
## 6.0.0-6-next.8
### Patch Changes
- Updated dependencies [1b217fd3]
- @verdaccio/config@6.0.0-6-next.6
- @verdaccio/local-storage@11.0.0-6-next.6
- @verdaccio/loaders@6.0.0-6-next.4
- @verdaccio/proxy@6.0.0-6-next.8
## 6.0.0-6-next.7
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/store",
"version": "6.0.0-6-next.7",
"version": "6.0.0-6-next.8",
"description": "loaders logic",
"main": "./build/index.js",
"types": "build/index.d.ts",
@@ -40,11 +40,11 @@
},
"dependencies": {
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3",
"@verdaccio/config": "workspace:6.0.0-6-next.5",
"@verdaccio/config": "workspace:6.0.0-6-next.6",
"@verdaccio/loaders": "workspace:6.0.0-6-next.4",
"@verdaccio/local-storage": "workspace:11.0.0-6-next.5",
"@verdaccio/local-storage": "workspace:11.0.0-6-next.6",
"@verdaccio/logger": "workspace:6.0.0-6-next.4",
"@verdaccio/proxy": "workspace:6.0.0-6-next.7",
"@verdaccio/proxy": "workspace:6.0.0-6-next.8",
"@verdaccio/streams": "workspace:11.0.0-alpha.3",
"@verdaccio/utils": "workspace:6.0.0-6-next.4",
"async": "3.1.1",
@@ -54,8 +54,8 @@
"semver": "7.1.2"
},
"devDependencies": {
"@verdaccio/mock": "workspace:6.0.0-6-next.5",
"@verdaccio/types": "workspace:11.0.0-6-next.4"
"@verdaccio/mock": "workspace:6.0.0-6-next.6",
"@verdaccio/types": "workspace:11.0.0-6-next.6"
},
"funding": {
"type": "opencollective",

View File

@@ -1,5 +1,39 @@
# verdaccio
## 6.0.0-6-next.15
### Patch Changes
- Updated dependencies [aecbd226]
- @verdaccio/ui-theme@6.0.0-6-next.7
- @verdaccio/hooks@6.0.0-6-next.4
- @verdaccio/logger@6.0.0-6-next.4
- @verdaccio/mock@6.0.0-6-next.6
- @verdaccio/node-api@6.0.0-6-next.14
- @verdaccio/cli@6.0.0-6-next.14
## 6.0.0-6-next.14
### Patch Changes
- @verdaccio/cli@6.0.0-6-next.13
- @verdaccio/hooks@6.0.0-6-next.4
- @verdaccio/mock@6.0.0-6-next.6
- @verdaccio/node-api@6.0.0-6-next.13
- @verdaccio/ui-theme@6.0.0-6-next.6
## 6.0.0-6-next.13
### Patch Changes
- Updated dependencies [19d272d1]
- @verdaccio/cli@6.0.0-6-next.12
- @verdaccio/node-api@6.0.0-6-next.12
- @verdaccio/hooks@6.0.0-6-next.4
- @verdaccio/logger@6.0.0-6-next.4
- @verdaccio/mock@6.0.0-6-next.5
- @verdaccio/ui-theme@6.0.0-6-next.6
## 6.0.0-6-next.12
### Patch Changes

View File

@@ -1,5 +1,4 @@
// this file aims to help local debugging with hot transpilation
// it requires BABEL_ENV=registry set as env variable
require('@babel/register')({
extensions: ['.ts'],
});

View File

@@ -1,6 +1,6 @@
{
"name": "verdaccio",
"version": "6.0.0-6-next.12",
"version": "6.0.0-6-next.15",
"description": "A lightweight private npm proxy registry",
"main": "build/index.js",
"types": "build/index.d.ts",
@@ -36,21 +36,21 @@
},
"homepage": "https://verdaccio.org",
"dependencies": {
"@verdaccio/cli": "workspace:6.0.0-6-next.11",
"@verdaccio/cli": "workspace:6.0.0-6-next.14",
"@verdaccio/hooks": "workspace:6.0.0-6-next.4",
"@verdaccio/logger": "workspace:6.0.0-6-next.4",
"@verdaccio/mock": "workspace:6.0.0-6-next.5",
"@verdaccio/node-api": "workspace:6.0.0-6-next.11",
"@verdaccio/ui-theme": "workspace:6.0.0-6-next.6",
"@verdaccio/mock": "workspace:6.0.0-6-next.6",
"@verdaccio/node-api": "workspace:6.0.0-6-next.14",
"@verdaccio/ui-theme": "workspace:6.0.0-6-next.7",
"@verdaccio/utils": "workspace:6.0.0-6-next.4",
"verdaccio-audit": "11.0.0-alpha.4",
"verdaccio-htpasswd": "11.0.0-alpha.6"
},
"devDependencies": {
"@verdaccio/auth": "workspace:6.0.0-6-next.7",
"@verdaccio/auth": "workspace:6.0.0-6-next.8",
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3",
"@verdaccio/config": "workspace:6.0.0-6-next.5",
"@verdaccio/store": "workspace:6.0.0-6-next.7"
"@verdaccio/config": "workspace:6.0.0-6-next.6",
"@verdaccio/store": "workspace:6.0.0-6-next.8"
},
"keywords": [
"private",

View File

@@ -1,5 +1,57 @@
# @verdaccio/web
## 6.0.0-6-next.12
### Minor Changes
- aecbd226: web: allow ui hide package managers on sidebar
If there is a package manager of preference over others, you can define the package managers to be displayed on the detail page and sidebar, just define in the `config.yaml` and web section the list of package managers to be displayed.
```
web:
title: Verdaccio
sort_packages: asc
primary_color: #cccccc
pkgManagers:
- pnpm
- yarn
# - npm
```
To disable all package managers, just define empty:
```
web:
title: Verdaccio
sort_packages: asc
primary_color: #cccccc
pkgManagers:
```
and the section would be hidden.
### Patch Changes
- @verdaccio/auth@6.0.0-6-next.8
- @verdaccio/readme@11.0.0-alpha.3
- @verdaccio/tarball@11.0.0-6-next.5
- @verdaccio/url@11.0.0-6-next.4
- @verdaccio/loaders@6.0.0-6-next.4
- @verdaccio/logger@6.0.0-6-next.4
- @verdaccio/store@6.0.0-6-next.8
## 6.0.0-6-next.11
### Patch Changes
- Updated dependencies [1b217fd3]
- @verdaccio/config@6.0.0-6-next.6
- @verdaccio/auth@6.0.0-6-next.8
- @verdaccio/loaders@6.0.0-6-next.4
- @verdaccio/store@6.0.0-6-next.8
- @verdaccio/middleware@6.0.0-6-next.8
## 6.0.0-6-next.10
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@verdaccio/web",
"version": "6.0.0-6-next.10",
"version": "6.0.0-6-next.12",
"description": "web ui middleware",
"main": "./build/index.js",
"types": "build/index.d.ts",
@@ -25,14 +25,14 @@
},
"license": "MIT",
"dependencies": {
"@verdaccio/auth": "workspace:6.0.0-6-next.7",
"@verdaccio/auth": "workspace:6.0.0-6-next.8",
"@verdaccio/commons-api": "workspace:11.0.0-alpha.3",
"@verdaccio/config": "workspace:6.0.0-6-next.5",
"@verdaccio/config": "workspace:6.0.0-6-next.6",
"@verdaccio/loaders": "workspace:6.0.0-6-next.4",
"@verdaccio/logger": "workspace:6.0.0-6-next.4",
"@verdaccio/middleware": "workspace:6.0.0-6-next.7",
"@verdaccio/middleware": "workspace:6.0.0-6-next.8",
"@verdaccio/readme": "workspace:11.0.0-alpha.3",
"@verdaccio/store": "workspace:6.0.0-6-next.7",
"@verdaccio/store": "workspace:6.0.0-6-next.8",
"@verdaccio/utils": "workspace:6.0.0-6-next.4",
"@verdaccio/url": "workspace:11.0.0-6-next.4",
"@verdaccio/tarball": "workspace:11.0.0-6-next.5",
@@ -44,7 +44,7 @@
"lodash": "^4.17.20"
},
"devDependencies": {
"@verdaccio/types": "workspace:11.0.0-6-next.4",
"@verdaccio/types": "workspace:11.0.0-6-next.6",
"verdaccio-auth-memory": "workspace:11.0.0-alpha.3",
"verdaccio-memory": "workspace:11.0.0-6-next.4",
"supertest": "^6.1.3",

View File

@@ -29,6 +29,7 @@ export default function renderHTML(config, manifest, manifestFiles, req, res) {
const scope = config?.web?.scope ?? '';
// FIXME: logo URI is incomplete
let logoURI = config?.web?.logo ?? '';
const pkgManagers = config?.web?.pkgManagers ?? ['yarn', 'pnpm', 'npm'];
const version = pkgJSON.version;
const primaryColor = validatePrimaryColor(config?.web?.primary_color) ?? '#4b5e40';
const { scriptsBodyAfter, metaScripts, scriptsbodyBefore } = Object.assign(
@@ -48,6 +49,7 @@ export default function renderHTML(config, manifest, manifestFiles, req, res) {
primaryColor,
version,
logoURI,
pkgManagers,
title,
scope,
language,

View File

@@ -1,23 +1,9 @@
import buildDebug from 'debug';
import { TemplateUIOptions } from '@verdaccio/types';
import { getManifestValue, Manifest } from './utils/manifest';
const debug = buildDebug('verdaccio:web:render:template');
export type TemplateUIOptions = {
title?: string;
uri?: string;
darkMode?: boolean;
protocol?: string;
host?: string;
url_prefix?: string;
base: string;
primaryColor?: string;
version?: string;
logoURI?: string;
scope?: string;
language?: string;
};
export type Template = {
manifest: Manifest;
options: TemplateUIOptions;

321
pnpm-lock.yaml generated
View File

@@ -218,16 +218,16 @@ importers:
packages/api:
specifiers:
'@verdaccio/auth': workspace:6.0.0-6-next.7
'@verdaccio/auth': workspace:6.0.0-6-next.8
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/config': workspace:6.0.0-6-next.5
'@verdaccio/config': workspace:6.0.0-6-next.6
'@verdaccio/hooks': workspace:6.0.0-6-next.4
'@verdaccio/logger': workspace:6.0.0-6-next.4
'@verdaccio/middleware': workspace:6.0.0-6-next.7
'@verdaccio/server': workspace:6.0.0-6-next.10
'@verdaccio/store': workspace:6.0.0-6-next.7
'@verdaccio/middleware': workspace:6.0.0-6-next.8
'@verdaccio/server': workspace:6.0.0-6-next.13
'@verdaccio/store': workspace:6.0.0-6-next.8
'@verdaccio/tarball': workspace:11.0.0-6-next.5
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.6
'@verdaccio/utils': workspace:6.0.0-6-next.4
body-parser: 1.19.0
cookies: 0.8.0
@@ -262,11 +262,11 @@ importers:
packages/auth:
specifiers:
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/config': workspace:6.0.0-6-next.5
'@verdaccio/config': workspace:6.0.0-6-next.6
'@verdaccio/loaders': workspace:6.0.0-6-next.4
'@verdaccio/logger': workspace:6.0.0-6-next.4
'@verdaccio/mock': workspace:6.0.0-6-next.5
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/mock': workspace:6.0.0-6-next.6
'@verdaccio/types': workspace:11.0.0-6-next.6
'@verdaccio/utils': workspace:6.0.0-6-next.4
debug: ^4.1.1
express: 4.17.1
@@ -290,17 +290,19 @@ importers:
packages/cli:
specifiers:
'@verdaccio/cli-ui': workspace:6.0.0-alpha.3
'@verdaccio/config': workspace:6.0.0-6-next.5
'@verdaccio/node-api': workspace:6.0.0-6-next.11
'@verdaccio/config': workspace:6.0.0-6-next.6
'@verdaccio/fastify-migration': workspace:6.0.0-6-next.9
'@verdaccio/logger': workspace:6.0.0-6-next.4
'@verdaccio/node-api': workspace:6.0.0-6-next.14
clipanion: 3.0.0-rc.11
commander: 6.2.0
envinfo: 7.4.0
kleur: 3.0.3
semver: 7.3.2
dependencies:
'@verdaccio/cli-ui': link:../core/cli-ui
'@verdaccio/config': link:../config
'@verdaccio/fastify-migration': link:../core/server
'@verdaccio/logger': link:../logger
'@verdaccio/node-api': link:../node-api
clipanion: 3.0.0-rc.11
commander: 6.2.0
@@ -318,7 +320,6 @@ importers:
js-yaml: 3.14.0
lodash: ^4.17.20
minimatch: 3.0.4
mkdirp: 0.5.5
yup: ^0.29.3
dependencies:
'@verdaccio/commons-api': link:../core/commons-api
@@ -327,20 +328,11 @@ importers:
js-yaml: 3.14.0
lodash: 4.17.20
minimatch: 3.0.4
mkdirp: 0.5.5
yup: 0.29.3
devDependencies:
'@types/minimatch': 3.0.3
'@types/yup': 0.29.9
packages/core/cli-ui:
specifiers:
chalk: ^4.1.0
terminal-link: ^2.1.1
dependencies:
chalk: 4.1.0
terminal-link: 2.1.1
packages/core/commons-api:
specifiers:
http-errors: ^1.8.0
@@ -351,7 +343,7 @@ importers:
packages/core/file-locking:
specifiers:
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.6
lockfile: 1.0.4
dependencies:
lockfile: 1.0.4
@@ -363,7 +355,7 @@ importers:
'@types/bcryptjs': ^2.4.2
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/file-locking': workspace:11.0.0-alpha.3
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.6
apache-md5: 1.1.2
bcryptjs: 2.4.3
http-errors: 1.8.0
@@ -387,13 +379,12 @@ importers:
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/file-locking': workspace:11.0.0-alpha.3
'@verdaccio/streams': workspace:11.0.0-alpha.3
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.6
async: ^3.2.0
debug: ^4.1.1
lodash: ^4.17.20
lowdb: 1.0.0
minimatch: ^3.0.4
mkdirp: ^0.5.5
rmdir-sync: ^1.0.1
dependencies:
'@verdaccio/commons-api': link:../commons-api
@@ -403,7 +394,6 @@ importers:
debug: 4.1.1
lodash: 4.17.20
lowdb: 1.0.0
mkdirp: 0.5.5
devDependencies:
'@types/minimatch': 3.0.3
'@verdaccio/types': link:../types
@@ -412,7 +402,7 @@ importers:
packages/core/readme:
specifiers:
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.6
dompurify: 2.0.8
jsdom: 15.2.1
marked: 1.1.1
@@ -423,16 +413,25 @@ importers:
devDependencies:
'@verdaccio/types': link:../types
packages/core/server:
specifiers:
'@verdaccio/types': workspace:11.0.0-6-next.6
fastify: 3.14.2
dependencies:
fastify: 3.14.2
devDependencies:
'@verdaccio/types': link:../types
packages/core/streams:
specifiers:
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.6
devDependencies:
'@verdaccio/types': link:../types
packages/core/tarball:
specifiers:
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.6
'@verdaccio/url': workspace:11.0.0-6-next.4
'@verdaccio/utils': workspace:6.0.0-6-next.4
debug: ^4.3.1
@@ -459,7 +458,7 @@ importers:
packages/core/url:
specifiers:
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.6
debug: ^4.3.1
lodash: ^4.17.21
node-mocks-http: ^1.10.1
@@ -475,11 +474,11 @@ importers:
packages/hooks:
specifiers:
'@verdaccio/auth': workspace:6.0.0-6-next.7
'@verdaccio/auth': workspace:6.0.0-6-next.8
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/config': workspace:6.0.0-6-next.5
'@verdaccio/config': workspace:6.0.0-6-next.6
'@verdaccio/logger': workspace:6.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.6
debug: ^4.2.0
handlebars: 4.5.3
nock: ^13.0.4
@@ -501,10 +500,10 @@ importers:
packages/loaders:
specifiers:
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/config': workspace:6.0.0-6-next.5
'@verdaccio/config': workspace:6.0.0-6-next.6
'@verdaccio/logger': workspace:6.0.0-6-next.4
'@verdaccio/mock': workspace:6.0.0-6-next.5
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/mock': workspace:6.0.0-6-next.6
'@verdaccio/types': workspace:11.0.0-6-next.6
debug: ^4.1.1
lodash: 4.17.15
dependencies:
@@ -521,7 +520,7 @@ importers:
specifiers:
'@types/pino': ^6.3.3
'@verdaccio/logger-prettify': workspace:6.0.0-alpha.3
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.6
debug: ^4.2.0
lodash: ~4.17.20
pino: ^6.7.0
@@ -537,7 +536,6 @@ importers:
packages/logger-prettify:
specifiers:
'@types/pino': 6.0.1
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
dayjs: 1.8.36
fast-safe-stringify: 2.0.7
kleur: 3.0.3
@@ -546,7 +544,6 @@ importers:
prettier-bytes: 1.0.4
pretty-ms: 5.1.0
dependencies:
'@verdaccio/commons-api': link:../core/commons-api
dayjs: 1.8.36
fast-safe-stringify: 2.0.7
kleur: 3.0.3
@@ -559,7 +556,7 @@ importers:
packages/middleware:
specifiers:
'@verdaccio/auth': workspace:6.0.0-6-next.7
'@verdaccio/auth': workspace:6.0.0-6-next.8
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/logger': workspace:6.0.0-6-next.4
'@verdaccio/utils': workspace:6.0.0-6-next.4
@@ -576,8 +573,8 @@ importers:
packages/mock:
specifiers:
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/config': workspace:6.0.0-6-next.5
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/config': workspace:6.0.0-6-next.6
'@verdaccio/types': workspace:11.0.0-6-next.6
'@verdaccio/utils': workspace:6.0.0-6-next.4
debug: ^4.2.0
fs-extra: ^8.1.0
@@ -598,13 +595,12 @@ importers:
packages/node-api:
specifiers:
'@verdaccio/cli-ui': workspace:6.0.0-alpha.3
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/config': workspace:6.0.0-6-next.5
'@verdaccio/config': workspace:6.0.0-6-next.6
'@verdaccio/logger': workspace:6.0.0-6-next.4
'@verdaccio/mock': workspace:6.0.0-6-next.5
'@verdaccio/server': workspace:6.0.0-6-next.10
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/mock': workspace:6.0.0-6-next.6
'@verdaccio/server': workspace:6.0.0-6-next.13
'@verdaccio/types': workspace:11.0.0-6-next.6
core-js: ^3.6.5
debug: ^4.2.0
jest-mock-process: ^1.4.0
@@ -612,7 +608,6 @@ importers:
selfsigned: 1.10.7
supertest: ^6.1.3
dependencies:
'@verdaccio/cli-ui': link:../core/cli-ui
'@verdaccio/commons-api': link:../core/commons-api
'@verdaccio/config': link:../config
'@verdaccio/logger': link:../logger
@@ -631,7 +626,7 @@ importers:
specifiers:
'@types/activedirectory2': ^1.2.1
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.6
activedirectory2: ^1.3.0
dependencies:
'@verdaccio/commons-api': link:../../core/commons-api
@@ -642,7 +637,7 @@ importers:
packages/plugins/audit:
specifiers:
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.6
body-parser: ^1.19.0
express: ^4.17.1
https-proxy-agent: ^5.0.0
@@ -662,7 +657,7 @@ importers:
packages/plugins/auth-memory:
specifiers:
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.6
debug: ^4.3.1
dependencies:
'@verdaccio/commons-api': link:../../core/commons-api
@@ -674,7 +669,7 @@ importers:
specifiers:
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/streams': workspace:11.0.0-alpha.3
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.6
aws-sdk: ^2.607.0
recursive-readdir: 2.2.2
dependencies:
@@ -691,7 +686,7 @@ importers:
'@google-cloud/storage': ^5.3.0
'@verdaccio/commons-api': ^11.0.0-alpha.3
'@verdaccio/streams': workspace:11.0.0-alpha.3
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.6
fast-crc32c: 1.0.4
memory-fs: 0.5.0
dependencies:
@@ -709,7 +704,7 @@ importers:
specifiers:
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/streams': workspace:11.0.0-alpha.3
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.6
debug: ^4.3.1
memfs: 3.2.0
memory-fs: ^0.5.0
@@ -736,7 +731,7 @@ importers:
'@testing-library/dom': ^7.29.0
'@testing-library/jest-dom': ^5.11.6
'@testing-library/react': 10.4.9
'@verdaccio/node-api': workspace:6.0.0-6-next.11
'@verdaccio/node-api': workspace:6.0.0-6-next.14
autosuggest-highlight: 3.1.1
babel-loader: ^8.2.2
babel-plugin-dynamic-import-node: ^2.3.3
@@ -883,11 +878,11 @@ importers:
packages/proxy:
specifiers:
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/config': workspace:6.0.0-6-next.5
'@verdaccio/local-storage': workspace:11.0.0-6-next.5
'@verdaccio/config': workspace:6.0.0-6-next.6
'@verdaccio/local-storage': workspace:11.0.0-6-next.6
'@verdaccio/logger': workspace:6.0.0-6-next.4
'@verdaccio/streams': workspace:11.0.0-alpha.3
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.6
'@verdaccio/utils': workspace:6.0.0-6-next.4
JSONStream: 1.3.5
lodash: ^4.17.20
@@ -907,18 +902,18 @@ importers:
packages/server:
specifiers:
'@verdaccio/api': workspace:6.0.0-6-next.9
'@verdaccio/auth': workspace:6.0.0-6-next.7
'@verdaccio/api': workspace:6.0.0-6-next.10
'@verdaccio/auth': workspace:6.0.0-6-next.8
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/config': workspace:6.0.0-6-next.5
'@verdaccio/config': workspace:6.0.0-6-next.6
'@verdaccio/loaders': workspace:6.0.0-6-next.4
'@verdaccio/logger': workspace:6.0.0-6-next.4
'@verdaccio/middleware': workspace:6.0.0-6-next.7
'@verdaccio/mock': workspace:6.0.0-6-next.5
'@verdaccio/proxy': workspace:6.0.0-6-next.7
'@verdaccio/store': workspace:6.0.0-6-next.7
'@verdaccio/middleware': workspace:6.0.0-6-next.8
'@verdaccio/mock': workspace:6.0.0-6-next.6
'@verdaccio/proxy': workspace:6.0.0-6-next.8
'@verdaccio/store': workspace:6.0.0-6-next.8
'@verdaccio/utils': workspace:6.0.0-6-next.4
'@verdaccio/web': workspace:6.0.0-6-next.10
'@verdaccio/web': workspace:6.0.0-6-next.12
compression: 1.7.4
cors: 2.8.5
express: 4.17.1
@@ -952,8 +947,8 @@ importers:
packages/standalone:
specifiers:
'@verdaccio/cli': workspace:6.0.0-6-next.11
'@verdaccio/ui-theme': workspace:6.0.0-6-next.6
'@verdaccio/cli': workspace:6.0.0-6-next.14
'@verdaccio/ui-theme': workspace:6.0.0-6-next.7
fs-extra: 9.0.1
webpack: ^5.11.1
webpack-bundle-analyzer: 3.8.0
@@ -971,14 +966,14 @@ importers:
packages/store:
specifiers:
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/config': workspace:6.0.0-6-next.5
'@verdaccio/config': workspace:6.0.0-6-next.6
'@verdaccio/loaders': workspace:6.0.0-6-next.4
'@verdaccio/local-storage': workspace:11.0.0-6-next.5
'@verdaccio/local-storage': workspace:11.0.0-6-next.6
'@verdaccio/logger': workspace:6.0.0-6-next.4
'@verdaccio/mock': workspace:6.0.0-6-next.5
'@verdaccio/proxy': workspace:6.0.0-6-next.7
'@verdaccio/mock': workspace:6.0.0-6-next.6
'@verdaccio/proxy': workspace:6.0.0-6-next.8
'@verdaccio/streams': workspace:11.0.0-alpha.3
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.6
'@verdaccio/utils': workspace:6.0.0-6-next.4
async: 3.1.1
debug: ^4.1.1
@@ -1022,16 +1017,16 @@ importers:
packages/verdaccio:
specifiers:
'@verdaccio/auth': workspace:6.0.0-6-next.7
'@verdaccio/cli': workspace:6.0.0-6-next.11
'@verdaccio/auth': workspace:6.0.0-6-next.8
'@verdaccio/cli': workspace:6.0.0-6-next.14
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/config': workspace:6.0.0-6-next.5
'@verdaccio/config': workspace:6.0.0-6-next.6
'@verdaccio/hooks': workspace:6.0.0-6-next.4
'@verdaccio/logger': workspace:6.0.0-6-next.4
'@verdaccio/mock': workspace:6.0.0-6-next.5
'@verdaccio/node-api': workspace:6.0.0-6-next.11
'@verdaccio/store': workspace:6.0.0-6-next.7
'@verdaccio/ui-theme': workspace:6.0.0-6-next.6
'@verdaccio/mock': workspace:6.0.0-6-next.6
'@verdaccio/node-api': workspace:6.0.0-6-next.14
'@verdaccio/store': workspace:6.0.0-6-next.8
'@verdaccio/ui-theme': workspace:6.0.0-6-next.7
'@verdaccio/utils': workspace:6.0.0-6-next.4
verdaccio-audit: 11.0.0-alpha.4
verdaccio-htpasswd: 11.0.0-alpha.6
@@ -1053,16 +1048,16 @@ importers:
packages/web:
specifiers:
'@verdaccio/auth': workspace:6.0.0-6-next.7
'@verdaccio/auth': workspace:6.0.0-6-next.8
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/config': workspace:6.0.0-6-next.5
'@verdaccio/config': workspace:6.0.0-6-next.6
'@verdaccio/loaders': workspace:6.0.0-6-next.4
'@verdaccio/logger': workspace:6.0.0-6-next.4
'@verdaccio/middleware': workspace:6.0.0-6-next.7
'@verdaccio/middleware': workspace:6.0.0-6-next.8
'@verdaccio/readme': workspace:11.0.0-alpha.3
'@verdaccio/store': workspace:6.0.0-6-next.7
'@verdaccio/store': workspace:6.0.0-6-next.8
'@verdaccio/tarball': workspace:11.0.0-6-next.5
'@verdaccio/types': workspace:11.0.0-6-next.4
'@verdaccio/types': workspace:11.0.0-6-next.6
'@verdaccio/url': workspace:11.0.0-6-next.4
'@verdaccio/utils': workspace:6.0.0-6-next.4
body-parse: 0.1.0
@@ -1122,11 +1117,10 @@ importers:
test/e2e-ui:
specifiers:
'@verdaccio/commons-api': workspace:11.0.0-alpha.3
'@verdaccio/ui-theme': workspace:6.0.0-6-next.6
'@verdaccio/ui-theme': workspace:6.0.0-6-next.7
debug: 4.3.1
kleur: ^4.1.3
lodash: ^4.17.20
mkdirp: ^1.0.4
puppeteer: ^7.1.0
request: ^2.88.2
rimraf: ^3.0.2
@@ -1136,7 +1130,6 @@ importers:
debug: 4.3.1
kleur: 4.1.3
lodash: 4.17.20
mkdirp: 1.0.4
puppeteer: 7.1.0
request: 2.88.2
rimraf: 3.0.2
@@ -5261,6 +5254,18 @@ packages:
- supports-color
dev: true
/@fastify/forwarded/1.0.0:
resolution: {integrity: sha512-VoO+6WD0aRz8bwgJZ8pkkxjq7o/782cQ1j945HWg0obZMgIadYW3Pew0+an+k1QL7IPZHM3db5WF6OP6x4ymMA==}
engines: {node: '>= 10'}
dev: false
/@fastify/proxy-addr/3.0.0:
resolution: {integrity: sha512-ty7wnUd/GeSqKTC2Jozsl5xGbnxUnEFC0On2/zPv/8ixywipQmVZwuWvNGnBoitJ2wixwVqofwXNua8j6Y62lQ==}
dependencies:
'@fastify/forwarded': 1.0.0
ipaddr.js: 2.0.0
dev: false
/@formatjs/cli/2.15.0:
resolution: {integrity: sha512-Hv7Z3xeGcgTpn1jA1/x7tc9UYbF9Udn/77xRf7E22Vn1mGJM/DftVqnpgLeNpd0d3xSftYw+rhaShNO19BsT6A==}
hasBin: true
@@ -8419,6 +8424,10 @@ packages:
resolution: {integrity: sha1-i33q/TEFWbwo93ck3RuzAXcnjBs=}
dev: false
/abstract-logging/2.0.1:
resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==}
dev: false
/accepts/1.3.7:
resolution: {integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==}
engines: {node: '>= 0.6'}
@@ -8751,6 +8760,10 @@ packages:
file-type: 4.4.0
dev: false
/archy/1.0.0:
resolution: {integrity: sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=}
dev: false
/are-we-there-yet/1.1.5:
resolution: {integrity: sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==}
dependencies:
@@ -9045,6 +9058,17 @@ packages:
diacritic: 0.0.2
dev: true
/avvio/7.2.1:
resolution: {integrity: sha512-b+gox68dqD6c3S3t+bZBKN6rYbVWdwpN12sHQLFTiacDT2rcq7fm07Ww+IKt/AvAkyCIe1f5ArP1bC/vAlx97A==}
dependencies:
archy: 1.0.0
debug: 4.3.1
fastq: 1.10.0
queue-microtask: 1.2.3
transitivePeerDependencies:
- supports-color
dev: false
/aws-sdk/2.778.0:
resolution: {integrity: sha512-sIJRO7tMaztLs+gvHF/Wo+iek/rhH99+2OzharQJMS0HATPl5/EdhKgWGv1n/bNpVH+kD3n0QMQgdFu0FNUt0Q==}
engines: {node: '>= 0.8.0'}
@@ -13667,6 +13691,10 @@ packages:
dev: false
optional: true
/fast-decode-uri-component/1.0.1:
resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==}
dev: false
/fast-deep-equal/1.1.0:
resolution: {integrity: sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=}
@@ -13699,6 +13727,16 @@ packages:
/fast-json-stable-stringify/2.1.0:
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
/fast-json-stringify/2.6.0:
resolution: {integrity: sha512-xTZtZRopWp2Aun7sGX2EB2mFw4bMQ+xnR8BmD5Rn4K0hKXGkbcZAzTtxEX0P4KNaNx1RAwvf+FESfuM0+F4WZg==}
engines: {node: '>= 10.0.0'}
dependencies:
ajv: 6.12.6
deepmerge: 4.2.2
rfdc: 1.3.0
string-similarity: 4.0.4
dev: false
/fast-levenshtein/2.0.6:
resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=}
@@ -13722,6 +13760,38 @@ packages:
resolution: {integrity: sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==}
dev: true
/fastify-error/0.3.1:
resolution: {integrity: sha512-oCfpcsDndgnDVgiI7bwFKAun2dO+4h84vBlkWsWnz/OUK9Reff5UFoFl241xTiLeHWX/vU9zkDVXqYUxjOwHcQ==}
dev: false
/fastify-warning/0.2.0:
resolution: {integrity: sha512-s1EQguBw/9qtc1p/WTY4eq9WMRIACkj+HTcOIK1in4MV5aFaQC9ZCIt0dJ7pr5bIf4lPpHvAtP2ywpTNgs7hqw==}
dev: false
/fastify/3.14.2:
resolution: {integrity: sha512-/PY//7gJnGxLQORaRHCEW148vpFKFpBIQNz1Yo/DxbHuk5EQqK2comzyE2ug8FSEldDX8nleapTshl0m78Px2w==}
engines: {node: '>=10.16.0'}
dependencies:
'@fastify/proxy-addr': 3.0.0
abstract-logging: 2.0.1
ajv: 6.12.6
avvio: 7.2.1
fast-json-stringify: 2.6.0
fastify-error: 0.3.1
fastify-warning: 0.2.0
find-my-way: 4.1.0
flatstr: 1.0.12
light-my-request: 4.4.1
pino: 6.11.2
readable-stream: 3.6.0
rfdc: 1.3.0
secure-json-parse: 2.4.0
semver: 7.3.4
tiny-lru: 7.0.6
transitivePeerDependencies:
- supports-color
dev: false
/fastparse/1.1.2:
resolution: {integrity: sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==}
dev: false
@@ -13932,6 +14002,16 @@ packages:
make-dir: 3.1.0
pkg-dir: 4.2.0
/find-my-way/4.1.0:
resolution: {integrity: sha512-UBD94MdO6cBi6E97XA0fBA9nwqw+xG5x1TYIPHats33gEi/kNqy7BWHAWx8QHCQQRSU5Txc0JiD8nzba39gvMQ==}
engines: {node: '>=10'}
dependencies:
fast-decode-uri-component: 1.0.1
fast-deep-equal: 3.1.3
safe-regex2: 2.0.0
semver-store: 0.3.0
dev: false
/find-root/1.1.0:
resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==}
@@ -16732,6 +16812,11 @@ packages:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
engines: {node: '>= 0.10'}
/ipaddr.js/2.0.0:
resolution: {integrity: sha512-S54H9mIj0rbxRIyrDMEuuER86LdlgUg9FSeZ8duQb6CUG2iRrA36MYVQBSprTF/ZeAwvyQ5mDGuNvIPM0BIl3w==}
engines: {node: '>= 10'}
dev: false
/is-absolute-url/2.1.0:
resolution: {integrity: sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=}
engines: {node: '>=0.10.0'}
@@ -18384,6 +18469,16 @@ packages:
type-check: 0.4.0
dev: true
/light-my-request/4.4.1:
resolution: {integrity: sha512-FDNRF2mYjthIRWE7O8d/X7AzDx4otQHl4/QXbu3Q/FRwBFcgb+ZoDaUd5HwN53uQXLAiw76osN+Va0NEaOW6rQ==}
dependencies:
ajv: 6.12.6
cookie: 0.4.0
fastify-warning: 0.2.0
readable-stream: 3.6.0
set-cookie-parser: 2.4.8
dev: false
/lines-and-columns/1.1.6:
resolution: {integrity: sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=}
@@ -21143,7 +21238,6 @@ packages:
/pino-std-serializers/3.2.0:
resolution: {integrity: sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==}
dev: true
/pino/6.11.2:
resolution: {integrity: sha512-bmzxwbrIPxQUlAuMkF4PWVErUGERU4z37HazlhflKFg08crsNE3fACGN6gPwg5xtKOK47Ux5cZm8YCuLV4wWJg==}
@@ -21155,7 +21249,6 @@ packages:
pino-std-serializers: 3.2.0
quick-format-unescaped: 4.0.1
sonic-boom: 1.4.1
dev: true
/pino/6.2.1:
resolution: {integrity: sha512-5F5A+G25Ex2rMOBEe3XYGyLSF4dikQZsFvPojwsqnDBX+rfg7+kw9s5i7pHuVAJImekjwb+MR9jQyHWPLENlvQ==}
@@ -22227,6 +22320,10 @@ packages:
/querystringify/2.2.0:
resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
/queue-microtask/1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
dev: false
/quick-format-unescaped/4.0.1:
resolution: {integrity: sha512-RyYpQ6Q5/drsJyOhrWHYMWTedvjTIat+FTwv0K4yoUxzvekw2aRHMQJLlnvt8UantkZg2++bEzD9EdxXqkWf4A==}
@@ -23402,6 +23499,11 @@ packages:
resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==}
engines: {node: '>=0.12'}
/ret/0.2.2:
resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==}
engines: {node: '>=4'}
dev: false
/retext-english/3.0.4:
resolution: {integrity: sha512-yr1PgaBDde+25aJXrnt3p1jvT8FVLVat2Bx8XeAWX13KXo8OT+3nWGU3HWxM4YFJvmfqvJYJZG2d7xxaO774gw==}
dependencies:
@@ -23437,6 +23539,10 @@ packages:
css: 2.2.4
dev: true
/rfdc/1.3.0:
resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==}
dev: false
/rgb-regex/1.0.1:
resolution: {integrity: sha1-wODWiC3w4jviVKR16O3UGRX+rrE=}
@@ -23535,6 +23641,12 @@ packages:
dependencies:
ret: 0.1.15
/safe-regex2/2.0.0:
resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==}
dependencies:
ret: 0.2.2
dev: false
/safer-buffer/2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
@@ -23650,6 +23762,10 @@ packages:
kind-of: 6.0.3
dev: false
/secure-json-parse/2.4.0:
resolution: {integrity: sha512-Q5Z/97nbON5t/L/sH6mY2EacfjVGwrCcSi5D3btRO2GZ8pf1K1UN7Z9H5J57hjVU2Qzxr1xO+FmBhOvEkzCMmg==}
dev: false
/seek-bzip/1.0.6:
resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==}
hasBin: true
@@ -23691,6 +23807,10 @@ packages:
engines: {node: '>=6'}
dev: false
/semver-store/0.3.0:
resolution: {integrity: sha512-TcZvGMMy9vodEFSse30lWinkj+JgOBvPn8wRItpQRSayhc+4ssDs335uklkfvQQJgL/WvmHLVj4Ycv2s7QCQMg==}
dev: false
/semver-truncate/1.1.2:
resolution: {integrity: sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=}
engines: {node: '>=0.10.0'}
@@ -23728,7 +23848,6 @@ packages:
hasBin: true
dependencies:
lru-cache: 6.0.0
dev: true
/send/0.17.1:
resolution: {integrity: sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==}
@@ -23784,6 +23903,10 @@ packages:
/set-blocking/2.0.0:
resolution: {integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=}
/set-cookie-parser/2.4.8:
resolution: {integrity: sha512-edRH8mBKEWNVIVMKejNnuJxleqYE/ZSdcT8/Nem9/mmosx12pctd80s2Oy00KNZzrogMZS5mauK2/ymL1bvlvg==}
dev: false
/set-value/2.0.1:
resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==}
engines: {node: '>=0.10.0'}
@@ -24153,7 +24276,6 @@ packages:
dependencies:
atomic-sleep: 1.0.0
flatstr: 1.0.12
dev: true
/sort-keys-length/1.0.1:
resolution: {integrity: sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=}
@@ -24547,6 +24669,10 @@ packages:
lodash.maxby: 4.6.0
dev: false
/string-similarity/4.0.4:
resolution: {integrity: sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==}
dev: false
/string-width/1.0.2:
resolution: {integrity: sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=}
engines: {node: '>=0.10.0'}
@@ -25065,6 +25191,7 @@ packages:
dependencies:
has-flag: 4.0.0
supports-color: 7.2.0
dev: true
/svg-tag-names/2.0.1:
resolution: {integrity: sha512-BEZ508oR+X/b5sh7bT0RqDJ7GhTpezjj3P1D4kugrOaPs6HijviWksoQ63PS81vZn0QCjZmVKjHDBniTo+Domg==}
@@ -25248,6 +25375,7 @@ packages:
dependencies:
ansi-escapes: 4.3.1
supports-hyperlinks: 2.1.0
dev: true
/terser-webpack-plugin/1.4.5_webpack@4.43.0:
resolution: {integrity: sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==}
@@ -25421,6 +25549,11 @@ packages:
resolution: {integrity: sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==}
dev: true
/tiny-lru/7.0.6:
resolution: {integrity: sha512-zNYO0Kvgn5rXzWpL0y3RS09sMK67eGaQj9805jlK9G6pSadfriTczzLHFXa/xcW4mIRfmlB9HyQ/+SgL0V1uow==}
engines: {node: '>=6'}
dev: false
/tiny-warning/1.0.3:
resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==}

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