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

build: add fastify starting package (#2201)

* chore: add fastify library as example with command

* chore: update format

* chore: add fastify package and start
This commit is contained in:
Juan Picado 2021-04-25 13:17:50 +02:00 committed by GitHub
parent 64c6cbfe9d
commit cbdccf7177
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 333 additions and 7 deletions

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

@ -26,7 +26,7 @@
"verdaccio"
],
"engines": {
"node": ">=10",
"node": ">=12",
"npm": ">=6"
},
"description": "verdaccio CLI",
@ -46,6 +46,7 @@
"@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/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

@ -3,6 +3,7 @@ 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,6 +28,7 @@ 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) {

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,6 +13,9 @@
{
"path": "../core/cli-ui"
},
{
"path": "../core/server"
},
{
"path": "../node-api"
}

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

@ -0,0 +1,3 @@
const config = require('../../../jest/config');
module.exports = Object.assign({}, config, {});

View file

@ -0,0 +1,54 @@
{
"name": "@verdaccio/fastify-migration",
"version": "6.0.0-6-next.9",
"description": "Fastify server migration package",
"keywords": [
"private",
"package",
"repository",
"registry",
"enterprise",
"modules",
"proxy",
"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/streams"
},
"bugs": {
"url": "https://github.com/verdaccio/verdaccio/issues"
},
"publishConfig": {
"access": "public"
},
"dependencies": {
"fastify": "3.14.2"
},
"devDependencies": {
"@verdaccio/types": "workspace:11.0.0-6-next.4"
},
"scripts": {
"clean": "rimraf ./build",
"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",
"build": "pnpm run build:js && pnpm run build:types"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/verdaccio"
}
}

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

@ -0,0 +1,9 @@
{
"extends": "../../../tsconfig.base.json",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./build"
},
"include": ["src/**/*"],
"exclude": ["src/**/*.test.ts"]
}

View file

@ -0,0 +1,9 @@
{
"extends": "../../../tsconfig.reference.json",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./build"
},
"include": ["src/**/*"],
"exclude": ["src/**/*.test.ts"]
}

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

@ -292,6 +292,7 @@ importers:
specifiers:
'@verdaccio/cli-ui': workspace:6.0.0-alpha.3
'@verdaccio/config': workspace:6.0.0-6-next.5
'@verdaccio/fastify-migration': workspace:6.0.0-6-next.9
'@verdaccio/node-api': workspace:6.0.0-6-next.11
clipanion: 3.0.0-rc.11
commander: 6.2.0
@ -301,6 +302,7 @@ importers:
dependencies:
'@verdaccio/cli-ui': link:../core/cli-ui
'@verdaccio/config': link:../config
'@verdaccio/fastify-migration': link:../core/server
'@verdaccio/node-api': link:../node-api
clipanion: 3.0.0-rc.11
commander: 6.2.0
@ -423,6 +425,15 @@ importers:
devDependencies:
'@verdaccio/types': link:../types
packages/core/server:
specifiers:
'@verdaccio/types': workspace:11.0.0-6-next.4
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
@ -5261,6 +5272,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 +8442,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 +8778,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 +9076,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 +13709,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 +13745,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 +13778,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 +14020,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 +16830,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 +18487,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 +21256,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 +21267,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 +22338,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 +23517,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 +23557,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 +23659,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 +23780,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 +23825,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 +23866,6 @@ packages:
hasBin: true
dependencies:
lru-cache: 6.0.0
dev: true
/send/0.17.1:
resolution: {integrity: sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==}
@ -23784,6 +23921,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 +24294,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 +24687,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'}
@ -25421,6 +25565,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==}