mirror of
https://github.com/verdaccio/verdaccio.git
synced 2025-02-17 03:19:36 +01:00
feat: parse highligt code, readme and sanitize on ui (#3505)
This commit is contained in:
parent
e73656f144
commit
a23628be97
7
.changeset/light-pumas-brake.md
Normal file
7
.changeset/light-pumas-brake.md
Normal file
@ -0,0 +1,7 @@
|
||||
---
|
||||
'@verdaccio/ui-theme': minor
|
||||
'@verdaccio/server-fastify': minor
|
||||
'@verdaccio/web': minor
|
||||
---
|
||||
|
||||
feat: parse and sanitize on ui
|
@ -9,7 +9,6 @@
|
||||
"@verdaccio/file-locking": "11.0.0-alpha.0",
|
||||
"verdaccio-htpasswd": "11.0.0-alpha.0",
|
||||
"@verdaccio/local-storage": "11.0.0-alpha.0",
|
||||
"@verdaccio/readme": "11.0.0-alpha.0",
|
||||
"@verdaccio/types": "11.0.0-alpha.0",
|
||||
"@verdaccio/hooks": "6.0.0-alpha.0",
|
||||
"@verdaccio/loaders": "6.0.0-alpha.0",
|
||||
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"extends": "../../../.babelrc"
|
||||
}
|
1
packages/core/readme/.gitignore
vendored
1
packages/core/readme/.gitignore
vendored
@ -1 +0,0 @@
|
||||
lib/
|
@ -1,307 +0,0 @@
|
||||
# Change Log
|
||||
|
||||
## 11.0.0-6-next.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 351aeeaa: fix(deps): @verdaccio/utils should be a prod dep of local-storage
|
||||
|
||||
## 11.0.0-6-next.5
|
||||
|
||||
### Major Changes
|
||||
|
||||
- 292c0a37: feat!: replace deprecated request dependency by got
|
||||
|
||||
This is a big refactoring of the core, fetching dependencies, improve code, more tests and better stability. This is essential for the next release, will take some time but would allow modularize more the core.
|
||||
|
||||
## Notes
|
||||
|
||||
- Remove deprecated `request` by other `got`, retry improved, custom Agent ( got does not include it built-in)
|
||||
- Remove `async` dependency from storage (used by core) it was linked with proxy somehow safe to remove now
|
||||
- Refactor with promises instead callback wherever is possible
|
||||
- ~Document the API~
|
||||
- Improve testing, integration tests
|
||||
- Bugfix
|
||||
- Clean up old validations
|
||||
- Improve performance
|
||||
|
||||
## 💥 Breaking changes
|
||||
|
||||
- Plugin API methods were callbacks based are returning promises, this will break current storage plugins, check documentation for upgrade.
|
||||
- Write Tarball, Read Tarball methods parameters change, a new set of options like `AbortController` signals are being provided to the `addAbortSignal` can be internally used with Streams when a request is aborted. eg: `addAbortSignal(signal, fs.createReadStream(pathName));`
|
||||
- `@verdaccio/streams` stream abort support is legacy is being deprecated removed
|
||||
- Remove AWS and Google Cloud packages for future refactoring [#2574](https://github.com/verdaccio/verdaccio/pull/2574).
|
||||
|
||||
## 11.0.0-6-next.4
|
||||
|
||||
### Major Changes
|
||||
|
||||
- 794af76c: Remove Node 12 support
|
||||
|
||||
- We need move to the new `undici` and does not support Node.js 12
|
||||
|
||||
## 10.0.0-alpha.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- fecbb9be: chore: add release step to private regisry on merge changeset pr
|
||||
|
||||
## 10.0.0-alpha.2
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 54c58d1e: feat: add server rate limit protection to all request
|
||||
|
||||
To modify custom values, use the server settings property.
|
||||
|
||||
```markdown
|
||||
server:
|
||||
|
||||
## https://www.npmjs.com/package/express-rate-limit#configuration-options
|
||||
|
||||
rateLimit:
|
||||
windowMs: 1000
|
||||
max: 10000
|
||||
```
|
||||
|
||||
The values are intended to be high, if you want to improve security of your server consider
|
||||
using different values.
|
||||
|
||||
## 10.0.0-alpha.1
|
||||
|
||||
### Major Changes
|
||||
|
||||
- d87fa026: feat!: experiments config renamed to flags
|
||||
|
||||
- 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
|
||||
|
||||
- da1ee9c8: - Replace signature handler for legacy tokens by removing deprecated crypto.createDecipher by createCipheriv
|
||||
|
||||
- Introduce environment variables for legacy tokens
|
||||
|
||||
### Code Improvements
|
||||
|
||||
- Add debug library for improve developer experience
|
||||
|
||||
### Breaking change
|
||||
|
||||
- The new signature invalidates all previous tokens generated by Verdaccio 4 or previous versions.
|
||||
- The secret key must have 32 characters long.
|
||||
|
||||
### New environment variables
|
||||
|
||||
- `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
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 26b494cb: feat: add typescript project references settings
|
||||
|
||||
Reading https://ebaytech.berlin/optimizing-multi-package-apps-with-typescript-project-references-d5c57a3b4440 I realized I can use project references to solve the issue to pre-compile modules on develop mode.
|
||||
|
||||
It allows to navigate (IDE) trough the packages without need compile the packages.
|
||||
|
||||
Add two `tsconfig`, one using the previous existing configuration that is able to produce declaration files (`tsconfig.build`) and a new one `tsconfig` which is enables [_projects references_](https://www.typescriptlang.org/docs/handbook/project-references.html).
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- b57b4338: Enable prerelease mode with **changesets**
|
||||
- 31af0164: ESLint Warnings Fixed
|
||||
|
||||
Related to issue #1461
|
||||
|
||||
- max-len: most of the sensible max-len errors are fixed
|
||||
- no-unused-vars: most of these types of errors are fixed by deleting not needed declarations
|
||||
- @typescript-eslint/no-unused-vars: same as above
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [9.7.3](https://github.com/verdaccio/monorepo/compare/v9.7.2...v9.7.3) (2020-07-30)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- update marked / request security vulnerability ([#378](https://github.com/verdaccio/monorepo/issues/378)) ([4188e08](https://github.com/verdaccio/monorepo/commit/4188e088f42d0f6e090c948b869312ba1f30cd79))
|
||||
|
||||
## [9.7.2](https://github.com/verdaccio/monorepo/compare/v9.7.1...v9.7.2) (2020-07-20)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
## [9.7.1](https://github.com/verdaccio/monorepo/compare/v9.7.0...v9.7.1) (2020-07-10)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
# [9.7.0](https://github.com/verdaccio/monorepo/compare/v9.6.1...v9.7.0) (2020-06-24)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
## [9.6.1](https://github.com/verdaccio/monorepo/compare/v9.6.0...v9.6.1) (2020-06-07)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
## [9.5.1](https://github.com/verdaccio/monorepo/compare/v9.5.0...v9.5.1) (2020-06-03)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- restore Node v8 support ([#361](https://github.com/verdaccio/monorepo/issues/361)) ([9be55a1](https://github.com/verdaccio/monorepo/commit/9be55a1deebe954e8eef9edc59af9fd16e29daed))
|
||||
|
||||
# [9.5.0](https://github.com/verdaccio/monorepo/compare/v9.4.1...v9.5.0) (2020-05-02)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
# [9.4.0](https://github.com/verdaccio/monorepo/compare/v9.3.4...v9.4.0) (2020-03-21)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
## [9.3.3](https://github.com/verdaccio/monorepo/compare/v9.3.2...v9.3.3) (2020-03-11)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- update jsdom@16.2.1 ([#340](https://github.com/verdaccio/monorepo/issues/340)) ([6060769](https://github.com/verdaccio/monorepo/commit/6060769d52f796337dda9f1a54f149c5fb22ca17))
|
||||
|
||||
## [9.3.2](https://github.com/verdaccio/monorepo/compare/v9.3.1...v9.3.2) (2020-03-08)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- security dependency jsdom@16.2.0 update ([#338](https://github.com/verdaccio/monorepo/issues/338)) ([0599f3e](https://github.com/verdaccio/monorepo/commit/0599f3e16fd1de993494943e2e7464d10b62d6be))
|
||||
- update dependencies ([#332](https://github.com/verdaccio/monorepo/issues/332)) ([b6165ae](https://github.com/verdaccio/monorepo/commit/b6165aea9b7e4012477081eae68bfa7159c58f56))
|
||||
|
||||
## [9.3.1](https://github.com/verdaccio/monorepo/compare/v9.3.0...v9.3.1) (2020-02-23)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
# [9.3.0](https://github.com/verdaccio/monorepo/compare/v9.2.0...v9.3.0) (2020-01-29)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
# [9.0.0](https://github.com/verdaccio/monorepo/compare/v8.5.3...v9.0.0) (2020-01-07)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
## [8.5.2](https://github.com/verdaccio/monorepo/compare/v8.5.1...v8.5.2) (2019-12-25)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
## [8.5.1](https://github.com/verdaccio/monorepo/compare/v8.5.0...v8.5.1) (2019-12-24)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
# [8.5.0](https://github.com/verdaccio/monorepo/compare/v8.4.2...v8.5.0) (2019-12-22)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
## [8.4.2](https://github.com/verdaccio/monorepo/compare/v8.4.1...v8.4.2) (2019-11-23)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
## [8.4.1](https://github.com/verdaccio/monorepo/compare/v8.4.0...v8.4.1) (2019-11-22)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
# [8.4.0](https://github.com/verdaccio/monorepo/compare/v8.3.0...v8.4.0) (2019-11-22)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
# [8.3.0](https://github.com/verdaccio/monorepo/compare/v8.2.0...v8.3.0) (2019-10-27)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
# [8.2.0](https://github.com/verdaccio/monorepo/compare/v8.2.0-next.0...v8.2.0) (2019-10-23)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- core/readme/package.json to reduce vulnerabilities ([#216](https://github.com/verdaccio/monorepo/issues/216)) ([40299ab](https://github.com/verdaccio/monorepo/commit/40299ab))
|
||||
|
||||
# [8.2.0-next.0](https://github.com/verdaccio/monorepo/compare/v8.1.4...v8.2.0-next.0) (2019-10-08)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- fixed lint errors ([5e677f7](https://github.com/verdaccio/monorepo/commit/5e677f7))
|
||||
- fixed lint errors ([c80e915](https://github.com/verdaccio/monorepo/commit/c80e915))
|
||||
- quotes should be single ([ae9aa44](https://github.com/verdaccio/monorepo/commit/ae9aa44))
|
||||
|
||||
## [8.1.2](https://github.com/verdaccio/monorepo/compare/v8.1.1...v8.1.2) (2019-09-29)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- **readme:** security vulnerabilities in marked dep ([ee604b1](https://github.com/verdaccio/monorepo/commit/ee604b1))
|
||||
|
||||
## [8.1.1](https://github.com/verdaccio/monorepo/compare/v8.1.0...v8.1.1) (2019-09-26)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- **security:** Cross-site Scripting (XSS) for readme ([7b53e1b](https://github.com/verdaccio/monorepo/commit/7b53e1b))
|
||||
|
||||
# [8.1.0](https://github.com/verdaccio/monorepo/compare/v8.0.1-next.1...v8.1.0) (2019-09-07)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
## [8.0.1-next.1](https://github.com/verdaccio/monorepo/compare/v8.0.1-next.0...v8.0.1-next.1) (2019-08-29)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
## [8.0.1-next.0](https://github.com/verdaccio/monorepo/compare/v8.0.0...v8.0.1-next.0) (2019-08-29)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
# [8.0.0](https://github.com/verdaccio/monorepo/compare/v8.0.0-next.4...v8.0.0) (2019-08-22)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
# [8.0.0-next.4](https://github.com/verdaccio/monorepo/compare/v8.0.0-next.3...v8.0.0-next.4) (2019-08-18)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
# [8.0.0-next.2](https://github.com/verdaccio/monorepo/compare/v8.0.0-next.1...v8.0.0-next.2) (2019-08-03)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
# [8.0.0-next.1](https://github.com/verdaccio/monorepo/compare/v8.0.0-next.0...v8.0.0-next.1) (2019-08-01)
|
||||
|
||||
**Note:** Version bump only for package @verdaccio/readme
|
||||
|
||||
# [8.0.0-next.0](https://github.com/verdaccio/monorepo/compare/v2.0.0...v8.0.0-next.0) (2019-08-01)
|
||||
|
||||
### Features
|
||||
|
||||
- **readme:** import readme package ([f4bbf3a](https://github.com/verdaccio/monorepo/commit/f4bbf3a))
|
||||
- **readme:** modernize project ([0d8f963](https://github.com/verdaccio/monorepo/commit/0d8f963))
|
||||
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
||||
|
||||
### [1.0.4](https://github.com/verdaccio/readme/compare/v1.0.3...v1.0.4) (2019-06-22)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- update dependencies ([3316ccf](https://github.com/verdaccio/readme/commit/3316ccf))
|
||||
|
||||
### [1.0.3](https://github.com/verdaccio/readme/compare/v1.0.2...v1.0.3) (2019-05-15)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- **build:** lib folder as main ([e1ac882](https://github.com/verdaccio/readme/commit/e1ac882))
|
||||
|
||||
### [1.0.2](https://github.com/verdaccio/readme/compare/v1.0.1...v1.0.2) (2019-05-15)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- **build:** remove publish script ([9b36d5f](https://github.com/verdaccio/readme/commit/9b36d5f))
|
||||
|
||||
### 1.0.1 (2019-05-15)
|
||||
|
||||
### Tests
|
||||
|
||||
- add basic test ([774a54d](https://github.com/verdaccio/readme/commit/774a54d))
|
||||
- add image test ([8c4639e](https://github.com/verdaccio/readme/commit/8c4639e))
|
||||
- add xss scenarios ([81e43e8](https://github.com/verdaccio/readme/commit/81e43e8))
|
||||
- add xss scenarios ([b211b97](https://github.com/verdaccio/readme/commit/b211b97))
|
@ -1,21 +0,0 @@
|
||||
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.
|
@ -1,22 +0,0 @@
|
||||
# @verdaccio/readme
|
||||
|
||||
📃 Readme markdown parser
|
||||
|
||||
[](https://www.npmjs.com/package/@verdaccio/readme)
|
||||
[](https://circleci.com/gh/verdaccio/readme/tree/master)
|
||||
[](https://snyk.io/test/github/verdaccio/readme?targetFile=package.json)
|
||||
[](https://codecov.io/gh/verdaccio/readme)
|
||||
[](https://opencollective.com/verdaccio)
|
||||
[](http://chat.verdaccio.org/)
|
||||

|
||||
[](https://www.npmjs.com/package/@verdaccio/readme)
|
||||
|
||||
> This package is already built-in in verdaccio
|
||||
|
||||
```
|
||||
npm install @verdaccio/readme
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
Verdaccio is [MIT licensed](https://github.com/verdaccio/readme/blob/master/LICENSE).
|
@ -1,3 +0,0 @@
|
||||
const config = require('../../../jest/config');
|
||||
|
||||
module.exports = Object.assign({}, config, {});
|
@ -1,62 +0,0 @@
|
||||
{
|
||||
"name": "@verdaccio/readme",
|
||||
"version": "11.0.0-6-next.6",
|
||||
"description": "Readme markdown parser",
|
||||
"keywords": [
|
||||
"private",
|
||||
"package",
|
||||
"repository",
|
||||
"registry",
|
||||
"enterprise",
|
||||
"modules",
|
||||
"proxy",
|
||||
"server",
|
||||
"verdaccio"
|
||||
],
|
||||
"author": {
|
||||
"name": "Juan Picado",
|
||||
"email": "juanpicado19@gmail.com"
|
||||
},
|
||||
"license": "MIT",
|
||||
"homepage": "https://verdaccio.org",
|
||||
"engines": {
|
||||
"node": ">=14",
|
||||
"npm": ">=6"
|
||||
},
|
||||
"repository": {
|
||||
"type": "https",
|
||||
"url": "https://github.com/verdaccio/verdaccio",
|
||||
"directory": "packages/core/readme"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/verdaccio/verdaccio/issues"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"main": "./build/index.js",
|
||||
"types": "./build/index.d.ts",
|
||||
"files": [
|
||||
"build"
|
||||
],
|
||||
"dependencies": {
|
||||
"dompurify": "2.4.0",
|
||||
"jsdom": "17.0.0",
|
||||
"marked": "3.0.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.17"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "rimraf ./build",
|
||||
"test": "jest",
|
||||
"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",
|
||||
"build": "pnpm run build:js && pnpm run build:types"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/verdaccio"
|
||||
}
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
import createDOMPurify from 'dompurify';
|
||||
import { JSDOM } from 'jsdom';
|
||||
import marked from 'marked';
|
||||
|
||||
const DOMPurify = createDOMPurify(new JSDOM('').window);
|
||||
|
||||
export default function parseReadme(readme: string): string | void {
|
||||
if (readme) {
|
||||
return DOMPurify.sanitize(
|
||||
marked(readme, {
|
||||
sanitize: false,
|
||||
}).trim()
|
||||
);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`readme mix readmes / markdown should parse marked 1`] = `"<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>"`;
|
@ -1,5 +0,0 @@
|
||||
# mix html and XSS markdown
|
||||
|
||||
[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>
|
@ -1,247 +0,0 @@
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
|
||||
import parseReadme from '../src';
|
||||
|
||||
function readReadme(project: string, fileName = 'readme.md'): Promise<string> {
|
||||
return new Promise((resolve, reject): void => {
|
||||
fs.readFile(path.join(__dirname, 'partials', project, fileName), 'utf8', (err, data) => {
|
||||
if (err) {
|
||||
return reject(err);
|
||||
}
|
||||
|
||||
return resolve(data.toString());
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function clean(text: string): string {
|
||||
return text.replace(/\n|\r/g, '').trim();
|
||||
}
|
||||
|
||||
describe('readme', () => {
|
||||
test('should handle empty readme', () => {
|
||||
expect(parseReadme('')).toBeUndefined();
|
||||
});
|
||||
|
||||
test('should handle single string readme', () => {
|
||||
expect(parseReadme('this is a readme')).toEqual('<p>this is a readme</p>');
|
||||
});
|
||||
|
||||
test('should handle wrong text', () => {
|
||||
// @ts-expect-error
|
||||
expect(parseReadme(undefined)).toBeUndefined();
|
||||
});
|
||||
|
||||
describe('basic parsing', () => {
|
||||
test('should parse basic', () => {
|
||||
expect(parseReadme('# hi')).toEqual(`<h1 id=\"hi\">hi</h1>`);
|
||||
});
|
||||
|
||||
test('should parse basic / js alert', () => {
|
||||
expect(parseReadme("[Basic](javascript:alert('Basic'))")).toEqual('<p><a>Basic</a></p>');
|
||||
});
|
||||
|
||||
test('should parse basic / local storage', () => {
|
||||
expect(
|
||||
parseReadme('[Local Storage](javascript:alert(JSON.stringify(localStorage)))')
|
||||
).toEqual('<p><a>Local Storage</a></p>');
|
||||
});
|
||||
|
||||
test('should parse basic / case insensitive', () => {
|
||||
expect(parseReadme("[CaseInsensitive](JaVaScRiPt:alert('CaseInsensitive'))")).toEqual(
|
||||
'<p><a>CaseInsensitive</a></p>'
|
||||
);
|
||||
});
|
||||
|
||||
test('should parse basic / url', () => {
|
||||
expect(parseReadme("[URL](javascript://www.google.com%0Aalert('URL'))")).toEqual(
|
||||
'<p><a>URL</a></p>'
|
||||
);
|
||||
});
|
||||
|
||||
test('should parse basic / in quotes', () => {
|
||||
expect(parseReadme('[In Quotes](\'javascript:alert("InQuotes")\')')).toEqual(
|
||||
'<p><a href="\'javascript:alert(%22InQuotes%22)\'">In Quotes</a></p>'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('should parse images', () => {
|
||||
test('in quotes', () => {
|
||||
expect(
|
||||
parseReadme(
|
||||
')'
|
||||
)
|
||||
).toEqual(
|
||||
'<p><img alt="Escape SRC - onload" src="https://www.example.com/image.png%22onload=' +
|
||||
"%22alert('ImageOnLoad')\"></p>"
|
||||
);
|
||||
});
|
||||
|
||||
test('in image error', () => {
|
||||
expect(parseReadme(')')).toEqual(
|
||||
'<p><img alt="Escape SRC - onerror" src="%22onerror=%22alert(\'ImageOnError\')"></p>'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('should test fuzzing', () => {
|
||||
test('xss / document cookie', () => {
|
||||
expect(parseReadme('[XSS](javascript:prompt(document.cookie))')).toEqual('<p><a>XSS</a></p>');
|
||||
});
|
||||
|
||||
test('xss / white space cookie', () => {
|
||||
expect(
|
||||
parseReadme('[XSS](j a v a s c r i p t:prompt(document.cookie))')
|
||||
).toEqual('<p>[XSS](j a v a s c r i p t:prompt(document.cookie))</p>');
|
||||
});
|
||||
|
||||
test('xss / data test/html', () => {
|
||||
expect(
|
||||
parseReadme('[XSS](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K)')
|
||||
).toEqual('<p><a>XSS</a></p>');
|
||||
});
|
||||
|
||||
test('xss / data test/html encoded', () => {
|
||||
expect(
|
||||
parseReadme(
|
||||
'[XSS](javascript:ale' +
|
||||
'2t('XSS'))'
|
||||
)
|
||||
).toEqual(
|
||||
'<p><a href="&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&' +
|
||||
'#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&' +
|
||||
';#x28&#x27&#x58&#x53&#x53&#x27&#x29">XSS</a></p>'
|
||||
);
|
||||
});
|
||||
|
||||
test('xss / js prompt', () => {
|
||||
expect(parseReadme('[XSS]: (javascript:prompt(document.cookie))')).toEqual('');
|
||||
});
|
||||
|
||||
test('xss / js window error alert', () => {
|
||||
expect(parseReadme('[XSS](javascript:window.onerror=alert;throw%20document.cookie)')).toEqual(
|
||||
'<p><a>XSS</a></p>'
|
||||
);
|
||||
});
|
||||
|
||||
test('xss / js window encoded prompt', () => {
|
||||
expect(parseReadme('[XSS](javascript://%0d%0aprompt(1))')).toEqual('<p><a>XSS</a></p>');
|
||||
});
|
||||
|
||||
test('xss / js window encoded prompt multiple statement', () => {
|
||||
expect(parseReadme('[XSS](javascript://%0d%0aprompt(1);com)')).toEqual('<p><a>XSS</a></p>');
|
||||
});
|
||||
|
||||
test('xss / js window encoded window error alert multiple statement', () => {
|
||||
expect(parseReadme('[XSS](javascript:window.onerror=alert;throw%20document.cookie)')).toEqual(
|
||||
'<p><a>XSS</a></p>'
|
||||
);
|
||||
});
|
||||
|
||||
test('xss / js window encoded window error alert throw error', () => {
|
||||
expect(
|
||||
parseReadme('[XSS](javascript://%0d%0awindow.onerror=alert;throw%20document.cookie)')
|
||||
).toEqual('<p><a>XSS</a></p>');
|
||||
});
|
||||
|
||||
test('xss / js window encoded data text/html base 64', () => {
|
||||
expect(
|
||||
parseReadme('[XSS](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K)')
|
||||
).toEqual('<p><a>XSS</a></p>');
|
||||
});
|
||||
|
||||
test('xss / js vbscript alert', () => {
|
||||
expect(parseReadme('[XSS](vbscript:alert(document.domain))')).toEqual('<p><a>XSS</a></p>');
|
||||
});
|
||||
|
||||
describe('xss / js alert this', () => {
|
||||
test('xss / js case #1', () => {
|
||||
expect(parseReadme('[XSS](javascript:this;alert(1))')).toEqual('<p><a>XSS</a></p>');
|
||||
});
|
||||
|
||||
test('xss / js case #2', () => {
|
||||
expect(parseReadme('[XSS](javascript:this;alert(1))')).toEqual('<p><a>XSS</a></p>');
|
||||
});
|
||||
|
||||
test('xss / js case #3', () => {
|
||||
expect(parseReadme('[XSS](javascript:this;alert(1))')).toEqual('<p><a>XSS</a></p>');
|
||||
});
|
||||
|
||||
test('xss / js case #4', () => {
|
||||
expect(parseReadme('[XSS](Javascript:alert(1))')).toEqual('<p><a>XSS</a></p>');
|
||||
});
|
||||
|
||||
test('xss / js case #5', () => {
|
||||
expect(parseReadme('[XSS](Javas%26%2399;ript:alert(1))')).toEqual(
|
||||
'<p><a href="Javas%26%2399;ript:alert(1)">XSS</a></p>'
|
||||
);
|
||||
});
|
||||
|
||||
test('xss / js case #6', () => {
|
||||
expect(parseReadme('[XSS](javascript:alert(1))')).toEqual('<p><a>XSS</a></p>');
|
||||
});
|
||||
});
|
||||
|
||||
test('xss / js confirm', () => {
|
||||
expect(parseReadme('[XSS](javascript:confirm(1)')).toEqual('<p><a>XSS</a></p>');
|
||||
});
|
||||
|
||||
describe('xss / js url', () => {
|
||||
test('xss / case #1', () => {
|
||||
expect(parseReadme('[XSS](javascript://www.google.com%0Aprompt(1))')).toEqual(
|
||||
'<p><a>XSS</a></p>'
|
||||
);
|
||||
});
|
||||
|
||||
test('xss / case #2', () => {
|
||||
expect(parseReadme('[XSS](javascript://%0d%0aconfirm(1);com)')).toEqual(
|
||||
'<p><a>XSS</a></p>'
|
||||
);
|
||||
});
|
||||
|
||||
test('xss / case #3', () => {
|
||||
expect(parseReadme('[XSS](javascript:window.onerror=confirm;throw%201)')).toEqual(
|
||||
'<p><a>XSS</a></p>'
|
||||
);
|
||||
});
|
||||
|
||||
test('xss / case #4', () => {
|
||||
expect(parseReadme('[XSS](<28>javascript:alert(document.domain))')).toEqual(
|
||||
'<p><a href="%EF%BF%BDjavascript:alert(document.domain)">XSS</a></p>'
|
||||
);
|
||||
});
|
||||
|
||||
test('xss / case #5', () => {
|
||||
expect(parseReadme(')\\')).toEqual(
|
||||
'<p><img alt="XSS">\\</p>'
|
||||
);
|
||||
});
|
||||
|
||||
test('xss / case #6', () => {
|
||||
expect(
|
||||
parseReadme('\\')
|
||||
).toEqual(
|
||||
'<p><img alt="XSS" src="data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3Nj' +
|
||||
'cmlwdD4K">\\</p>'
|
||||
);
|
||||
});
|
||||
|
||||
// FIXME: requires proper parsing
|
||||
test.skip('xss / case #7', () => {
|
||||
expect(parseReadme(`\\`)).toEqual(
|
||||
'<p>\\\\</p>'
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('mix readmes / markdown', () => {
|
||||
test('should parse marked', async () => {
|
||||
const readme: string = await readReadme('mixed-html-mk');
|
||||
|
||||
expect(clean(parseReadme(readme) as string)).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
});
|
@ -1,9 +0,0 @@
|
||||
{
|
||||
"extends": "../../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"rootDir": "./src",
|
||||
"outDir": "./build"
|
||||
},
|
||||
"include": ["src/**/*"],
|
||||
"exclude": ["src/**/*.test.ts"]
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
{
|
||||
"extends": "../../../tsconfig.reference.json",
|
||||
"compilerOptions": {
|
||||
"rootDir": "./src",
|
||||
"outDir": "./build",
|
||||
"preserveSymlinks": true,
|
||||
"composite": true,
|
||||
"declaration": true,
|
||||
"declarationMap": true
|
||||
},
|
||||
"include": ["src/**/*.ts"],
|
||||
"exclude": ["src/**/*.test.ts"]
|
||||
}
|
@ -40,7 +40,6 @@
|
||||
"css-loader": "6.7.1",
|
||||
"dayjs": "1.11.5",
|
||||
"friendly-errors-webpack-plugin": "1.7.0",
|
||||
"github-markdown-css": "4.0.0",
|
||||
"harmony-reflect": "1.6.2",
|
||||
"history": "4.10.1",
|
||||
"html-webpack-plugin": "5.5.0",
|
||||
@ -57,6 +56,9 @@
|
||||
"normalize.css": "8.0.1",
|
||||
"optimize-css-assets-webpack-plugin": "6.0.1",
|
||||
"ora": "5.4.1",
|
||||
"dompurify": "2.4.0",
|
||||
"highlight.js": "11.6.0",
|
||||
"marked": "4.2.2",
|
||||
"raw-loader": "4.0.2",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
@ -90,8 +92,7 @@
|
||||
"webpack-dev-server": "3.11.3",
|
||||
"webpack-manifest-plugin": "4.1.1",
|
||||
"webpack-merge": "5.8.0",
|
||||
"whatwg-fetch": "3.6.2",
|
||||
"xss": "1.0.14"
|
||||
"whatwg-fetch": "3.6.2"
|
||||
},
|
||||
"keywords": [
|
||||
"private",
|
||||
|
@ -1,5 +1,4 @@
|
||||
import React from 'react';
|
||||
import { preventXSS } from 'verdaccio-ui/utils/sec-utils';
|
||||
|
||||
import Readme from './Readme';
|
||||
|
||||
@ -11,8 +10,8 @@ const DetailContainerContentReadme: React.FC<Props> = ({ description }) => {
|
||||
if (!description) {
|
||||
return null;
|
||||
}
|
||||
const encodedReadme = preventXSS(description);
|
||||
return <Readme description={encodedReadme} />;
|
||||
|
||||
return <Readme description={description} />;
|
||||
};
|
||||
|
||||
export default DetailContainerContentReadme;
|
||||
|
@ -1,21 +1,23 @@
|
||||
import styled from '@emotion/styled';
|
||||
import 'github-markdown-css';
|
||||
import 'highlight.js/styles/default.css';
|
||||
import React from 'react';
|
||||
import { Theme } from 'verdaccio-ui/design-tokens/theme';
|
||||
|
||||
import { Props } from './types';
|
||||
import { parseReadme } from './utils';
|
||||
|
||||
const Readme: React.FC<Props> = ({ description }) => (
|
||||
<Wrapper className="markdown-body" dangerouslySetInnerHTML={{ __html: description }} />
|
||||
);
|
||||
|
||||
const Readme: React.FC<Props> = ({ description }) => {
|
||||
return (
|
||||
<Wrapper
|
||||
className="markdown-body"
|
||||
dangerouslySetInnerHTML={{ __html: parseReadme(description) as string }}
|
||||
/>
|
||||
);
|
||||
};
|
||||
export default Readme;
|
||||
|
||||
const Wrapper = styled('div')<{ theme?: Theme }>(({ theme }) => ({
|
||||
background: theme?.palette.white,
|
||||
color: theme?.palette.black,
|
||||
padding: theme?.spacing(2, 3),
|
||||
ul: {
|
||||
listStyle: 'disc',
|
||||
},
|
||||
}));
|
||||
|
@ -9,16 +9,16 @@ exports[`<Readme /> component should load the component in default state 1`] = `
|
||||
padding: 16px 24px;
|
||||
}
|
||||
|
||||
.emotion-0 ul {
|
||||
list-style: disc;
|
||||
}
|
||||
|
||||
<body>
|
||||
<div>
|
||||
<div
|
||||
class="markdown-body emotion-0 emotion-1"
|
||||
>
|
||||
test
|
||||
<p>
|
||||
test
|
||||
</p>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</body>,
|
||||
@ -28,15 +28,15 @@ exports[`<Readme /> component should load the component in default state 1`] = `
|
||||
padding: 16px 24px;
|
||||
}
|
||||
|
||||
.emotion-0 ul {
|
||||
list-style: disc;
|
||||
}
|
||||
|
||||
<div>
|
||||
<div
|
||||
class="markdown-body emotion-0 emotion-1"
|
||||
>
|
||||
test
|
||||
<p>
|
||||
test
|
||||
</p>
|
||||
|
||||
|
||||
</div>
|
||||
</div>,
|
||||
"debug": [Function],
|
||||
|
@ -0,0 +1,25 @@
|
||||
import * as DOMPurify from 'dompurify';
|
||||
import * as marked from 'marked';
|
||||
|
||||
marked.setOptions({
|
||||
renderer: new marked.Renderer(),
|
||||
highlight: function (code, lang) {
|
||||
const hljs = require('highlight.js');
|
||||
const language = hljs.getLanguage(lang) ? lang : 'plaintext';
|
||||
return hljs.highlight(code, { language }).value;
|
||||
},
|
||||
langPrefix: 'hljs language-', // highlight.js css expects a top-level 'hljs' class.
|
||||
pedantic: false,
|
||||
gfm: true,
|
||||
breaks: false,
|
||||
mangle: false,
|
||||
xhtml: false,
|
||||
});
|
||||
|
||||
export function parseReadme(readme: string): string | void {
|
||||
if (typeof readme === 'string') {
|
||||
const html = marked.parse(readme);
|
||||
return DOMPurify.sanitize(html);
|
||||
}
|
||||
return '';
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
import { escapeAttrValue, filterXSS } from 'xss';
|
||||
|
||||
const xssOpts = {
|
||||
onIgnoreTagAttr: function (tag: string, name: string, value: string) {
|
||||
if (tag.match(/^h[0-9]$/) && name === 'id') {
|
||||
return name + '="' + escapeAttrValue(value) + '"';
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
export function preventXSS(text: string): string {
|
||||
const encodedText = filterXSS(text, xssOpts);
|
||||
|
||||
return encodedText;
|
||||
}
|
@ -41,7 +41,6 @@
|
||||
"@verdaccio/store": "workspace:6.0.0-6-next.30",
|
||||
"@verdaccio/tarball": "workspace:11.0.0-6-next.19",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.18",
|
||||
"@verdaccio/readme": "workspace:11.0.0-6-next.6",
|
||||
"core-js": "3.25.5",
|
||||
"debug": "4.3.4",
|
||||
"fastify": "4.8.1",
|
||||
|
@ -1,8 +1,6 @@
|
||||
import buildDebug from 'debug';
|
||||
import { FastifyInstance } from 'fastify';
|
||||
import _ from 'lodash';
|
||||
|
||||
import sanitizyReadme from '@verdaccio/readme';
|
||||
import { Manifest } from '@verdaccio/types';
|
||||
|
||||
const debug = buildDebug('verdaccio:fastify:web:readme');
|
||||
@ -27,7 +25,7 @@ async function readmeRoute(fastify: FastifyInstance) {
|
||||
},
|
||||
})) as Manifest;
|
||||
try {
|
||||
const parsedReadme = parseReadme(manifest.name, manifest.readme as string);
|
||||
const parsedReadme = manifest.readme;
|
||||
reply.code(fastify.statusCode.OK).send(parsedReadme);
|
||||
} catch {
|
||||
reply.code(fastify.statusCode.OK).send(NOT_README_FOUND);
|
||||
@ -52,8 +50,7 @@ async function readmeRoute(fastify: FastifyInstance) {
|
||||
},
|
||||
})) as Manifest;
|
||||
try {
|
||||
const parsedReadme = parseReadme(manifest.name, manifest.readme as string);
|
||||
reply.code(fastify.statusCode.OK).send(parsedReadme);
|
||||
reply.code(fastify.statusCode.OK).send(manifest.readme);
|
||||
} catch {
|
||||
reply.code(fastify.statusCode.OK).send(NOT_README_FOUND);
|
||||
}
|
||||
@ -61,17 +58,3 @@ async function readmeRoute(fastify: FastifyInstance) {
|
||||
}
|
||||
|
||||
export default readmeRoute;
|
||||
|
||||
/**
|
||||
* parse package readme - markdown/ascii
|
||||
* @param {String} packageName name of package
|
||||
* @param {String} readme package readme
|
||||
* @return {String} converted html template
|
||||
*/
|
||||
export function parseReadme(packageName: string, readme: string): string | void {
|
||||
if (_.isEmpty(readme) === false) {
|
||||
debug('sanizity readme');
|
||||
return sanitizyReadme(readme);
|
||||
}
|
||||
throw new Error('ERROR: No README data found!');
|
||||
}
|
||||
|
@ -31,7 +31,6 @@
|
||||
"@verdaccio/loaders": "workspace:6.0.0-6-next.19",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.18",
|
||||
"@verdaccio/middleware": "workspace:6.0.0-6-next.29",
|
||||
"@verdaccio/readme": "workspace:11.0.0-6-next.6",
|
||||
"@verdaccio/store": "workspace:6.0.0-6-next.30",
|
||||
"@verdaccio/tarball": "workspace:11.0.0-6-next.19",
|
||||
"@verdaccio/url": "workspace:11.0.0-6-next.16",
|
||||
|
@ -4,20 +4,27 @@ import { Router } from 'express';
|
||||
import { Auth } from '@verdaccio/auth';
|
||||
import { HEADERS, HEADER_TYPE } from '@verdaccio/core';
|
||||
import { $NextFunctionVer, $RequestExtend, $ResponseExtend, allow } from '@verdaccio/middleware';
|
||||
import sanitizyReadme from '@verdaccio/readme';
|
||||
import { Storage } from '@verdaccio/store';
|
||||
import { Manifest } from '@verdaccio/types';
|
||||
|
||||
import { AuthorAvatar, addScope, parseReadme } from '../utils/web-utils';
|
||||
import { AuthorAvatar, addScope } from '../utils/web-utils';
|
||||
|
||||
export { $RequestExtend, $ResponseExtend, $NextFunctionVer }; // Was required by other packages
|
||||
|
||||
// TODO: review this type, should be on @verdacid/types
|
||||
export type PackageExt = Manifest & { author: AuthorAvatar; dist?: { tarball: string } };
|
||||
|
||||
const debug = buildDebug('verdaccio:web:api:readme');
|
||||
|
||||
export const NOT_README_FOUND = 'ERROR: No README data found!';
|
||||
const debug = buildDebug('verdaccio:web:api:readme');
|
||||
const getReadme = (readme) => {
|
||||
if (typeof readme === 'string' && readme.length === 0) {
|
||||
return NOT_README_FOUND;
|
||||
}
|
||||
if (typeof readme !== 'string') {
|
||||
return NOT_README_FOUND;
|
||||
} else {
|
||||
return readme;
|
||||
}
|
||||
};
|
||||
|
||||
function addReadmeWebApi(storage: Storage, auth: Auth): Router {
|
||||
debug('initialized readme web api');
|
||||
@ -53,11 +60,7 @@ function addReadmeWebApi(storage: Storage, auth: Auth): Router {
|
||||
})) as Manifest;
|
||||
debug('readme pkg %o', manifest?.name);
|
||||
res.set(HEADER_TYPE.CONTENT_TYPE, HEADERS.TEXT_PLAIN_UTF8);
|
||||
try {
|
||||
next(parseReadme(manifest.name, manifest.readme as string));
|
||||
} catch {
|
||||
next(sanitizyReadme(NOT_README_FOUND));
|
||||
}
|
||||
next(getReadme(manifest.readme));
|
||||
} catch (err) {
|
||||
next(err);
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
import buildDebug from 'debug';
|
||||
import _ from 'lodash';
|
||||
|
||||
import sanitizyReadme from '@verdaccio/readme';
|
||||
// import { normalizeContributors } from '@verdaccio/store';
|
||||
import { Author, ConfigYaml } from '@verdaccio/types';
|
||||
|
||||
@ -19,23 +18,6 @@ export function validatePrimaryColor(primaryColor) {
|
||||
return primaryColor;
|
||||
}
|
||||
|
||||
/**
|
||||
* parse package readme - markdown/ascii
|
||||
* @param {String} packageName name of package
|
||||
* @param {String} readme package readme
|
||||
* @return {String} converted html template
|
||||
*/
|
||||
export function parseReadme(packageName: string, readme: string): string | void {
|
||||
if (_.isEmpty(readme) === false) {
|
||||
debug('sanizity readme');
|
||||
return sanitizyReadme(readme);
|
||||
}
|
||||
|
||||
// logs readme not found error
|
||||
// logger.error({ packageName }, '@{packageName}: No readme found');
|
||||
throw new Error('ERROR: No README data found!');
|
||||
}
|
||||
|
||||
export function deleteProperties(propertiesToDelete: string[], objectItem: any): any {
|
||||
debug('deleted unused version properties');
|
||||
_.forEach(propertiesToDelete, (property): any => {
|
||||
|
@ -1,51 +0,0 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`Utilities parseReadme should parse makrdown text to html template 1`] = `
|
||||
"<h1 id="project-title">Project Title</h1>
|
||||
<p>One Paragraph of project description goes here</p>
|
||||
<h2 id="getting-started">Getting Started</h2>
|
||||
<p>These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.</p>
|
||||
<h3 id="prerequisites">Prerequisites</h3>
|
||||
<p>What things you need to install the software and how to install them</p>
|
||||
<pre><code>Give examples
|
||||
</code></pre>
|
||||
<h3 id="installing">Installing</h3>
|
||||
<p>A step by step series of examples that tell you how to get a development env running</p>
|
||||
<p>Say what the step will be</p>
|
||||
<pre><code>Give the example
|
||||
</code></pre>
|
||||
<p>And repeat</p>
|
||||
<pre><code>until finished
|
||||
</code></pre>
|
||||
<p>End with an example of getting some data out of the system or using it for a little demo</p>
|
||||
<h2 id="running-the-tests">Running the tests</h2>
|
||||
<p>Explain how to run the automated tests for this system</p>
|
||||
<h3 id="break-down-into-end-to-end-tests">Break down into end to end tests</h3>
|
||||
<p>Explain what these tests test and why</p>
|
||||
<pre><code>Give an example
|
||||
</code></pre>
|
||||
<h3 id="and-coding-style-tests">And coding style tests</h3>
|
||||
<p>Explain what these tests test and why</p>
|
||||
<pre><code>Give an example
|
||||
</code></pre>
|
||||
<h2 id="deployment">Deployment</h2>
|
||||
<p>Add additional notes about how to deploy this on a live system</p>
|
||||
<h2 id="built-with">Built With</h2>
|
||||
<ul>
|
||||
<li>The web framework used</li>
|
||||
<li>Dependency Management</li>
|
||||
<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>
|
||||
<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>
|
||||
<p>This project is licensed under the MIT License - see the <a href="LICENSE.md">LICENSE.md</a> file for details</p>
|
||||
<h2 id="acknowledgments">Acknowledgments</h2>
|
||||
<ul>
|
||||
<li>Hat tip to anyone whose code was used</li>
|
||||
<li>Inspiration</li>
|
||||
<li>etc</li>
|
||||
</ul>"
|
||||
`;
|
@ -8,7 +8,7 @@ import { publishVersion } from '@verdaccio/test-helper';
|
||||
import { NOT_README_FOUND } from '../src/api/readme';
|
||||
import { initializeServer } from './helper';
|
||||
|
||||
setup([]);
|
||||
setup({});
|
||||
|
||||
const mockManifest = jest.fn();
|
||||
jest.mock('@verdaccio/ui-theme', () => mockManifest());
|
||||
|
@ -1,81 +0,0 @@
|
||||
# Project Title
|
||||
|
||||
One Paragraph of project description goes here
|
||||
|
||||
## Getting Started
|
||||
|
||||
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
What things you need to install the software and how to install them
|
||||
|
||||
```
|
||||
Give examples
|
||||
```
|
||||
|
||||
### Installing
|
||||
|
||||
A step by step series of examples that tell you how to get a development env running
|
||||
|
||||
Say what the step will be
|
||||
|
||||
```
|
||||
Give the example
|
||||
```
|
||||
|
||||
And repeat
|
||||
|
||||
```
|
||||
until finished
|
||||
```
|
||||
|
||||
End with an example of getting some data out of the system or using it for a little demo
|
||||
|
||||
## Running the tests
|
||||
|
||||
Explain how to run the automated tests for this system
|
||||
|
||||
### Break down into end to end tests
|
||||
|
||||
Explain what these tests test and why
|
||||
|
||||
```
|
||||
Give an example
|
||||
```
|
||||
|
||||
### And coding style tests
|
||||
|
||||
Explain what these tests test and why
|
||||
|
||||
```
|
||||
Give an example
|
||||
```
|
||||
|
||||
## Deployment
|
||||
|
||||
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
|
||||
|
||||
## Contributing
|
||||
|
||||
Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.
|
||||
|
||||
## Versioning
|
||||
|
||||
We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags).
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details
|
||||
|
||||
## Acknowledgments
|
||||
|
||||
- Hat tip to anyone whose code was used
|
||||
- Inspiration
|
||||
- etc
|
@ -1,11 +1,4 @@
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
|
||||
import { parseReadme, validatePrimaryColor } from '../src/utils/web-utils';
|
||||
|
||||
const readmeFile = (fileName = 'markdown.md') => {
|
||||
return fs.readFileSync(path.join(__dirname, `./partials/readme/${fileName}`));
|
||||
};
|
||||
import { validatePrimaryColor } from '../src/utils/web-utils';
|
||||
|
||||
describe('Utilities', () => {
|
||||
describe('validatePrimaryColor', () => {
|
||||
@ -17,29 +10,4 @@ describe('Utilities', () => {
|
||||
expect(validatePrimaryColor('fff')).toBeUndefined();
|
||||
});
|
||||
});
|
||||
describe('parseReadme', () => {
|
||||
test('should parse makrdown text to html template', () => {
|
||||
const markdown = '# markdown';
|
||||
expect(parseReadme('testPackage', markdown)).toEqual('<h1 id="markdown">markdown</h1>');
|
||||
// @ts-ignore
|
||||
expect(parseReadme('testPackage', String(readmeFile('markdown.md')))).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('should pass for conversion of non-ascii to markdown text', () => {
|
||||
const simpleText = 'simple text';
|
||||
const randomText = '%%%%%**##==';
|
||||
const randomTextMarkdown = 'simple text \n # markdown';
|
||||
|
||||
expect(parseReadme('testPackage', randomText)).toEqual('<p>%%%%%**##==</p>');
|
||||
expect(parseReadme('testPackage', simpleText)).toEqual('<p>simple text</p>');
|
||||
expect(parseReadme('testPackage', randomTextMarkdown)).toEqual(
|
||||
'<p>simple text </p>\n<h1 id="markdown">markdown</h1>'
|
||||
);
|
||||
});
|
||||
|
||||
test('should show error for no readme data', () => {
|
||||
const noData = '';
|
||||
expect(() => parseReadme('testPackage', noData)).toThrowError('ERROR: No README data found!');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
369
pnpm-lock.yaml
generated
369
pnpm-lock.yaml
generated
@ -466,19 +466,6 @@ importers:
|
||||
devDependencies:
|
||||
'@verdaccio/types': link:../types
|
||||
|
||||
packages/core/readme:
|
||||
specifiers:
|
||||
'@verdaccio/types': workspace:11.0.0-6-next.17
|
||||
dompurify: 2.4.0
|
||||
jsdom: 17.0.0
|
||||
marked: 3.0.8
|
||||
dependencies:
|
||||
dompurify: 2.4.0
|
||||
jsdom: 17.0.0
|
||||
marked: 3.0.8
|
||||
devDependencies:
|
||||
'@verdaccio/types': link:../types
|
||||
|
||||
packages/core/tarball:
|
||||
specifiers:
|
||||
'@verdaccio/core': workspace:6.0.0-6-next.50
|
||||
@ -811,9 +798,10 @@ importers:
|
||||
country-flag-icons: 1.5.5
|
||||
css-loader: 6.7.1
|
||||
dayjs: 1.11.5
|
||||
dompurify: 2.4.0
|
||||
friendly-errors-webpack-plugin: 1.7.0
|
||||
github-markdown-css: 4.0.0
|
||||
harmony-reflect: 1.6.2
|
||||
highlight.js: 11.6.0
|
||||
history: 4.10.1
|
||||
html-webpack-plugin: 5.5.0
|
||||
i18next: 20.6.1
|
||||
@ -822,6 +810,7 @@ importers:
|
||||
js-yaml: 3.14.1
|
||||
localstorage-memory: 1.0.3
|
||||
lodash: 4.17.21
|
||||
marked: 4.2.2
|
||||
mini-css-extract-plugin: 2.6.1
|
||||
msw: 0.47.4
|
||||
mutationobserver-shim: 0.3.7
|
||||
@ -863,7 +852,6 @@ importers:
|
||||
webpack-manifest-plugin: 4.1.1
|
||||
webpack-merge: 5.8.0
|
||||
whatwg-fetch: 3.6.2
|
||||
xss: 1.0.14
|
||||
devDependencies:
|
||||
'@emotion/babel-plugin': 11.10.2_@babel+core@7.19.3
|
||||
'@emotion/css': 11.10.0_@babel+core@7.19.3
|
||||
@ -891,9 +879,10 @@ importers:
|
||||
country-flag-icons: 1.5.5
|
||||
css-loader: 6.7.1_webpack@5.74.0
|
||||
dayjs: 1.11.5
|
||||
dompurify: 2.4.0
|
||||
friendly-errors-webpack-plugin: 1.7.0_webpack@5.74.0
|
||||
github-markdown-css: 4.0.0
|
||||
harmony-reflect: 1.6.2
|
||||
highlight.js: 11.6.0
|
||||
history: 4.10.1
|
||||
html-webpack-plugin: 5.5.0_webpack@5.74.0
|
||||
i18next: 20.6.1
|
||||
@ -902,6 +891,7 @@ importers:
|
||||
js-yaml: 3.14.1
|
||||
localstorage-memory: 1.0.3
|
||||
lodash: 4.17.21
|
||||
marked: 4.2.2
|
||||
mini-css-extract-plugin: 2.6.1_webpack@5.74.0
|
||||
msw: 0.47.4_typescript@4.8.4
|
||||
mutationobserver-shim: 0.3.7
|
||||
@ -943,7 +933,6 @@ importers:
|
||||
webpack-manifest-plugin: 4.1.1_webpack@5.74.0
|
||||
webpack-merge: 5.8.0
|
||||
whatwg-fetch: 3.6.2
|
||||
xss: 1.0.14
|
||||
|
||||
packages/proxy:
|
||||
specifiers:
|
||||
@ -1040,7 +1029,6 @@ importers:
|
||||
'@verdaccio/config': workspace:6.0.0-6-next.50
|
||||
'@verdaccio/core': workspace:6.0.0-6-next.50
|
||||
'@verdaccio/logger': workspace:6.0.0-6-next.18
|
||||
'@verdaccio/readme': workspace:11.0.0-6-next.6
|
||||
'@verdaccio/store': workspace:6.0.0-6-next.30
|
||||
'@verdaccio/tarball': workspace:11.0.0-6-next.19
|
||||
'@verdaccio/types': workspace:11.0.0-6-next.17
|
||||
@ -1056,7 +1044,6 @@ importers:
|
||||
'@verdaccio/config': link:../../config
|
||||
'@verdaccio/core': link:../../core/core
|
||||
'@verdaccio/logger': link:../../logger
|
||||
'@verdaccio/readme': link:../../core/readme
|
||||
'@verdaccio/store': link:../../store
|
||||
'@verdaccio/tarball': link:../../core/tarball
|
||||
'@verdaccio/utils': link:../../utils
|
||||
@ -1322,7 +1309,6 @@ importers:
|
||||
'@verdaccio/loaders': workspace:6.0.0-6-next.19
|
||||
'@verdaccio/logger': workspace:6.0.0-6-next.18
|
||||
'@verdaccio/middleware': workspace:6.0.0-6-next.29
|
||||
'@verdaccio/readme': workspace:11.0.0-6-next.6
|
||||
'@verdaccio/store': workspace:6.0.0-6-next.30
|
||||
'@verdaccio/tarball': workspace:11.0.0-6-next.19
|
||||
'@verdaccio/test-helper': workspace:2.0.0-6-next.6
|
||||
@ -1348,7 +1334,6 @@ importers:
|
||||
'@verdaccio/loaders': link:../loaders
|
||||
'@verdaccio/logger': link:../logger
|
||||
'@verdaccio/middleware': link:../middleware
|
||||
'@verdaccio/readme': link:../core/readme
|
||||
'@verdaccio/store': link:../store
|
||||
'@verdaccio/tarball': link:../core/tarball
|
||||
'@verdaccio/url': link:../core/url
|
||||
@ -5941,7 +5926,7 @@ packages:
|
||||
copy-webpack-plugin: 11.0.0_webpack@5.74.0
|
||||
core-js: 3.25.5
|
||||
css-loader: 6.7.1_webpack@5.74.0
|
||||
css-minimizer-webpack-plugin: 4.0.0_webpack@5.74.0
|
||||
css-minimizer-webpack-plugin: 4.0.0_2868035f691d246a9a4674d398e4be11
|
||||
cssnano: 5.1.12_postcss@8.4.18
|
||||
del: 6.1.1
|
||||
detect-port: 1.3.0
|
||||
@ -5984,8 +5969,10 @@ packages:
|
||||
webpackbar: 5.0.2_webpack@5.74.0
|
||||
transitivePeerDependencies:
|
||||
- '@docusaurus/types'
|
||||
- '@parcel/css'
|
||||
- '@swc/core'
|
||||
- bufferutil
|
||||
- csso
|
||||
- debug
|
||||
- esbuild
|
||||
- eslint
|
||||
@ -6036,7 +6023,7 @@ packages:
|
||||
copy-webpack-plugin: 11.0.0_webpack@5.74.0
|
||||
core-js: 3.25.5
|
||||
css-loader: 6.7.1_webpack@5.74.0
|
||||
css-minimizer-webpack-plugin: 4.0.0_webpack@5.74.0
|
||||
css-minimizer-webpack-plugin: 4.0.0_2868035f691d246a9a4674d398e4be11
|
||||
cssnano: 5.1.12_postcss@8.4.18
|
||||
del: 6.1.1
|
||||
detect-port: 1.3.0
|
||||
@ -6079,8 +6066,10 @@ packages:
|
||||
webpackbar: 5.0.2_webpack@5.74.0
|
||||
transitivePeerDependencies:
|
||||
- '@docusaurus/types'
|
||||
- '@parcel/css'
|
||||
- '@swc/core'
|
||||
- bufferutil
|
||||
- csso
|
||||
- debug
|
||||
- esbuild
|
||||
- eslint
|
||||
@ -6233,8 +6222,10 @@ packages:
|
||||
utility-types: 3.10.0
|
||||
webpack: 5.74.0_esbuild@0.14.10
|
||||
transitivePeerDependencies:
|
||||
- '@parcel/css'
|
||||
- '@swc/core'
|
||||
- bufferutil
|
||||
- csso
|
||||
- debug
|
||||
- esbuild
|
||||
- eslint
|
||||
@ -6272,8 +6263,10 @@ packages:
|
||||
utility-types: 3.10.0
|
||||
webpack: 5.74.0_esbuild@0.14.10
|
||||
transitivePeerDependencies:
|
||||
- '@parcel/css'
|
||||
- '@swc/core'
|
||||
- bufferutil
|
||||
- csso
|
||||
- debug
|
||||
- esbuild
|
||||
- eslint
|
||||
@ -6303,8 +6296,10 @@ packages:
|
||||
tslib: 2.4.0
|
||||
webpack: 5.74.0_esbuild@0.14.10
|
||||
transitivePeerDependencies:
|
||||
- '@parcel/css'
|
||||
- '@swc/core'
|
||||
- bufferutil
|
||||
- csso
|
||||
- debug
|
||||
- esbuild
|
||||
- eslint
|
||||
@ -6332,9 +6327,11 @@ packages:
|
||||
react-json-view: 1.21.3_react-dom@17.0.2+react@17.0.2
|
||||
tslib: 2.4.0
|
||||
transitivePeerDependencies:
|
||||
- '@parcel/css'
|
||||
- '@swc/core'
|
||||
- '@types/react'
|
||||
- bufferutil
|
||||
- csso
|
||||
- debug
|
||||
- encoding
|
||||
- esbuild
|
||||
@ -6361,8 +6358,10 @@ packages:
|
||||
react-dom: 17.0.2_react@17.0.2
|
||||
tslib: 2.4.0
|
||||
transitivePeerDependencies:
|
||||
- '@parcel/css'
|
||||
- '@swc/core'
|
||||
- bufferutil
|
||||
- csso
|
||||
- debug
|
||||
- esbuild
|
||||
- eslint
|
||||
@ -6388,8 +6387,10 @@ packages:
|
||||
react-dom: 17.0.2_react@17.0.2
|
||||
tslib: 2.4.0
|
||||
transitivePeerDependencies:
|
||||
- '@parcel/css'
|
||||
- '@swc/core'
|
||||
- bufferutil
|
||||
- csso
|
||||
- debug
|
||||
- esbuild
|
||||
- eslint
|
||||
@ -6420,8 +6421,10 @@ packages:
|
||||
sitemap: 7.1.1
|
||||
tslib: 2.4.0
|
||||
transitivePeerDependencies:
|
||||
- '@parcel/css'
|
||||
- '@swc/core'
|
||||
- bufferutil
|
||||
- csso
|
||||
- debug
|
||||
- esbuild
|
||||
- eslint
|
||||
@ -6456,9 +6459,11 @@ packages:
|
||||
react-dom: 17.0.2_react@17.0.2
|
||||
transitivePeerDependencies:
|
||||
- '@algolia/client-search'
|
||||
- '@parcel/css'
|
||||
- '@swc/core'
|
||||
- '@types/react'
|
||||
- bufferutil
|
||||
- csso
|
||||
- debug
|
||||
- encoding
|
||||
- esbuild
|
||||
@ -6533,8 +6538,10 @@ packages:
|
||||
tslib: 2.4.0
|
||||
utility-types: 3.10.0
|
||||
transitivePeerDependencies:
|
||||
- '@parcel/css'
|
||||
- '@swc/core'
|
||||
- bufferutil
|
||||
- csso
|
||||
- debug
|
||||
- esbuild
|
||||
- eslint
|
||||
@ -6571,8 +6578,10 @@ packages:
|
||||
utility-types: 3.10.0
|
||||
transitivePeerDependencies:
|
||||
- '@docusaurus/types'
|
||||
- '@parcel/css'
|
||||
- '@swc/core'
|
||||
- bufferutil
|
||||
- csso
|
||||
- debug
|
||||
- esbuild
|
||||
- eslint
|
||||
@ -6609,8 +6618,10 @@ packages:
|
||||
utility-types: 3.10.0
|
||||
transitivePeerDependencies:
|
||||
- '@docusaurus/types'
|
||||
- '@parcel/css'
|
||||
- '@swc/core'
|
||||
- bufferutil
|
||||
- csso
|
||||
- debug
|
||||
- esbuild
|
||||
- eslint
|
||||
@ -6650,9 +6661,11 @@ packages:
|
||||
transitivePeerDependencies:
|
||||
- '@algolia/client-search'
|
||||
- '@docusaurus/types'
|
||||
- '@parcel/css'
|
||||
- '@swc/core'
|
||||
- '@types/react'
|
||||
- bufferutil
|
||||
- csso
|
||||
- debug
|
||||
- esbuild
|
||||
- eslint
|
||||
@ -6692,9 +6705,11 @@ packages:
|
||||
transitivePeerDependencies:
|
||||
- '@algolia/client-search'
|
||||
- '@docusaurus/types'
|
||||
- '@parcel/css'
|
||||
- '@swc/core'
|
||||
- '@types/react'
|
||||
- bufferutil
|
||||
- csso
|
||||
- debug
|
||||
- esbuild
|
||||
- eslint
|
||||
@ -6792,6 +6807,9 @@ packages:
|
||||
engines: {node: '>=16.14'}
|
||||
peerDependencies:
|
||||
'@docusaurus/types': '*'
|
||||
peerDependenciesMeta:
|
||||
'@docusaurus/types':
|
||||
optional: true
|
||||
dependencies:
|
||||
tslib: 2.4.0
|
||||
|
||||
@ -6800,6 +6818,9 @@ packages:
|
||||
engines: {node: '>=16.14'}
|
||||
peerDependencies:
|
||||
'@docusaurus/types': '*'
|
||||
peerDependenciesMeta:
|
||||
'@docusaurus/types':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@docusaurus/types': 2.2.0_e04bad828ac717e6587f05c972df8358
|
||||
tslib: 2.4.0
|
||||
@ -6880,6 +6901,9 @@ packages:
|
||||
engines: {node: '>=16.14'}
|
||||
peerDependencies:
|
||||
'@docusaurus/types': '*'
|
||||
peerDependenciesMeta:
|
||||
'@docusaurus/types':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@docusaurus/logger': 2.2.0
|
||||
'@docusaurus/types': 2.2.0_e04bad828ac717e6587f05c972df8358
|
||||
@ -6910,6 +6934,9 @@ packages:
|
||||
engines: {node: '>=16.14'}
|
||||
peerDependencies:
|
||||
'@docusaurus/types': '*'
|
||||
peerDependenciesMeta:
|
||||
'@docusaurus/types':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@docusaurus/logger': 2.2.0
|
||||
'@docusaurus/types': 2.2.0_react-dom@17.0.2+react@17.0.2
|
||||
@ -6940,6 +6967,9 @@ packages:
|
||||
engines: {node: '>=16.14'}
|
||||
peerDependencies:
|
||||
'@docusaurus/types': '*'
|
||||
peerDependenciesMeta:
|
||||
'@docusaurus/types':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@docusaurus/logger': 2.2.0
|
||||
'@svgr/webpack': 6.2.1
|
||||
@ -8615,11 +8645,6 @@ packages:
|
||||
react-dom: 18.2.0_react@18.2.0
|
||||
dev: true
|
||||
|
||||
/@tootallnate/once/1.1.2:
|
||||
resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==}
|
||||
engines: {node: '>= 6'}
|
||||
dev: false
|
||||
|
||||
/@tootallnate/once/2.0.0:
|
||||
resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
|
||||
engines: {node: '>= 10'}
|
||||
@ -9642,10 +9667,6 @@ packages:
|
||||
through: 2.3.8
|
||||
dev: false
|
||||
|
||||
/abab/2.0.5:
|
||||
resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==}
|
||||
dev: false
|
||||
|
||||
/abab/2.0.6:
|
||||
resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
|
||||
dev: true
|
||||
@ -9674,13 +9695,6 @@ packages:
|
||||
mime-types: 2.1.34
|
||||
negotiator: 0.6.3
|
||||
|
||||
/acorn-globals/6.0.0:
|
||||
resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==}
|
||||
dependencies:
|
||||
acorn: 7.4.1
|
||||
acorn-walk: 7.2.0
|
||||
dev: false
|
||||
|
||||
/acorn-globals/7.0.1:
|
||||
resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==}
|
||||
dependencies:
|
||||
@ -9710,27 +9724,10 @@ packages:
|
||||
dependencies:
|
||||
acorn: 8.8.0
|
||||
|
||||
/acorn-walk/7.2.0:
|
||||
resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
dev: false
|
||||
|
||||
/acorn-walk/8.2.0:
|
||||
resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
|
||||
/acorn/7.4.1:
|
||||
resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
hasBin: true
|
||||
dev: false
|
||||
|
||||
/acorn/8.4.1:
|
||||
resolution: {integrity: sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
hasBin: true
|
||||
dev: false
|
||||
|
||||
/acorn/8.7.1:
|
||||
resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
@ -10090,6 +10087,7 @@ packages:
|
||||
|
||||
/asynckit/0.4.0:
|
||||
resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=}
|
||||
dev: true
|
||||
|
||||
/at-least-node/1.0.0:
|
||||
resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
|
||||
@ -10757,10 +10755,6 @@ packages:
|
||||
wcwidth: 1.0.1
|
||||
dev: true
|
||||
|
||||
/browser-process-hrtime/1.0.0:
|
||||
resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==}
|
||||
dev: false
|
||||
|
||||
/browserslist/4.14.2:
|
||||
resolution: {integrity: sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==}
|
||||
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
|
||||
@ -11291,6 +11285,7 @@ packages:
|
||||
engines: {node: '>= 0.8'}
|
||||
dependencies:
|
||||
delayed-stream: 1.0.0
|
||||
dev: true
|
||||
|
||||
/comma-separated-tokens/1.0.8:
|
||||
resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==}
|
||||
@ -11723,13 +11718,28 @@ packages:
|
||||
webpack: 5.74.0_esbuild@0.14.10
|
||||
dev: false
|
||||
|
||||
/css-minimizer-webpack-plugin/4.0.0_webpack@5.74.0:
|
||||
/css-minimizer-webpack-plugin/4.0.0_2868035f691d246a9a4674d398e4be11:
|
||||
resolution: {integrity: sha512-7ZXXRzRHvofv3Uac5Y+RkWRNo0ZMlcg8e9/OtrqUYmwDWJo+qs67GvdeFrXLsFb7czKNwjQhPkM0avlIYl+1nA==}
|
||||
engines: {node: '>= 14.15.0'}
|
||||
peerDependencies:
|
||||
'@parcel/css': '*'
|
||||
clean-css: '*'
|
||||
csso: '*'
|
||||
esbuild: '*'
|
||||
webpack: ^5.0.0
|
||||
peerDependenciesMeta:
|
||||
'@parcel/css':
|
||||
optional: true
|
||||
clean-css:
|
||||
optional: true
|
||||
csso:
|
||||
optional: true
|
||||
esbuild:
|
||||
optional: true
|
||||
dependencies:
|
||||
clean-css: 5.3.0
|
||||
cssnano: 5.1.12_postcss@8.4.18
|
||||
esbuild: 0.14.10
|
||||
jest-worker: 27.5.1
|
||||
postcss: 8.4.18
|
||||
schema-utils: 4.0.0
|
||||
@ -11823,10 +11833,6 @@ packages:
|
||||
engines: {node: '>=4'}
|
||||
hasBin: true
|
||||
|
||||
/cssfilter/0.0.10:
|
||||
resolution: {integrity: sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=}
|
||||
dev: true
|
||||
|
||||
/cssnano-preset-advanced/5.3.8_postcss@8.4.16:
|
||||
resolution: {integrity: sha512-xUlLLnEB1LjpEik+zgRNlk8Y/koBPPtONZjp7JKbXigeAmCrFvq9H0pXW5jJV45bQWAlmJ0sKy+IMr0XxLYQZg==}
|
||||
engines: {node: ^10 || ^12 || >=14.0}
|
||||
@ -12039,15 +12045,18 @@ packages:
|
||||
|
||||
/cssom/0.3.8:
|
||||
resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==}
|
||||
dev: true
|
||||
|
||||
/cssom/0.5.0:
|
||||
resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==}
|
||||
dev: true
|
||||
|
||||
/cssstyle/2.3.0:
|
||||
resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
cssom: 0.3.8
|
||||
dev: true
|
||||
|
||||
/csstype/2.6.13:
|
||||
resolution: {integrity: sha512-ul26pfSQTZW8dcOnD2iiJssfXw0gdNVX9IJDH/X3K5DGPfj+fUYe3kB+swUY6BF3oZDxaID3AJt+9/ojSAE05A==}
|
||||
@ -12150,15 +12159,6 @@ packages:
|
||||
assert-plus: 1.0.0
|
||||
dev: true
|
||||
|
||||
/data-urls/3.0.0:
|
||||
resolution: {integrity: sha512-4AefxbTTdFtxDUdh0BuMBs2qJVL25Mow2zlcuuePegQwgD6GEmQao42LLEeksOui8nL4RcNEugIpFP7eRd33xg==}
|
||||
engines: {node: '>=12'}
|
||||
dependencies:
|
||||
abab: 2.0.5
|
||||
whatwg-mimetype: 2.3.0
|
||||
whatwg-url: 9.1.0
|
||||
dev: false
|
||||
|
||||
/data-urls/3.0.2:
|
||||
resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==}
|
||||
engines: {node: '>=12'}
|
||||
@ -12257,6 +12257,7 @@ packages:
|
||||
optional: true
|
||||
dependencies:
|
||||
ms: 2.1.2
|
||||
dev: true
|
||||
|
||||
/debug/4.3.3_supports-color@6.1.0:
|
||||
resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==}
|
||||
@ -12318,10 +12319,6 @@ packages:
|
||||
resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
/decimal.js/10.3.1:
|
||||
resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==}
|
||||
dev: false
|
||||
|
||||
/decimal.js/10.4.2:
|
||||
resolution: {integrity: sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==}
|
||||
dev: true
|
||||
@ -12453,6 +12450,7 @@ packages:
|
||||
/delayed-stream/1.0.0:
|
||||
resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=}
|
||||
engines: {node: '>=0.4.0'}
|
||||
dev: true
|
||||
|
||||
/depd/1.1.2:
|
||||
resolution: {integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=}
|
||||
@ -12688,13 +12686,6 @@ packages:
|
||||
/domelementtype/2.3.0:
|
||||
resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
|
||||
|
||||
/domexception/2.0.1:
|
||||
resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
webidl-conversions: 5.0.0
|
||||
dev: false
|
||||
|
||||
/domexception/4.0.0:
|
||||
resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==}
|
||||
engines: {node: '>=12'}
|
||||
@ -12717,7 +12708,7 @@ packages:
|
||||
|
||||
/dompurify/2.4.0:
|
||||
resolution: {integrity: sha512-Be9tbQMZds4a3C6xTmz68NlMfeONA//4dOavl/1rNw50E+/QO0KVpbcU0PcaW0nsQxurXls9ZocqFxk8R2mWEA==}
|
||||
dev: false
|
||||
dev: true
|
||||
|
||||
/domutils/1.7.0:
|
||||
resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==}
|
||||
@ -13286,6 +13277,7 @@ packages:
|
||||
optionator: 0.8.3
|
||||
optionalDependencies:
|
||||
source-map: 0.6.1
|
||||
dev: true
|
||||
|
||||
/eslint-config-google/0.14.0_eslint@8.26.0:
|
||||
resolution: {integrity: sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==}
|
||||
@ -14377,6 +14369,11 @@ packages:
|
||||
typescript: '>= 2.7'
|
||||
vue-template-compiler: '*'
|
||||
webpack: '>= 4'
|
||||
peerDependenciesMeta:
|
||||
eslint:
|
||||
optional: true
|
||||
vue-template-compiler:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/code-frame': 7.18.6
|
||||
'@types/json-schema': 7.0.9
|
||||
@ -14429,6 +14426,7 @@ packages:
|
||||
asynckit: 0.4.0
|
||||
combined-stream: 1.0.8
|
||||
mime-types: 2.1.34
|
||||
dev: true
|
||||
|
||||
/formidable/2.0.1:
|
||||
resolution: {integrity: sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==}
|
||||
@ -14616,10 +14614,6 @@ packages:
|
||||
assert-plus: 1.0.0
|
||||
dev: true
|
||||
|
||||
/github-markdown-css/4.0.0:
|
||||
resolution: {integrity: sha512-mH0bcIKv4XAN0mQVokfTdKo2OD5K8WJE9+lbMdM32/q0Ie5tXgVN/2o+zvToRMxSTUuiTRcLg5hzkFfOyBYreg==}
|
||||
dev: true
|
||||
|
||||
/github-slugger/1.4.0:
|
||||
resolution: {integrity: sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==}
|
||||
|
||||
@ -14987,6 +14981,11 @@ packages:
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/highlight.js/11.6.0:
|
||||
resolution: {integrity: sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
dev: true
|
||||
|
||||
/history/4.10.1:
|
||||
resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==}
|
||||
dependencies:
|
||||
@ -15033,13 +15032,6 @@ packages:
|
||||
engines: {node: '>=14'}
|
||||
dev: false
|
||||
|
||||
/html-encoding-sniffer/2.0.1:
|
||||
resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==}
|
||||
engines: {node: '>=10'}
|
||||
dependencies:
|
||||
whatwg-encoding: 1.0.5
|
||||
dev: false
|
||||
|
||||
/html-encoding-sniffer/3.0.0:
|
||||
resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==}
|
||||
engines: {node: '>=12'}
|
||||
@ -15197,17 +15189,6 @@ packages:
|
||||
/http-parser-js/0.5.2:
|
||||
resolution: {integrity: sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==}
|
||||
|
||||
/http-proxy-agent/4.0.1:
|
||||
resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==}
|
||||
engines: {node: '>= 6'}
|
||||
dependencies:
|
||||
'@tootallnate/once': 1.1.2
|
||||
agent-base: 6.0.2
|
||||
debug: 4.3.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/http-proxy-agent/5.0.0:
|
||||
resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==}
|
||||
engines: {node: '>= 6'}
|
||||
@ -15236,6 +15217,9 @@ packages:
|
||||
engines: {node: '>=12.0.0'}
|
||||
peerDependencies:
|
||||
'@types/express': ^4.17.13
|
||||
peerDependenciesMeta:
|
||||
'@types/express':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@types/express': 4.17.14
|
||||
'@types/http-proxy': 1.17.8
|
||||
@ -15285,16 +15269,6 @@ packages:
|
||||
quick-lru: 5.1.1
|
||||
resolve-alpn: 1.2.1
|
||||
|
||||
/https-proxy-agent/5.0.0:
|
||||
resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==}
|
||||
engines: {node: '>= 6'}
|
||||
dependencies:
|
||||
agent-base: 6.0.2
|
||||
debug: 4.3.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/https-proxy-agent/5.0.1:
|
||||
resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
|
||||
engines: {node: '>= 6'}
|
||||
@ -15806,6 +15780,7 @@ packages:
|
||||
|
||||
/is-potential-custom-element-name/1.0.1:
|
||||
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
|
||||
dev: true
|
||||
|
||||
/is-promise/2.2.2:
|
||||
resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==}
|
||||
@ -16545,48 +16520,6 @@ packages:
|
||||
resolution: {integrity: sha1-peZUwuWi3rXyAdls77yoDA7y9RM=}
|
||||
dev: true
|
||||
|
||||
/jsdom/17.0.0:
|
||||
resolution: {integrity: sha512-MUq4XdqwtNurZDVeKScENMPHnkgmdIvMzZ1r1NSwHkDuaqI6BouPjr+17COo4/19oLNnmdpFDPOHVpgIZmZ+VA==}
|
||||
engines: {node: '>=12'}
|
||||
peerDependencies:
|
||||
canvas: ^2.5.0
|
||||
peerDependenciesMeta:
|
||||
canvas:
|
||||
optional: true
|
||||
dependencies:
|
||||
abab: 2.0.5
|
||||
acorn: 8.4.1
|
||||
acorn-globals: 6.0.0
|
||||
cssom: 0.5.0
|
||||
cssstyle: 2.3.0
|
||||
data-urls: 3.0.0
|
||||
decimal.js: 10.3.1
|
||||
domexception: 2.0.1
|
||||
escodegen: 2.0.0
|
||||
form-data: 4.0.0
|
||||
html-encoding-sniffer: 2.0.1
|
||||
http-proxy-agent: 4.0.1
|
||||
https-proxy-agent: 5.0.0
|
||||
is-potential-custom-element-name: 1.0.1
|
||||
nwsapi: 2.2.0
|
||||
parse5: 6.0.1
|
||||
saxes: 5.0.1
|
||||
symbol-tree: 3.2.4
|
||||
tough-cookie: 4.0.0
|
||||
w3c-hr-time: 1.0.2
|
||||
w3c-xmlserializer: 2.0.0
|
||||
webidl-conversions: 6.1.0
|
||||
whatwg-encoding: 1.0.5
|
||||
whatwg-mimetype: 2.3.0
|
||||
whatwg-url: 9.1.0
|
||||
ws: 8.2.1
|
||||
xml-name-validator: 3.0.0
|
||||
transitivePeerDependencies:
|
||||
- bufferutil
|
||||
- supports-color
|
||||
- utf-8-validate
|
||||
dev: false
|
||||
|
||||
/jsdom/20.0.1:
|
||||
resolution: {integrity: sha512-pksjj7Rqoa+wdpkKcLzQRHhJCEE42qQhl/xLMUKHgoSejaKOdaXEAnqs6uDNwMl/fciHTzKeR8Wm8cw7N+g98A==}
|
||||
engines: {node: '>=14'}
|
||||
@ -16920,6 +16853,7 @@ packages:
|
||||
dependencies:
|
||||
prelude-ls: 1.1.2
|
||||
type-check: 0.3.2
|
||||
dev: true
|
||||
|
||||
/levn/0.4.1:
|
||||
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
|
||||
@ -17291,17 +17225,17 @@ packages:
|
||||
resolution: {integrity: sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==}
|
||||
dev: true
|
||||
|
||||
/marked/3.0.8:
|
||||
resolution: {integrity: sha512-0gVrAjo5m0VZSJb4rpL59K1unJAMb/hm8HRXqasD8VeC8m91ytDPMritgFSlKonfdt+rRYYpP/JfLxgIX8yoSw==}
|
||||
engines: {node: '>= 12'}
|
||||
hasBin: true
|
||||
dev: false
|
||||
|
||||
/marked/4.1.1:
|
||||
resolution: {integrity: sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw==}
|
||||
engines: {node: '>= 12'}
|
||||
hasBin: true
|
||||
|
||||
/marked/4.2.2:
|
||||
resolution: {integrity: sha512-JjBTFTAvuTgANXx82a5vzK9JLSMoV6V3LBVn4Uhdso6t7vXrGx7g1Cd2r6NYSsxrYbQGFCMqBDhFHyK5q2UvcQ==}
|
||||
engines: {node: '>= 12'}
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/mathml-tag-names/2.1.3:
|
||||
resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==}
|
||||
dev: true
|
||||
@ -18749,10 +18683,6 @@ packages:
|
||||
dependencies:
|
||||
boolbase: 1.0.0
|
||||
|
||||
/nwsapi/2.2.0:
|
||||
resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==}
|
||||
dev: false
|
||||
|
||||
/nwsapi/2.2.2:
|
||||
resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==}
|
||||
dev: true
|
||||
@ -18935,6 +18865,7 @@ packages:
|
||||
prelude-ls: 1.1.2
|
||||
type-check: 0.3.2
|
||||
word-wrap: 1.2.3
|
||||
dev: true
|
||||
|
||||
/optionator/0.9.1:
|
||||
resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==}
|
||||
@ -20403,6 +20334,7 @@ packages:
|
||||
/prelude-ls/1.1.2:
|
||||
resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=}
|
||||
engines: {node: '>= 0.8.0'}
|
||||
dev: true
|
||||
|
||||
/prelude-ls/1.2.1:
|
||||
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
|
||||
@ -20566,6 +20498,7 @@ packages:
|
||||
|
||||
/psl/1.8.0:
|
||||
resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==}
|
||||
dev: true
|
||||
|
||||
/pstree.remy/1.1.8:
|
||||
resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==}
|
||||
@ -21847,13 +21780,6 @@ packages:
|
||||
resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
|
||||
dev: false
|
||||
|
||||
/saxes/5.0.1:
|
||||
resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==}
|
||||
engines: {node: '>=10'}
|
||||
dependencies:
|
||||
xmlchars: 2.2.0
|
||||
dev: false
|
||||
|
||||
/saxes/6.0.0:
|
||||
resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
|
||||
engines: {node: '>=v12.22.7'}
|
||||
@ -23002,6 +22928,7 @@ packages:
|
||||
|
||||
/symbol-tree/3.2.4:
|
||||
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
|
||||
dev: true
|
||||
|
||||
/table/6.8.0:
|
||||
resolution: {integrity: sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==}
|
||||
@ -23301,15 +23228,6 @@ packages:
|
||||
punycode: 2.1.1
|
||||
dev: true
|
||||
|
||||
/tough-cookie/4.0.0:
|
||||
resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==}
|
||||
engines: {node: '>=6'}
|
||||
dependencies:
|
||||
psl: 1.8.0
|
||||
punycode: 2.1.1
|
||||
universalify: 0.1.2
|
||||
dev: false
|
||||
|
||||
/tough-cookie/4.1.2:
|
||||
resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==}
|
||||
engines: {node: '>=6'}
|
||||
@ -23323,13 +23241,6 @@ packages:
|
||||
/tr46/0.0.3:
|
||||
resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=}
|
||||
|
||||
/tr46/2.1.0:
|
||||
resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
punycode: 2.1.1
|
||||
dev: false
|
||||
|
||||
/tr46/3.0.0:
|
||||
resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==}
|
||||
engines: {node: '>=12'}
|
||||
@ -23466,6 +23377,7 @@ packages:
|
||||
engines: {node: '>= 0.8.0'}
|
||||
dependencies:
|
||||
prelude-ls: 1.1.2
|
||||
dev: true
|
||||
|
||||
/type-check/0.4.0:
|
||||
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
|
||||
@ -23790,6 +23702,7 @@ packages:
|
||||
/universalify/0.1.2:
|
||||
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
|
||||
engines: {node: '>= 4.0.0'}
|
||||
dev: true
|
||||
|
||||
/universalify/0.2.0:
|
||||
resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
|
||||
@ -24198,19 +24111,6 @@ packages:
|
||||
/vscode-textmate/6.0.0:
|
||||
resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==}
|
||||
|
||||
/w3c-hr-time/1.0.2:
|
||||
resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==}
|
||||
dependencies:
|
||||
browser-process-hrtime: 1.0.0
|
||||
dev: false
|
||||
|
||||
/w3c-xmlserializer/2.0.0:
|
||||
resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==}
|
||||
engines: {node: '>=10'}
|
||||
dependencies:
|
||||
xml-name-validator: 3.0.0
|
||||
dev: false
|
||||
|
||||
/w3c-xmlserializer/3.0.0:
|
||||
resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==}
|
||||
engines: {node: '>=12'}
|
||||
@ -24290,16 +24190,6 @@ packages:
|
||||
/webidl-conversions/3.0.1:
|
||||
resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=}
|
||||
|
||||
/webidl-conversions/5.0.0:
|
||||
resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==}
|
||||
engines: {node: '>=8'}
|
||||
dev: false
|
||||
|
||||
/webidl-conversions/6.1.0:
|
||||
resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==}
|
||||
engines: {node: '>=10.4'}
|
||||
dev: false
|
||||
|
||||
/webidl-conversions/7.0.0:
|
||||
resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
|
||||
engines: {node: '>=12'}
|
||||
@ -24555,6 +24445,10 @@ packages:
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
webpack: ^4.37.0 || ^5.0.0
|
||||
webpack-cli: '*'
|
||||
peerDependenciesMeta:
|
||||
webpack-cli:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@types/bonjour': 3.5.10
|
||||
'@types/connect-history-api-fallback': 1.3.5
|
||||
@ -24822,12 +24716,6 @@ packages:
|
||||
resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==}
|
||||
engines: {node: '>=0.8.0'}
|
||||
|
||||
/whatwg-encoding/1.0.5:
|
||||
resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==}
|
||||
dependencies:
|
||||
iconv-lite: 0.4.24
|
||||
dev: false
|
||||
|
||||
/whatwg-encoding/2.0.0:
|
||||
resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==}
|
||||
engines: {node: '>=12'}
|
||||
@ -24839,10 +24727,6 @@ packages:
|
||||
resolution: {integrity: sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==}
|
||||
dev: true
|
||||
|
||||
/whatwg-mimetype/2.3.0:
|
||||
resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==}
|
||||
dev: false
|
||||
|
||||
/whatwg-mimetype/3.0.0:
|
||||
resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==}
|
||||
engines: {node: '>=12'}
|
||||
@ -24862,14 +24746,6 @@ packages:
|
||||
tr46: 0.0.3
|
||||
webidl-conversions: 3.0.1
|
||||
|
||||
/whatwg-url/9.1.0:
|
||||
resolution: {integrity: sha512-CQ0UcrPHyomtlOCot1TL77WyMIm/bCwrJ2D6AOKGwEczU9EpyoqAokfqrf/MioU9kHcMsmJZcg1egXix2KYEsA==}
|
||||
engines: {node: '>=12'}
|
||||
dependencies:
|
||||
tr46: 2.1.0
|
||||
webidl-conversions: 6.1.0
|
||||
dev: false
|
||||
|
||||
/which-boxed-primitive/1.0.2:
|
||||
resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
|
||||
dependencies:
|
||||
@ -25019,19 +24895,6 @@ packages:
|
||||
utf-8-validate:
|
||||
optional: true
|
||||
|
||||
/ws/8.2.1:
|
||||
resolution: {integrity: sha512-XkgWpJU3sHU7gX8f13NqTn6KQ85bd1WU7noBHTT8fSohx7OS1TPY8k+cyRPCzFkia7C4mM229yeHr1qK9sM4JQ==}
|
||||
engines: {node: '>=10.0.0'}
|
||||
peerDependencies:
|
||||
bufferutil: ^4.0.1
|
||||
utf-8-validate: ^5.0.2
|
||||
peerDependenciesMeta:
|
||||
bufferutil:
|
||||
optional: true
|
||||
utf-8-validate:
|
||||
optional: true
|
||||
dev: false
|
||||
|
||||
/ws/8.9.0:
|
||||
resolution: {integrity: sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==}
|
||||
engines: {node: '>=10.0.0'}
|
||||
@ -25055,10 +24918,6 @@ packages:
|
||||
sax: 1.2.4
|
||||
dev: false
|
||||
|
||||
/xml-name-validator/3.0.0:
|
||||
resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==}
|
||||
dev: false
|
||||
|
||||
/xml-name-validator/4.0.0:
|
||||
resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
|
||||
engines: {node: '>=12'}
|
||||
@ -25070,14 +24929,6 @@ packages:
|
||||
|
||||
/xmlchars/2.2.0:
|
||||
resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
|
||||
|
||||
/xss/1.0.14:
|
||||
resolution: {integrity: sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==}
|
||||
engines: {node: '>= 0.10.0'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
commander: 2.20.3
|
||||
cssfilter: 0.0.10
|
||||
dev: true
|
||||
|
||||
/xtend/4.0.2:
|
||||
|
Loading…
Reference in New Issue
Block a user