mirror of
https://github.com/verdaccio/verdaccio.git
synced 2025-03-18 02:22:46 -05:00
feat: replace bunyan by pino.js (#2148)
* feat: replace bunyan by pino.js * chore: refactor logger * chore: fix e2e * chore: better catch
This commit is contained in:
parent
274d483de4
commit
ee97dcb46c
33 changed files with 533 additions and 995 deletions
4
.github/workflows/ci-e2e.yml
vendored
4
.github/workflows/ci-e2e.yml
vendored
|
@ -24,4 +24,6 @@ jobs:
|
|||
- name: Build
|
||||
run: yarn code:build
|
||||
- name: Test CLI
|
||||
run: yarn run test:e2e:cli
|
||||
run: yarn test:e2e:cli
|
||||
env:
|
||||
NODE_ENV: production
|
||||
|
|
5
.vscode/settings.json
vendored
5
.vscode/settings.json
vendored
|
@ -5,5 +5,6 @@
|
|||
"**/.nyc_output": true,
|
||||
"**/build": true,
|
||||
"**/coverage": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"typescript.tsdk": "node_modules/typescript/lib"
|
||||
}
|
||||
|
|
|
@ -73,9 +73,8 @@ middlewares:
|
|||
enabled: true
|
||||
|
||||
# log settings
|
||||
logs:
|
||||
- { type: stdout, format: pretty, level: http }
|
||||
#- {type: file, path: verdaccio.log, level: info}
|
||||
logs: { type: stdout, format: pretty, level: http }
|
||||
|
||||
#experiments:
|
||||
# # support for npm token command
|
||||
# token: false
|
||||
|
|
|
@ -79,9 +79,8 @@ middlewares:
|
|||
enabled: true
|
||||
|
||||
# log settings
|
||||
logs:
|
||||
- { type: stdout, format: pretty, level: http }
|
||||
#- {type: file, path: verdaccio.log, level: info}
|
||||
logs: { type: stdout, format: pretty, level: http }
|
||||
|
||||
#experiments:
|
||||
# # support for npm token command
|
||||
# token: false
|
||||
|
|
10
package.json
10
package.json
|
@ -26,7 +26,6 @@
|
|||
"JSONStream": "1.3.5",
|
||||
"async": "3.2.0",
|
||||
"body-parser": "1.19.0",
|
||||
"bunyan": "1.8.15",
|
||||
"commander": "7.2.0",
|
||||
"compression": "1.7.4",
|
||||
"cookies": "0.8.0",
|
||||
|
@ -35,6 +34,7 @@
|
|||
"debug": "^4.3.1",
|
||||
"envinfo": "7.7.4",
|
||||
"express": "4.17.1",
|
||||
"fast-safe-stringify": "^2.0.7",
|
||||
"handlebars": "4.7.7",
|
||||
"http-errors": "1.8.0",
|
||||
"js-yaml": "4.0.0",
|
||||
|
@ -47,7 +47,10 @@
|
|||
"minimatch": "3.0.4",
|
||||
"mkdirp": "1.0.4",
|
||||
"mv": "2.1.1",
|
||||
"pino": "6.11.2",
|
||||
"pkginfo": "0.4.1",
|
||||
"prettier-bytes": "^1.0.3",
|
||||
"pretty-ms": "^5.0.0",
|
||||
"request": "2.88.0",
|
||||
"semver": "7.3.4",
|
||||
"validator": "13.5.2",
|
||||
|
@ -88,6 +91,7 @@
|
|||
"@types/mime": "2.0.1",
|
||||
"@types/minimatch": "3.0.3",
|
||||
"@types/node": "12.12.21",
|
||||
"@types/pino": "6.3.6",
|
||||
"@types/request": "2.48.3",
|
||||
"@types/semver": "6.2.0",
|
||||
"@typescript-eslint/eslint-plugin": "4.13.0",
|
||||
|
@ -99,7 +103,6 @@
|
|||
"babel-jest": "26.6.3",
|
||||
"babel-loader": "^8.2.2",
|
||||
"babel-plugin-dynamic-import-node": "2.3.3",
|
||||
"babel-plugin-emotion": "10.0.33",
|
||||
"codecov": "3.8.1",
|
||||
"cross-env": "7.0.3",
|
||||
"detect-secrets": "1.0.6",
|
||||
|
@ -133,7 +136,6 @@
|
|||
"standard-version": "9.1.1",
|
||||
"supertest": "6.1.1",
|
||||
"typescript": "3.9.9",
|
||||
"verdaccio": "^4.5.1",
|
||||
"verdaccio-auth-memory": "10.0.0",
|
||||
"verdaccio-memory": "10.0.0"
|
||||
},
|
||||
|
@ -181,7 +183,7 @@
|
|||
"preferGlobal": true,
|
||||
"husky": {
|
||||
"hooks": {
|
||||
"pre-commit": "lint-staged",
|
||||
"pre-commit": "lint-staged",
|
||||
"commit-msg": "commitlint -e $GIT_PARAMS"
|
||||
}
|
||||
},
|
||||
|
|
|
@ -41,4 +41,4 @@ middlewares:
|
|||
enabled: true
|
||||
|
||||
logs:
|
||||
- { type: stdout, format: pretty, level: warn }
|
||||
- { type: stdout, format: json, level: warn }
|
||||
|
|
|
@ -31,7 +31,7 @@ import {
|
|||
import { aesDecrypt, verifyPayload } from './crypto-utils';
|
||||
|
||||
export function validatePassword(
|
||||
password: string,
|
||||
password: string, // pragma: allowlist secret
|
||||
minLength: number = DEFAULT_MIN_LIMIT_PASSWORD
|
||||
): boolean {
|
||||
return typeof password === 'string' && password.length >= minLength;
|
||||
|
@ -125,21 +125,21 @@ export function handleSpecialUnpublish(): any {
|
|||
};
|
||||
}
|
||||
|
||||
export function getDefaultPlugins(): IPluginAuth<Config> {
|
||||
export function getDefaultPlugins(logger: any): IPluginAuth<Config> {
|
||||
return {
|
||||
authenticate(user: string, password: string, cb: Callback): void {
|
||||
authenticate(_user: string, _password: string, cb: Callback): void { // pragma: allowlist secret
|
||||
cb(ErrorCode.getForbidden(API_ERROR.BAD_USERNAME_PASSWORD));
|
||||
},
|
||||
|
||||
add_user(user: string, password: string, cb: Callback): void {
|
||||
add_user(_user: string, _password: string, cb: Callback): void { // pragma: allowlist secret
|
||||
return cb(ErrorCode.getConflict(API_ERROR.BAD_USERNAME_PASSWORD));
|
||||
},
|
||||
|
||||
// FIXME: allow_action and allow_publish should be in the @verdaccio/types
|
||||
// @ts-ignore
|
||||
allow_access: allow_action('access'),
|
||||
allow_access: allow_action('access', logger),
|
||||
// @ts-ignore
|
||||
allow_publish: allow_action('publish'),
|
||||
allow_publish: allow_action('publish', logger),
|
||||
allow_unpublish: handleSpecialUnpublish()
|
||||
};
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ const LoggerApi = require('./logger');
|
|||
class Auth implements IAuth {
|
||||
public config: Config;
|
||||
public logger: Logger;
|
||||
public secret: string;
|
||||
public secret: string; // pragma: allowlist secret
|
||||
public plugins: IPluginAuth<Config>[];
|
||||
|
||||
public constructor(config: Config) {
|
||||
|
@ -70,13 +70,13 @@ class Auth implements IAuth {
|
|||
}
|
||||
|
||||
private _applyDefaultPlugins(): void {
|
||||
this.plugins.push(getDefaultPlugins());
|
||||
this.plugins.push(getDefaultPlugins(this.logger));
|
||||
}
|
||||
|
||||
public changePassword(
|
||||
username: string,
|
||||
password: string,
|
||||
newPassword: string,
|
||||
password: string, // pragma: allowlist secret
|
||||
newPassword: string, // pragma: allowlist secret
|
||||
cb: Callback
|
||||
): void {
|
||||
const validPlugins = _.filter(this.plugins, (plugin) => _.isFunction(plugin.changePassword));
|
||||
|
|
|
@ -1,168 +0,0 @@
|
|||
/* eslint-disable */
|
||||
|
||||
import { prettyTimestamped } from './logger/format/pretty-timestamped';
|
||||
import { pretty } from './logger/format/pretty';
|
||||
import { jsonFormat } from './logger/format/json';
|
||||
|
||||
const cluster = require('cluster');
|
||||
const Logger = require('bunyan');
|
||||
const Error = require('http-errors');
|
||||
const Stream = require('stream');
|
||||
const pkgJSON = require('../../package.json');
|
||||
const _ = require('lodash');
|
||||
const dayjs = require('dayjs');
|
||||
|
||||
/**
|
||||
* A RotatingFileStream that modifies the message first
|
||||
*/
|
||||
class VerdaccioRotatingFileStream extends Logger.RotatingFileStream {
|
||||
// We depend on mv so that this is there
|
||||
write(obj) {
|
||||
super.write(jsonFormat(obj, false));
|
||||
}
|
||||
|
||||
rotate(): void {
|
||||
super.rotate();
|
||||
this.emit('rotated');
|
||||
}
|
||||
}
|
||||
|
||||
let logger;
|
||||
|
||||
export interface LoggerTarget {
|
||||
type?: string;
|
||||
format?: string;
|
||||
level?: string;
|
||||
options?: any;
|
||||
path?: string;
|
||||
}
|
||||
|
||||
const DEFAULT_LOGGER_CONF = [{ type: 'stdout', format: 'pretty', level: 'http' }];
|
||||
|
||||
/**
|
||||
* Setup the Buyan logger
|
||||
* @param {*} logs list of log configuration
|
||||
*/
|
||||
function setup(logs, { logStart } = { logStart: true }) {
|
||||
const streams: any = [];
|
||||
if (logs == null) {
|
||||
logs = DEFAULT_LOGGER_CONF;
|
||||
}
|
||||
|
||||
logs.forEach(function (target: LoggerTarget) {
|
||||
let level = target.level || 35;
|
||||
if (level === 'http') {
|
||||
level = 35;
|
||||
}
|
||||
|
||||
// create a stream for each log configuration
|
||||
if (target.type === 'rotating-file') {
|
||||
if (target.format !== 'json') {
|
||||
throw new Error('Rotating file streams only work with JSON!');
|
||||
}
|
||||
if (cluster.isWorker) {
|
||||
// https://github.com/trentm/node-bunyan#stream-type-rotating-file
|
||||
throw new Error('Cluster mode is not supported for rotating-file!');
|
||||
}
|
||||
|
||||
const stream = new VerdaccioRotatingFileStream(
|
||||
// @ts-ignore
|
||||
_.merge(
|
||||
{},
|
||||
// Defaults can be found here: https://github.com/trentm/node-bunyan#stream-type-rotating-file
|
||||
target.options || {},
|
||||
{ path: target.path, level }
|
||||
)
|
||||
);
|
||||
|
||||
const rotateStream = {
|
||||
type: 'raw',
|
||||
level,
|
||||
stream
|
||||
};
|
||||
|
||||
if (logStart) {
|
||||
stream.on('rotated', () => logger.warn('Start of logfile'));
|
||||
}
|
||||
|
||||
streams.push(rotateStream);
|
||||
} else {
|
||||
const stream = new Stream();
|
||||
stream.writable = true;
|
||||
|
||||
let destination;
|
||||
let destinationIsTTY = false;
|
||||
if (target.type === 'file') {
|
||||
// destination stream
|
||||
destination = require('fs').createWriteStream(target.path, {
|
||||
flags: 'a',
|
||||
encoding: 'utf8'
|
||||
});
|
||||
destination.on('error', function (err) {
|
||||
stream.emit('error', err);
|
||||
});
|
||||
} else if (target.type === 'stdout' || target.type === 'stderr') {
|
||||
destination = target.type === 'stdout' ? process.stdout : process.stderr;
|
||||
destinationIsTTY = destination.isTTY;
|
||||
} else {
|
||||
throw Error('wrong target type for a log');
|
||||
}
|
||||
|
||||
if (target.format === 'pretty') {
|
||||
// making fake stream for pretty printing
|
||||
stream.write = (obj) => {
|
||||
destination.write(pretty(obj, destinationIsTTY));
|
||||
};
|
||||
} else if (target.format === 'pretty-timestamped') {
|
||||
// making fake stream for pretty printing
|
||||
stream.write = (obj) => {
|
||||
destination.write(prettyTimestamped(obj, destinationIsTTY));
|
||||
};
|
||||
} else {
|
||||
stream.write = (obj) => {
|
||||
destination.write(jsonFormat(obj, destinationIsTTY));
|
||||
};
|
||||
}
|
||||
|
||||
streams.push({
|
||||
// @ts-ignore
|
||||
type: 'raw',
|
||||
// @ts-ignore
|
||||
level,
|
||||
// @ts-ignore
|
||||
stream: stream
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// buyan default configuration
|
||||
logger = new Logger({
|
||||
name: pkgJSON.name,
|
||||
streams: streams,
|
||||
serializers: {
|
||||
err: Logger.stdSerializers.err,
|
||||
req: Logger.stdSerializers.req,
|
||||
res: Logger.stdSerializers.res
|
||||
}
|
||||
});
|
||||
|
||||
// In case of an empty log file, we ensure there is always something logged. This also helps see if the server
|
||||
// was restarted in any cases
|
||||
if (logStart) {
|
||||
logger.warn('Verdaccio started');
|
||||
}
|
||||
|
||||
process.on('SIGUSR2', function () {
|
||||
// https://github.com/trentm/node-bunyan#stream-type-rotating-file
|
||||
if (logger) {
|
||||
/**
|
||||
* Note on log rotation: Often you may be using external log rotation utilities like logrotate on Linux or logadm
|
||||
* on SmartOS/Illumos. In those cases, unless your are ensuring "copy and truncate" semantics
|
||||
* (via copytruncate with logrotate or -c with logadm) then the fd for your 'file' stream will change.
|
||||
*/
|
||||
logger.reopenFileStreams();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
export { setup, logger };
|
|
@ -1,9 +0,0 @@
|
|||
import { fillInMsgTemplate } from '../formatter';
|
||||
|
||||
const Logger = require('bunyan');
|
||||
|
||||
export function jsonFormat(obj, hasColors): string {
|
||||
const msg = fillInMsgTemplate(obj.msg, obj, hasColors);
|
||||
|
||||
return `${JSON.stringify({ ...obj, msg }, Logger.safeCycles())}\n`;
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
import { formatLoggingDate } from '../utils';
|
||||
import { printMessage } from '../formatter';
|
||||
|
||||
export function prettyTimestamped(obj, hasColors): string {
|
||||
return `[${formatLoggingDate(obj.time)}] ${printMessage(obj.level, obj.msg, obj, hasColors)}\n`;
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
import { printMessage } from '../formatter';
|
||||
|
||||
export function pretty(obj, hasColors): string {
|
||||
return `${printMessage(obj.level, obj.msg, obj, hasColors)}\n`;
|
||||
}
|
|
@ -1,67 +0,0 @@
|
|||
import { inspect } from 'util';
|
||||
import { red, green } from 'kleur';
|
||||
|
||||
import { white } from 'kleur';
|
||||
import { isObject, pad } from '../utils';
|
||||
import { calculateLevel, levels, subsystems } from './levels';
|
||||
|
||||
let LEVEL_VALUE_MAX = 0;
|
||||
for (const l in levels) {
|
||||
if (Object.prototype.hasOwnProperty.call(levels, l)) {
|
||||
LEVEL_VALUE_MAX = Math.max(LEVEL_VALUE_MAX, l.length);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply colors to a string based on level parameters.
|
||||
* @param {*} type
|
||||
* @param {*} msg
|
||||
* @param {*} templateObjects
|
||||
* @param {*} hasColors
|
||||
* @return {String}
|
||||
*/
|
||||
export function printMessage(type, msg, templateObjects, hasColors) {
|
||||
if (typeof type === 'number') {
|
||||
type = calculateLevel(type);
|
||||
}
|
||||
|
||||
const finalMessage = fillInMsgTemplate(msg, templateObjects, hasColors);
|
||||
|
||||
const sub = subsystems[hasColors ? 0 : 1][templateObjects.sub] || subsystems[+!hasColors].default;
|
||||
if (hasColors) {
|
||||
return ` ${levels[type](pad(type, LEVEL_VALUE_MAX))}${white(`${sub} ${finalMessage}`)}`;
|
||||
}
|
||||
return ` ${pad(type, LEVEL_VALUE_MAX)}${sub} ${finalMessage}`;
|
||||
}
|
||||
|
||||
export function fillInMsgTemplate(msg, obj: unknown, colors): string {
|
||||
return msg.replace(/@{(!?[$A-Za-z_][$0-9A-Za-z\._]*)}/g, (_, name): string => {
|
||||
let str = obj;
|
||||
let is_error;
|
||||
if (name[0] === '!') {
|
||||
name = name.substr(1);
|
||||
is_error = true;
|
||||
}
|
||||
|
||||
const _ref = name.split('.');
|
||||
for (let _i = 0; _i < _ref.length; _i++) {
|
||||
const id = _ref[_i];
|
||||
if (isObject(str)) {
|
||||
// @ts-ignore
|
||||
str = str[id];
|
||||
} else {
|
||||
str = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof str === 'string') {
|
||||
if (!colors || (str as string).includes('\n')) {
|
||||
return str;
|
||||
} else if (is_error) {
|
||||
return red(str);
|
||||
}
|
||||
return green(str);
|
||||
}
|
||||
return inspect(str, undefined, null, colors);
|
||||
});
|
||||
}
|
17
src/lib/logger/formatter/index.ts
Normal file
17
src/lib/logger/formatter/index.ts
Normal file
|
@ -0,0 +1,17 @@
|
|||
import { printMessage, PrettyOptionsExtended } from './prettifier';
|
||||
|
||||
export type PrettyFactory = (param) => string;
|
||||
|
||||
/*
|
||||
options eg:
|
||||
{ messageKey: 'msg', levelFirst: true, prettyStamp: false }
|
||||
*/
|
||||
|
||||
module.exports = function prettyFactory(options: PrettyOptionsExtended): PrettyFactory {
|
||||
// the break line must happens in the prettify component
|
||||
const breakLike = '\n';
|
||||
return (inputData): string => {
|
||||
// FIXME: review colors by default is true
|
||||
return printMessage(inputData, options, true) + breakLike;
|
||||
};
|
||||
};
|
100
src/lib/logger/formatter/prettifier.ts
Normal file
100
src/lib/logger/formatter/prettifier.ts
Normal file
|
@ -0,0 +1,100 @@
|
|||
import { inspect } from 'util';
|
||||
import { white, red, green } from 'kleur';
|
||||
import _ from 'lodash';
|
||||
import dayjs from 'dayjs';
|
||||
import {PrettyOptions} from "pino";
|
||||
|
||||
import {calculateLevel, LevelCode, levelsColors, subSystemLevels} from "../levels";
|
||||
import { padLeft, padRight } from '../utils';
|
||||
|
||||
export const CUSTOM_PAD_LENGTH = 1;
|
||||
export const FORMAT_DATE = 'YYYY-MM-DD HH:mm:ss';
|
||||
|
||||
export function isObject(obj: unknown): boolean {
|
||||
return _.isObject(obj) && _.isNull(obj) === false && _.isArray(obj) === false;
|
||||
}
|
||||
|
||||
export function formatLoggingDate(time: number, message): string {
|
||||
const timeFormatted = dayjs(time).format(FORMAT_DATE);
|
||||
|
||||
return `[${timeFormatted}]${message}`;
|
||||
}
|
||||
|
||||
export interface PrettyOptionsExtended extends PrettyOptions {
|
||||
prettyStamp: boolean;
|
||||
}
|
||||
let LEVEL_VALUE_MAX = 0;
|
||||
// eslint-disable-next-line guard-for-in
|
||||
for (const l in levelsColors) {
|
||||
LEVEL_VALUE_MAX = Math.max(LEVEL_VALUE_MAX, l.length);
|
||||
}
|
||||
|
||||
const ERROR_FLAG = '!';
|
||||
|
||||
export interface ObjectTemplate {
|
||||
level: LevelCode;
|
||||
msg: string;
|
||||
sub?: string;
|
||||
[key: string]: string | number | object | null | void;
|
||||
}
|
||||
|
||||
export function fillInMsgTemplate(msg, templateOptions: ObjectTemplate, colors): string {
|
||||
const templateRegex = /@{(!?[$A-Za-z_][$0-9A-Za-z\._]*)}/g;
|
||||
|
||||
return msg.replace(templateRegex, (_, name): string => {
|
||||
|
||||
let str = templateOptions;
|
||||
let isError;
|
||||
if (name[0] === ERROR_FLAG) {
|
||||
name = name.substr(1);
|
||||
isError = true;
|
||||
}
|
||||
|
||||
// object can be @{foo.bar.}
|
||||
const listAccessors = name.split('.');
|
||||
for (let property = 0; property < listAccessors.length; property++) {
|
||||
const id = listAccessors[property];
|
||||
if (isObject(str)) {
|
||||
str = (str as object)[id];
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof str === 'string') {
|
||||
if (colors === false || (str as string).includes('\n')) {
|
||||
return str;
|
||||
} else if (isError) {
|
||||
return red(str);
|
||||
}
|
||||
return green(str);
|
||||
}
|
||||
|
||||
// object, showHidden, depth, colors
|
||||
return inspect(str, undefined, null, colors);
|
||||
});
|
||||
}
|
||||
|
||||
function getMessage(debugLevel, msg, sub, templateObjects, hasColors) {
|
||||
const finalMessage = fillInMsgTemplate(msg, templateObjects, hasColors);
|
||||
|
||||
const subSystemType = subSystemLevels.color[sub ?? 'default'];
|
||||
if (hasColors) {
|
||||
const logString = `${levelsColors[debugLevel](padRight(debugLevel, LEVEL_VALUE_MAX))}${white(`${subSystemType} ${finalMessage}`)}`;
|
||||
|
||||
return padLeft(logString);
|
||||
}
|
||||
const logString = `${padRight(debugLevel, LEVEL_VALUE_MAX)}${subSystemType} ${finalMessage}`;
|
||||
|
||||
return padRight(logString);
|
||||
}
|
||||
|
||||
export function printMessage(
|
||||
templateObjects: ObjectTemplate,
|
||||
options: PrettyOptionsExtended,
|
||||
hasColors = true): string {
|
||||
const { prettyStamp } = options;
|
||||
const { level, msg, sub } = templateObjects;
|
||||
const debugLevel = calculateLevel(level);
|
||||
const logMessage = getMessage(debugLevel, msg, sub, templateObjects, hasColors);
|
||||
|
||||
return prettyStamp ? formatLoggingDate(templateObjects.time as number, logMessage) : logMessage;
|
||||
}
|
1
src/lib/logger/index.ts
Normal file
1
src/lib/logger/index.ts
Normal file
|
@ -0,0 +1 @@
|
|||
export { setup, createLogger, logger } from './logger';
|
|
@ -1,51 +1,56 @@
|
|||
import { yellow, green, black, blue, red, magenta, cyan, white } from 'kleur';
|
||||
import { yellow, green, red, magenta, black, blue, cyan, white } from 'kleur';
|
||||
|
||||
// level to color
|
||||
export const levels = {
|
||||
fatal: red,
|
||||
error: red,
|
||||
warn: yellow,
|
||||
http: magenta,
|
||||
info: cyan,
|
||||
debug: green,
|
||||
trace: white
|
||||
};
|
||||
export type LogLevel = 'trace' | 'debug' | 'info' | 'http' | 'warn' | 'error' | 'fatal';
|
||||
|
||||
/**
|
||||
* Match the level based on buyan severity scale
|
||||
* @param {*} x severity level
|
||||
* @return {String} security level
|
||||
*/
|
||||
export function calculateLevel(x) {
|
||||
switch (true) {
|
||||
case x < 15:
|
||||
return 'trace';
|
||||
case x < 25:
|
||||
return 'debug';
|
||||
case x < 35:
|
||||
return 'info';
|
||||
case x == 35:
|
||||
return 'http';
|
||||
case x < 45:
|
||||
return 'warn';
|
||||
case x < 55:
|
||||
return 'error';
|
||||
default:
|
||||
return 'fatal';
|
||||
}
|
||||
export type LevelCode = number;
|
||||
|
||||
export function calculateLevel(levelCode: LevelCode): LogLevel {
|
||||
switch (true) {
|
||||
case levelCode < 15:
|
||||
return 'trace';
|
||||
case levelCode < 25:
|
||||
return 'debug';
|
||||
case levelCode < 35:
|
||||
return 'info';
|
||||
case levelCode == 35:
|
||||
return 'http';
|
||||
case levelCode < 45:
|
||||
return 'warn';
|
||||
case levelCode < 55:
|
||||
return 'error';
|
||||
default:
|
||||
return 'fatal';
|
||||
}
|
||||
}
|
||||
|
||||
export const subsystems = [
|
||||
{
|
||||
in: green('<--'),
|
||||
out: yellow('-->'),
|
||||
fs: black('-=-'),
|
||||
default: blue('---')
|
||||
export const levelsColors = {
|
||||
fatal: red,
|
||||
error: red,
|
||||
warn: yellow,
|
||||
http: magenta,
|
||||
info: cyan,
|
||||
debug: green,
|
||||
trace: white,
|
||||
};
|
||||
|
||||
enum ARROWS {
|
||||
LEFT = '<--',
|
||||
RIGHT = '-->',
|
||||
EQUAL = '-=-',
|
||||
NEUTRAL = '---'
|
||||
}
|
||||
|
||||
export const subSystemLevels = {
|
||||
color: {
|
||||
in: green(ARROWS.LEFT),
|
||||
out: yellow(ARROWS.RIGHT),
|
||||
fs: black(ARROWS.EQUAL),
|
||||
default: blue(ARROWS.NEUTRAL),
|
||||
},
|
||||
{
|
||||
in: '<--',
|
||||
out: '-->',
|
||||
fs: '-=-',
|
||||
default: '---'
|
||||
}
|
||||
];
|
||||
white: {
|
||||
in: ARROWS.LEFT,
|
||||
out: ARROWS.RIGHT,
|
||||
fs: ARROWS.EQUAL,
|
||||
default: ARROWS.NEUTRAL,
|
||||
},
|
||||
};
|
||||
|
|
146
src/lib/logger/logger.ts
Normal file
146
src/lib/logger/logger.ts
Normal file
|
@ -0,0 +1,146 @@
|
|||
import pino from 'pino';
|
||||
import _ from 'lodash';
|
||||
import buildDebug from 'debug';
|
||||
import { yellow } from 'kleur';
|
||||
import { padLeft } from './utils';
|
||||
|
||||
function isProd() {
|
||||
return process.env.NODE_ENV === 'production';
|
||||
}
|
||||
|
||||
export let logger;
|
||||
const debug = buildDebug('verdaccio:logger');
|
||||
const DEFAULT_LOG_FORMAT = isProd() ? 'json' : 'pretty';
|
||||
|
||||
export type LogPlugin = {
|
||||
dest: string;
|
||||
options?: any[];
|
||||
};
|
||||
|
||||
export type LogType = 'file' | 'stdout';
|
||||
export type LogFormat = 'json' | 'pretty-timestamped' | 'pretty';
|
||||
|
||||
export function createLogger(
|
||||
options = {},
|
||||
destination = pino.destination(1),
|
||||
format: LogFormat = DEFAULT_LOG_FORMAT,
|
||||
prettyPrintOptions = {
|
||||
// we hide warning since the prettifier should not be used in production
|
||||
// https://getpino.io/#/docs/pretty?id=prettifier-api
|
||||
suppressFlushSyncWarning: true,
|
||||
}
|
||||
) {
|
||||
if (_.isNil(format)) {
|
||||
format = DEFAULT_LOG_FORMAT;
|
||||
}
|
||||
|
||||
let pinoConfig = {
|
||||
...options,
|
||||
customLevels: {
|
||||
http: 35,
|
||||
},
|
||||
serializers: {
|
||||
err: pino.stdSerializers.err,
|
||||
req: pino.stdSerializers.req,
|
||||
res: pino.stdSerializers.res,
|
||||
},
|
||||
};
|
||||
|
||||
debug('has prettifier? %o', !isProd());
|
||||
// pretty logs are not allowed in production for performance reasons
|
||||
if ((format === DEFAULT_LOG_FORMAT || format !== 'json') && isProd() === false) {
|
||||
pinoConfig = Object.assign({}, pinoConfig, {
|
||||
// more info
|
||||
// https://github.com/pinojs/pino-pretty/issues/37
|
||||
prettyPrint: {
|
||||
levelFirst: true,
|
||||
prettyStamp: format === 'pretty-timestamped',
|
||||
...prettyPrintOptions,
|
||||
},
|
||||
prettifier: require('./formatter'),
|
||||
});
|
||||
}
|
||||
|
||||
return pino(pinoConfig, destination);
|
||||
}
|
||||
|
||||
export function getLogger() {
|
||||
if (_.isNil(logger)) {
|
||||
console.warn('logger is not defined');
|
||||
return;
|
||||
}
|
||||
|
||||
return logger;
|
||||
}
|
||||
|
||||
const DEFAULT_LOGGER_CONF: LoggerConfigItem = {
|
||||
type: 'stdout',
|
||||
format: 'pretty',
|
||||
level: 'http',
|
||||
};
|
||||
|
||||
export type LoggerConfigItem = {
|
||||
type?: LogType;
|
||||
plugin?: LogPlugin;
|
||||
format?: LogFormat;
|
||||
path?: string;
|
||||
level?: string;
|
||||
};
|
||||
|
||||
export type LoggerConfig = LoggerConfigItem[];
|
||||
|
||||
export function setup(options: LoggerConfig | LoggerConfigItem = [DEFAULT_LOGGER_CONF]) {
|
||||
debug('setup logger');
|
||||
const isLegacyConf = Array.isArray(options);
|
||||
if (isLegacyConf) {
|
||||
const deprecateMessage = 'deprecate: multiple logger configuration is deprecated, please check the migration guide.';
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(yellow(padLeft(deprecateMessage)));
|
||||
}
|
||||
|
||||
// verdaccio 5 does not allow multiple logger configuration
|
||||
// backward compatible, pick only the first option
|
||||
// next major will thrown an error
|
||||
let loggerConfig = isLegacyConf ? options[0] : options;
|
||||
if (!loggerConfig?.level) {
|
||||
loggerConfig = Object.assign({}, loggerConfig, {
|
||||
level: 'http',
|
||||
});
|
||||
}
|
||||
|
||||
const pinoConfig = { level: loggerConfig.level };
|
||||
if (loggerConfig.type === 'file') {
|
||||
debug('logging file enabled');
|
||||
logger = createLogger(pinoConfig, pino.destination(loggerConfig.path), loggerConfig.format);
|
||||
} else if (loggerConfig.type === 'rotating-file') {
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(yellow(padLeft('rotating-file type is not longer supported, consider use [logrotate] instead')));
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(yellow(padLeft('fallback to stdout configuration triggered')));
|
||||
debug('logging stdout enabled');
|
||||
logger = createLogger(pinoConfig, pino.destination(1), loggerConfig.format);
|
||||
} else {
|
||||
debug('logging stdout enabled');
|
||||
logger = createLogger(pinoConfig, pino.destination(1), loggerConfig.format);
|
||||
}
|
||||
|
||||
if (isProd()) {
|
||||
// why only on prod? https://github.com/pinojs/pino/issues/920#issuecomment-710807667
|
||||
const finalHandler = pino.final(logger, (err, finalLogger, event) => {
|
||||
finalLogger.info(`${event} caught`);
|
||||
if (err) {
|
||||
finalLogger.error(err, 'error caused exit');
|
||||
}
|
||||
process.exit(err ? 1 : 0);
|
||||
});
|
||||
|
||||
process.on('uncaughtException', (err) => finalHandler(err, 'uncaughtException'));
|
||||
process.on('unhandledRejection', (err) => finalHandler(err as Error, 'unhandledRejection'));
|
||||
process.on('beforeExit', () => finalHandler(null, 'beforeExit'));
|
||||
process.on('exit', () => finalHandler(null, 'exit'));
|
||||
process.on('uncaughtException', (err) => finalHandler(err, 'uncaughtException'));
|
||||
process.on('SIGINT', () => finalHandler(null, 'SIGINT'));
|
||||
process.on('SIGQUIT', () => finalHandler(null, 'SIGQUIT'));
|
||||
process.on('SIGTERM', () => finalHandler(null, 'SIGTERM'));
|
||||
}
|
||||
}
|
|
@ -1,7 +1,16 @@
|
|||
import dayjs from 'dayjs';
|
||||
|
||||
export const FORMAT_DATE = 'YYYY-MM-DD HH:mm:ss';
|
||||
export const CUSTOM_PAD_LENGTH = 1;
|
||||
|
||||
export function formatLoggingDate(time: string): string {
|
||||
return dayjs(time).format(FORMAT_DATE);
|
||||
}
|
||||
|
||||
export function padLeft(message: string) {
|
||||
return message.padStart(message.length + CUSTOM_PAD_LENGTH, ' ');
|
||||
}
|
||||
|
||||
export function padRight(message: string, max = message.length + CUSTOM_PAD_LENGTH ) {
|
||||
return message.padEnd(max, ' ');
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@ class Storage implements IStorageHandler {
|
|||
public constructor(config: Config) {
|
||||
this.config = config;
|
||||
this.uplinks = setupUpLinks(config);
|
||||
this.logger = logger.child();
|
||||
this.logger = logger.child({module: 'storage'});
|
||||
this.filters = [];
|
||||
// @ts-ignore
|
||||
this.localStorage = null;
|
||||
|
|
|
@ -1,24 +1,19 @@
|
|||
storage: ./storage
|
||||
|
||||
#store:
|
||||
# memory:
|
||||
# limit: 1000
|
||||
|
||||
auth:
|
||||
htpasswd:
|
||||
file: ./htpasswd
|
||||
max_users: -1
|
||||
|
||||
web:
|
||||
enable: true
|
||||
enable: false
|
||||
title: verdaccio-e2e-pkg
|
||||
|
||||
uplinks:
|
||||
npmjs:
|
||||
url: https://registry.verdaccio.org/
|
||||
|
||||
logs:
|
||||
- { type: stdout, format: pretty, level: warn }
|
||||
logs: { type: stdout, format: json, level: trace }
|
||||
|
||||
packages:
|
||||
'@*/*':
|
||||
|
@ -34,4 +29,5 @@ packages:
|
|||
publish: $anonymous
|
||||
unpublish: $authenticated
|
||||
proxy: npmjs
|
||||
|
||||
_debug: true
|
||||
|
|
|
@ -17,8 +17,7 @@ uplinks:
|
|||
local:
|
||||
url: http://localhost:4873
|
||||
|
||||
logs:
|
||||
- { type: stdout, format: pretty, level: warn }
|
||||
logs: { type: stdout, format: json, level: warn }
|
||||
|
||||
packages:
|
||||
'@*/*':
|
||||
|
|
|
@ -1,30 +1,44 @@
|
|||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import os from 'os';
|
||||
import { yellow } from 'kleur';
|
||||
import { green } from 'kleur';
|
||||
import { spawn } from 'child_process';
|
||||
import { npm } from '../utils/process';
|
||||
import * as __global from '../utils/global.js';
|
||||
|
||||
module.exports = async () => {
|
||||
const tempRoot = fs.mkdtempSync(path.join(fs.realpathSync(os.tmpdir()), 'verdaccio-cli-e2e-'));
|
||||
const tempConfigFile = path.join(tempRoot, 'verdaccio.yaml');
|
||||
__global.addItem('dir-root', tempRoot);
|
||||
console.log(yellow(`Add temp root folder: ${tempRoot}`));
|
||||
fs.copyFileSync(
|
||||
path.join(__dirname, '../config/_bootstrap_verdaccio.yaml'),
|
||||
path.join(tempRoot, 'verdaccio.yaml')
|
||||
);
|
||||
console.log(green(`Global temp root folder: ${tempRoot}`));
|
||||
fs.copyFileSync(path.join(__dirname, '../config/_bootstrap_verdaccio.yaml'), tempConfigFile);
|
||||
console.log(green(`global temp root conf: ${tempConfigFile}`));
|
||||
// @ts-ignore
|
||||
global.__namespace = __global;
|
||||
console.log(`current directory: ${process.cwd()}`);
|
||||
const rootVerdaccio = path.resolve('./bin/verdaccio');
|
||||
console.log(green(`verdaccio root path: ${rootVerdaccio}`));
|
||||
// @ts-ignore
|
||||
global.registryProcess = spawn(
|
||||
'node',
|
||||
[path.resolve('./bin/verdaccio'), '-c', './verdaccio.yaml'],
|
||||
// @ts-ignore
|
||||
{ cwd: tempRoot, silence: false }
|
||||
);
|
||||
global.registryProcess = spawn('node', [path.resolve('./bin/verdaccio'), '-c', './verdaccio.yaml'], {
|
||||
cwd: tempRoot,
|
||||
// stdio: 'pipe'
|
||||
});
|
||||
|
||||
// @ts-ignore
|
||||
global.registryProcess.stdout.on('data', (data) => {
|
||||
console.log(`stdout: ${data}`);
|
||||
});
|
||||
|
||||
// @ts-ignore
|
||||
global.registryProcess.stderr.on('data', (data) => {
|
||||
console.log(`stderr: ${data}`);
|
||||
});
|
||||
|
||||
// @ts-ignore
|
||||
global.registryProcess.on('close', (code) => {
|
||||
console.log(`child process exited with code ${code}`);
|
||||
});
|
||||
|
||||
// publish current build version on local registry
|
||||
await npm('publish', '--registry', 'http://localhost:4873');
|
||||
await npm('publish', '--registry', 'http://localhost:4873', '--verbose');
|
||||
};
|
||||
|
|
|
@ -8,6 +8,7 @@ export function installVerdaccio(verdaccioInstall) {
|
|||
'verdaccio',
|
||||
'--registry',
|
||||
'http://localhost:4873',
|
||||
'--no-package-lock'
|
||||
'--no-package-lock',
|
||||
'--verbose'
|
||||
);
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ describe('npm install', () => {
|
|||
|
||||
registryProcess = await spawnRegistry(pathVerdaccioModule, ['-c', configPath, '-l', port], {
|
||||
cwd: verdaccioInstall,
|
||||
silent: true
|
||||
silent: false
|
||||
});
|
||||
|
||||
const body = await callRegistry(`http://localhost:${port}/verdaccio`);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// we need this for notifications
|
||||
import { setup } from '../../src/lib/logger';
|
||||
|
||||
setup([]);
|
||||
setup({});
|
||||
|
||||
import { IServerBridge } from '../types';
|
||||
|
||||
|
|
|
@ -29,8 +29,7 @@ uplinks:
|
|||
baduplink:
|
||||
url: http://localhost:55666/
|
||||
|
||||
logs:
|
||||
- { type: stdout, format: pretty, level: trace }
|
||||
logs: { type: stdout, format: pretty, level: trace }
|
||||
|
||||
packages:
|
||||
'@test/*':
|
||||
|
|
|
@ -30,8 +30,7 @@ auth:
|
|||
name: authtest
|
||||
password: blahblah-password
|
||||
|
||||
logs:
|
||||
- { type: stdout, format: pretty, level: trace }
|
||||
logs: { type: stdout, format: pretty, level: trace }
|
||||
|
||||
packages:
|
||||
'@test/*':
|
||||
|
|
|
@ -18,8 +18,7 @@ auth:
|
|||
name: test
|
||||
password: test
|
||||
|
||||
logs:
|
||||
- { type: stdout, format: pretty, level: trace }
|
||||
logs: { type: stdout, format: pretty, level: trace }
|
||||
|
||||
packages:
|
||||
'pkg-gh131':
|
||||
|
|
|
@ -22,7 +22,7 @@ class ExampleAuthPlugin implements IPluginAuth<{}> {
|
|||
this.logger = options.logger;
|
||||
}
|
||||
|
||||
adduser(user: string, password: string, cb: Callback): void {
|
||||
adduser(user: string, password: string, cb: Callback): void { // pragma: allowlist secret
|
||||
cb();
|
||||
}
|
||||
|
||||
|
@ -30,7 +30,7 @@ class ExampleAuthPlugin implements IPluginAuth<{}> {
|
|||
cb();
|
||||
}
|
||||
|
||||
authenticate(user: string, password: string, cb: Callback): void {
|
||||
authenticate(user: string, password: string, cb: Callback): void { // pragma: allowlist secret
|
||||
cb();
|
||||
}
|
||||
|
||||
|
@ -84,7 +84,7 @@ const config1: AppConfig = new Config({
|
|||
|
||||
const options: PluginOptions<{}> = {
|
||||
config: config1,
|
||||
logger: logger.child()
|
||||
logger: logger.child({sub: 'out'})
|
||||
};
|
||||
|
||||
const auth = new ExampleAuthPlugin(config1, options);
|
||||
|
|
|
@ -52,10 +52,9 @@ const checkDefaultConfPackages = (config) => {
|
|||
expect(config.middlewares.audit).toBeDefined();
|
||||
expect(config.middlewares.audit.enabled).toBeTruthy();
|
||||
// logs
|
||||
expect(config.logs).toBeDefined();
|
||||
expect(config.logs[0].type).toEqual('stdout');
|
||||
expect(config.logs[0].format).toEqual('pretty');
|
||||
expect(config.logs[0].level).toEqual('http');
|
||||
expect(config.logs.type).toEqual('stdout');
|
||||
expect(config.logs.format).toEqual('pretty');
|
||||
expect(config.logs.level).toEqual('http');
|
||||
// must not be enabled by default
|
||||
expect(config.notify).toBeUndefined();
|
||||
expect(config.store).toBeUndefined();
|
||||
|
|
|
@ -1,127 +0,0 @@
|
|||
import { fillInMsgTemplate } from '../../../../src/lib/logger/formatter';
|
||||
import { LOG_VERDACCIO_ERROR, LOG_VERDACCIO_BYTES } from '../../../../src/api/middleware';
|
||||
import { HTTP_STATUS } from '@verdaccio/commons-api';
|
||||
|
||||
// the following mocks avoid use colors, thus the strings can be matched
|
||||
|
||||
jest.mock('kleur', () => {
|
||||
// we emulate colors with this pattern color[msg]
|
||||
return {
|
||||
green: (r) => `g[${r}]`,
|
||||
yellow: (r) => `y[${r}]`,
|
||||
black: (r) => `b[${r}]`,
|
||||
blue: (r) => `bu[${r}]`,
|
||||
red: (r) => `r[${r}]`,
|
||||
cyan: (r) => `c[${r}]`,
|
||||
magenta: (r) => `m[${r}]`,
|
||||
white: (r) => `w[${r}]`
|
||||
};
|
||||
});
|
||||
|
||||
jest.mock('util', () => {
|
||||
// we need to override only one method, but still we need others
|
||||
const originalModule = jest.requireActual('util');
|
||||
return {
|
||||
...originalModule,
|
||||
inspect: (r) => r
|
||||
};
|
||||
});
|
||||
|
||||
describe('Logger Parser', () => {
|
||||
describe('basic messages', () => {
|
||||
test('number object property', () => {
|
||||
expect(fillInMsgTemplate('foo:@{foo}', { foo: 1 }, false)).toEqual('foo:1');
|
||||
});
|
||||
|
||||
test('string object property', () => {
|
||||
expect(fillInMsgTemplate('foo:@{foo}', { foo: 'bar' }, false)).toEqual('foo:bar');
|
||||
});
|
||||
|
||||
test('empty message no object property', () => {
|
||||
expect(fillInMsgTemplate('foo', undefined, false)).toEqual('foo');
|
||||
});
|
||||
|
||||
test('string no object property', () => {
|
||||
expect(fillInMsgTemplate('foo', null, false)).toEqual('foo');
|
||||
});
|
||||
|
||||
test('string no object property with break line', () => {
|
||||
expect(fillInMsgTemplate('foo \n bar', null, false)).toEqual('foo \n bar');
|
||||
});
|
||||
|
||||
test('string no object property with colors', () => {
|
||||
expect(fillInMsgTemplate('foo', null, true)).toEqual('foo');
|
||||
});
|
||||
|
||||
test('string object property with colors', () => {
|
||||
expect(fillInMsgTemplate('foo:@{foo}', { foo: 'bar' }, true)).toEqual(`foo:${'g[bar]'}`);
|
||||
});
|
||||
});
|
||||
|
||||
describe('middleware log messages', () => {
|
||||
describe('test errors log', () => {
|
||||
const middlewareObject = {
|
||||
name: 'verdaccio',
|
||||
request: {
|
||||
method: 'POST',
|
||||
url: '/-/npm/v1/user'
|
||||
},
|
||||
user: 'userTest2001',
|
||||
remoteIP: '::ffff:127.0.0.1',
|
||||
status: HTTP_STATUS.UNAUTHORIZED,
|
||||
error: 'some error',
|
||||
msg:
|
||||
"@{status}, user: @{user}(@{remoteIP}), req: '@{request.method} @{request.url}', error: @{!error}"
|
||||
};
|
||||
|
||||
test('should display error log', () => {
|
||||
const expectedErrorMessage = `401, user: userTest2001(::ffff:127.0.0.1), req: 'POST /-/npm/v1/user', error: some error`;
|
||||
expect(fillInMsgTemplate(LOG_VERDACCIO_ERROR, middlewareObject, false)).toEqual(
|
||||
expectedErrorMessage
|
||||
);
|
||||
});
|
||||
|
||||
test('should display error log with colors', () => {
|
||||
const expectedErrorMessage = `401, user: g[userTest2001](g[::ffff:127.0.0.1]), req: 'g[POST] g[/-/npm/v1/user]', error: r[some error]`;
|
||||
expect(fillInMsgTemplate(LOG_VERDACCIO_ERROR, middlewareObject, true)).toEqual(
|
||||
expectedErrorMessage
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('test bytes log', () => {
|
||||
const middlewareObject = {
|
||||
name: 'verdaccio',
|
||||
hostname: 'macbook-touch',
|
||||
pid: 85621,
|
||||
sub: 'in',
|
||||
level: 35,
|
||||
request: {
|
||||
method: 'PUT',
|
||||
url: '/-/user/org.couchdb.user:userTest2002'
|
||||
},
|
||||
user: 'userTest2002',
|
||||
remoteIP: '::ffff:127.0.0.1',
|
||||
status: 201,
|
||||
error: undefined,
|
||||
bytes: { in: 50, out: 405 },
|
||||
msg:
|
||||
"@{status}, user: @{user}(@{remoteIP}), req: '@{request.method} @{request.url}', bytes: @{bytes.in}/@{bytes.out}",
|
||||
time: '2019-07-20T11:31:49.939Z',
|
||||
v: 0
|
||||
};
|
||||
|
||||
test('should display log with bytes', () => {
|
||||
expect(fillInMsgTemplate(LOG_VERDACCIO_BYTES, middlewareObject, false)).toEqual(
|
||||
`201, user: userTest2002(::ffff:127.0.0.1), req: 'PUT /-/user/org.couchdb.user:userTest2002', bytes: 50/405`
|
||||
);
|
||||
});
|
||||
|
||||
test('should display log with bytes with colors', () => {
|
||||
expect(fillInMsgTemplate(LOG_VERDACCIO_BYTES, middlewareObject, true)).toEqual(
|
||||
`201, user: g[userTest2002](g[::ffff:127.0.0.1]), req: 'g[PUT] g[/-/user/org.couchdb.user:userTest2002]', bytes: 50/405`
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
641
yarn.lock
641
yarn.lock
|
@ -358,7 +358,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.10.4":
|
||||
"@babel/helper-module-imports@npm:^7.10.4":
|
||||
version: 7.10.4
|
||||
resolution: "@babel/helper-module-imports@npm:7.10.4"
|
||||
dependencies:
|
||||
|
@ -1703,7 +1703,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.4.2, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7":
|
||||
"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7":
|
||||
version: 7.10.4
|
||||
resolution: "@babel/runtime@npm:7.10.4"
|
||||
dependencies:
|
||||
|
@ -2068,47 +2068,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@emotion/hash@npm:0.8.0":
|
||||
version: 0.8.0
|
||||
resolution: "@emotion/hash@npm:0.8.0"
|
||||
checksum: 8fd781e18428745d6c7121bebf3965cad12c61f3bd5fb773e46f16f1d7b7ae1346770df438fcfe8bc73ecf6762a54baef7cf259a694575d4f06cabb79ebcf7c0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@emotion/memoize@npm:0.7.4":
|
||||
version: 0.7.4
|
||||
resolution: "@emotion/memoize@npm:0.7.4"
|
||||
checksum: 874123a94c89963dda3438d1ea7f7c17fa670d965610eefaa49e0dbf47cccee6f6108e04175867d7e485d2c04096a98bba5a4bef2606b3bf2070637327ebe3ff
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@emotion/serialize@npm:^0.11.16":
|
||||
version: 0.11.16
|
||||
resolution: "@emotion/serialize@npm:0.11.16"
|
||||
dependencies:
|
||||
"@emotion/hash": 0.8.0
|
||||
"@emotion/memoize": 0.7.4
|
||||
"@emotion/unitless": 0.7.5
|
||||
"@emotion/utils": 0.11.3
|
||||
csstype: ^2.5.7
|
||||
checksum: b7d9a94a039ea5e86b0daccc29f0c40fbbda7004b1fde9ee14be38463c3aaabdd027b38c5c0e580f66883fb6e3b49160292843b0e14efe49e662a520c38f4c15
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@emotion/unitless@npm:0.7.5":
|
||||
version: 0.7.5
|
||||
resolution: "@emotion/unitless@npm:0.7.5"
|
||||
checksum: 0be366ef09860037ef08aed0450cb5510f4be25886005e2f120f8e8b7385de6b41ac47df5b9bd55781e5153853e9ed5f49aa517dcbad34cc23bd8afb0201932a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@emotion/utils@npm:0.11.3":
|
||||
version: 0.11.3
|
||||
resolution: "@emotion/utils@npm:0.11.3"
|
||||
checksum: b5c3a22204a878eafa8deb362493b48c3f3a7f7ec3e5a18634d14aa8d5c9d8274db0a9d0206b3c124fa170640880fbcda987971699a1cf69355f2cec994da487
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@eslint/eslintrc@npm:^0.3.0":
|
||||
version: 0.3.0
|
||||
resolution: "@eslint/eslintrc@npm:0.3.0"
|
||||
|
@ -2863,6 +2822,26 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/pino-std-serializers@npm:*":
|
||||
version: 2.4.1
|
||||
resolution: "@types/pino-std-serializers@npm:2.4.1"
|
||||
dependencies:
|
||||
"@types/node": "*"
|
||||
checksum: af90e75d5420b40d327e27294ab5730c08bfacaf52e3cc700bd6dfd006fa2a982340909f2c9b0f808b44d98bd15396780eed1626040189a41910f2fc23fe3461
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/pino@npm:6.3.6":
|
||||
version: 6.3.6
|
||||
resolution: "@types/pino@npm:6.3.6"
|
||||
dependencies:
|
||||
"@types/node": "*"
|
||||
"@types/pino-std-serializers": "*"
|
||||
"@types/sonic-boom": "*"
|
||||
checksum: ad25dc65e2364189f8f5ea8e2a8872a446b675e906206d8b30338acfb41be0df8f4d7866b970086716c5452c37ace7e4d8a44650388b95b93e3a1fe7d56ae0d6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/prettier@npm:^1.19.0":
|
||||
version: 1.19.1
|
||||
resolution: "@types/prettier@npm:1.19.1"
|
||||
|
@ -2913,6 +2892,15 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/sonic-boom@npm:*":
|
||||
version: 0.7.0
|
||||
resolution: "@types/sonic-boom@npm:0.7.0"
|
||||
dependencies:
|
||||
"@types/node": "*"
|
||||
checksum: b6a7c29c7b7d92307571b44629c94af0cad6674cb4251ce5387cd2e6d8051511fa8397a28cf3b387fd4ef26ce79442cbe8f9cae141fda7628fdf532af274e6ba
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/stack-utils@npm:^1.0.1":
|
||||
version: 1.0.1
|
||||
resolution: "@types/stack-utils@npm:1.0.1"
|
||||
|
@ -3259,16 +3247,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@verdaccio/commons-api@npm:9.7.1, @verdaccio/commons-api@npm:^9.7.1":
|
||||
version: 9.7.1
|
||||
resolution: "@verdaccio/commons-api@npm:9.7.1"
|
||||
dependencies:
|
||||
http-errors: 1.8.0
|
||||
http-status-codes: 1.4.0
|
||||
checksum: c5794f8cf00b88b25a4515bb069c002e8d599a83031a019f5ec972ef92796d9c1b2122646498305ad9b00325521d5d31a3e9822360f8016d848988728566ffae
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@verdaccio/eslint-config@npm:^8.5.0":
|
||||
version: 8.5.0
|
||||
resolution: "@verdaccio/eslint-config@npm:8.5.0"
|
||||
|
@ -3299,15 +3277,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@verdaccio/file-locking@npm:^9.7.2":
|
||||
version: 9.7.2
|
||||
resolution: "@verdaccio/file-locking@npm:9.7.2"
|
||||
dependencies:
|
||||
lockfile: 1.0.4
|
||||
checksum: e0dbc6c9c47309c8104456683edc41da8fc8efac0dd4ace643f9c4be6f8200381706959f9eb92571e11b2b6f78a6b3692252a1b691ef742735a5848abd85b201
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@verdaccio/local-storage@npm:10.0.1":
|
||||
version: 10.0.1
|
||||
resolution: "@verdaccio/local-storage@npm:10.0.1"
|
||||
|
@ -3324,21 +3293,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@verdaccio/local-storage@npm:9.7.5":
|
||||
version: 9.7.5
|
||||
resolution: "@verdaccio/local-storage@npm:9.7.5"
|
||||
dependencies:
|
||||
"@verdaccio/commons-api": ^9.7.1
|
||||
"@verdaccio/file-locking": ^9.7.2
|
||||
"@verdaccio/streams": ^9.7.2
|
||||
async: 3.2.0
|
||||
level: 5.0.1
|
||||
lodash: 4.17.21
|
||||
mkdirp: 0.5.5
|
||||
checksum: 98989ecf635a68dcac2debbcd5bbede41f25a82dd090426031c74bb99eee783a2dcc25e81055ab040da8f52e07131b2a3cd1b0db6e78d290353ea9b78dde728a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@verdaccio/readme@npm:10.0.0":
|
||||
version: 10.0.0
|
||||
resolution: "@verdaccio/readme@npm:10.0.0"
|
||||
|
@ -3350,17 +3304,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@verdaccio/readme@npm:9.7.5":
|
||||
version: 9.7.5
|
||||
resolution: "@verdaccio/readme@npm:9.7.5"
|
||||
dependencies:
|
||||
dompurify: ^2.2.6
|
||||
jsdom: 15.2.1
|
||||
marked: ^2.0.1
|
||||
checksum: 177bb41a3ae339df067abac744b1c4fea7edb632bcb9b05dbe9ed6db5116f49c6daf52aeb06615340af6b8fc13da2e51cb54f7b01772eb5419c4a7bd1d2849a5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@verdaccio/streams@npm:10.0.0, @verdaccio/streams@npm:^10.0.0":
|
||||
version: 10.0.0
|
||||
resolution: "@verdaccio/streams@npm:10.0.0"
|
||||
|
@ -3368,13 +3311,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@verdaccio/streams@npm:9.7.2, @verdaccio/streams@npm:^9.7.2":
|
||||
version: 9.7.2
|
||||
resolution: "@verdaccio/streams@npm:9.7.2"
|
||||
checksum: 6df3c0e44887d657b7190453c1cf7de6bd0c48f83432902cc6b4877bdbe59f5ed7836b0c34a81b58da78aaa024b1b53d53788adeb32ae69534587f363d23e5fb
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@verdaccio/types@npm:^9.7.2":
|
||||
version: 9.7.2
|
||||
resolution: "@verdaccio/types@npm:9.7.2"
|
||||
|
@ -3382,13 +3318,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@verdaccio/ui-theme@npm:1.15.1":
|
||||
version: 1.15.1
|
||||
resolution: "@verdaccio/ui-theme@npm:1.15.1"
|
||||
checksum: e6dfeaae7043daa639042345f62ba4d872a7457984b751ae39694f504c33b09d875c42d72b58df9968bed80cf8e49c6554cc6062a0884dd0c1869a2ae40722aa
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@verdaccio/ui-theme@npm:3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "@verdaccio/ui-theme@npm:3.0.0"
|
||||
|
@ -3429,29 +3358,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"abstract-leveldown@npm:^6.2.1, abstract-leveldown@npm:~6.2.1":
|
||||
version: 6.2.3
|
||||
resolution: "abstract-leveldown@npm:6.2.3"
|
||||
dependencies:
|
||||
buffer: ^5.5.0
|
||||
immediate: ^3.2.3
|
||||
level-concat-iterator: ~2.0.0
|
||||
level-supports: ~1.0.0
|
||||
xtend: ~4.0.0
|
||||
checksum: 193fd90d2110b63bf46aa761f18b3cb8c6e774d5b969c4b5ff8230d215b8982eac9edb8e10dcda7d9ccef361a845bcaa99e6a510d4ba7215a709b3d3ffffee8a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"abstract-leveldown@npm:~6.0.1":
|
||||
version: 6.0.3
|
||||
resolution: "abstract-leveldown@npm:6.0.3"
|
||||
dependencies:
|
||||
level-concat-iterator: ~2.0.0
|
||||
xtend: ~4.0.0
|
||||
checksum: 02992285f88f56c379b240caeab26c95350673fa204d73174a9cf1ba7459393b67e4c88fd820b1afb722e2139c83150f1c4bf40c9cdbaa2ebfdc98f26fa9debc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"accepts@npm:^1.3.7, accepts@npm:~1.3.5, accepts@npm:~1.3.7":
|
||||
version: 1.3.7
|
||||
resolution: "accepts@npm:1.3.7"
|
||||
|
@ -4003,6 +3909,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"atomic-sleep@npm:^1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "atomic-sleep@npm:1.0.0"
|
||||
checksum: 2c6fa68cafef5ec1501245da00cde40b8f7ac71428bd727a923ea883b81ad643667a85677056cd663ad3ca584a49dbeb3a1bd4e6c70c1e9e36afd71b6e36ef96
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"aws-sign2@npm:~0.7.0":
|
||||
version: 0.7.0
|
||||
resolution: "aws-sign2@npm:0.7.0"
|
||||
|
@ -4123,24 +4036,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"babel-plugin-emotion@npm:10.0.33":
|
||||
version: 10.0.33
|
||||
resolution: "babel-plugin-emotion@npm:10.0.33"
|
||||
dependencies:
|
||||
"@babel/helper-module-imports": ^7.0.0
|
||||
"@emotion/hash": 0.8.0
|
||||
"@emotion/memoize": 0.7.4
|
||||
"@emotion/serialize": ^0.11.16
|
||||
babel-plugin-macros: ^2.0.0
|
||||
babel-plugin-syntax-jsx: ^6.18.0
|
||||
convert-source-map: ^1.5.0
|
||||
escape-string-regexp: ^1.0.5
|
||||
find-root: ^1.1.0
|
||||
source-map: ^0.5.7
|
||||
checksum: ecbf7cbcae0afb53bc8fbfb88e54b32eb37cb021eefbf8f878ddf573dfabfc34033e611bba01c4512b0f678372dc85a0c5a1ae41864a894266844ccb08864564
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"babel-plugin-istanbul@npm:^6.0.0":
|
||||
version: 6.0.0
|
||||
resolution: "babel-plugin-istanbul@npm:6.0.0"
|
||||
|
@ -4177,17 +4072,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"babel-plugin-macros@npm:^2.0.0":
|
||||
version: 2.6.1
|
||||
resolution: "babel-plugin-macros@npm:2.6.1"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.4.2
|
||||
cosmiconfig: ^5.2.0
|
||||
resolve: ^1.10.0
|
||||
checksum: ab5c34f8d6151695d248c9da2ed151b18765f64667591598543ed448f00f4045ea655788683a8d10b277e8d937b14ab52554195e73aec5812a32ff593483aa18
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"babel-plugin-polyfill-corejs2@npm:^0.1.4":
|
||||
version: 0.1.10
|
||||
resolution: "babel-plugin-polyfill-corejs2@npm:0.1.10"
|
||||
|
@ -4224,13 +4108,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"babel-plugin-syntax-jsx@npm:^6.18.0":
|
||||
version: 6.18.0
|
||||
resolution: "babel-plugin-syntax-jsx@npm:6.18.0"
|
||||
checksum: a5c8174ad6165d5f541f9f31cf4b6338ccfb7d586cec111537fa567f13b5fbdcf54f7928db44429d4610aa1be9d07bb03d017b22ba521ff819a6a2090b694797
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"babel-preset-current-node-syntax@npm:^0.1.2":
|
||||
version: 0.1.4
|
||||
resolution: "babel-preset-current-node-syntax@npm:0.1.4"
|
||||
|
@ -4520,7 +4397,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"buffer@npm:^5.2.1, buffer@npm:^5.5.0, buffer@npm:^5.6.0":
|
||||
"buffer@npm:^5.2.1, buffer@npm:^5.5.0":
|
||||
version: 5.6.0
|
||||
resolution: "buffer@npm:5.6.0"
|
||||
dependencies:
|
||||
|
@ -4530,29 +4407,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"bunyan@npm:1.8.15":
|
||||
version: 1.8.15
|
||||
resolution: "bunyan@npm:1.8.15"
|
||||
dependencies:
|
||||
dtrace-provider: ~0.8
|
||||
moment: ^2.19.3
|
||||
mv: ~2
|
||||
safe-json-stringify: ~1
|
||||
dependenciesMeta:
|
||||
dtrace-provider:
|
||||
optional: true
|
||||
moment:
|
||||
optional: true
|
||||
mv:
|
||||
optional: true
|
||||
safe-json-stringify:
|
||||
optional: true
|
||||
bin:
|
||||
bunyan: bin/bunyan
|
||||
checksum: 73c30ffb8c1a6b8dfe9dc3bca325bba85cb706442aa78cc44fdc93cf16b929b0b7c1884b92110fac9f287342a94f2ae8ebe8c83664b09c7f6743ffe1621c204c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"bytes@npm:3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "bytes@npm:3.0.0"
|
||||
|
@ -4970,13 +4824,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"commander@npm:3.0.2":
|
||||
version: 3.0.2
|
||||
resolution: "commander@npm:3.0.2"
|
||||
checksum: 28071a49d23606c1e31f1f275d2aac9c03833cb3442e04b798ffbcd5f7fb7a1fbfc6b5bc6a69b862df83f475378665623788118d189c254a173248c452bd77a2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"commander@npm:7.2.0":
|
||||
version: 7.2.0
|
||||
resolution: "commander@npm:7.2.0"
|
||||
|
@ -5318,7 +5165,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"convert-source-map@npm:^1.1.0, convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.5.0":
|
||||
"convert-source-map@npm:^1.1.0, convert-source-map@npm:^1.4.0":
|
||||
version: 1.6.0
|
||||
resolution: "convert-source-map@npm:1.6.0"
|
||||
dependencies:
|
||||
|
@ -5541,13 +5388,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"csstype@npm:^2.5.7":
|
||||
version: 2.6.6
|
||||
resolution: "csstype@npm:2.6.6"
|
||||
checksum: 2fcf1733201db43268663e68b429940b9cd84591af309e6a1ffe63e77f6044d90cf0ee9f1d96084b53aeb83cbf5fc70a6f5391016a653d22f9a743a5aef2d907
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"currently-unhandled@npm:^0.4.1":
|
||||
version: 0.4.1
|
||||
resolution: "currently-unhandled@npm:0.4.1"
|
||||
|
@ -5717,16 +5557,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"deferred-leveldown@npm:~5.3.0":
|
||||
version: 5.3.0
|
||||
resolution: "deferred-leveldown@npm:5.3.0"
|
||||
dependencies:
|
||||
abstract-leveldown: ~6.2.1
|
||||
inherits: ^2.0.3
|
||||
checksum: 2d2dbff3db68635a872218145b6c88f37358d26e31cf9e1efda229a68a56b420f82278794915c4ceb7129a651facfad4e44c8b6740d43733da6f808d981ac014
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"define-properties@npm:^1.1.2, define-properties@npm:^1.1.3":
|
||||
version: 1.1.3
|
||||
resolution: "define-properties@npm:1.1.3"
|
||||
|
@ -5939,16 +5769,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"dtrace-provider@npm:~0.8":
|
||||
version: 0.8.7
|
||||
resolution: "dtrace-provider@npm:0.8.7"
|
||||
dependencies:
|
||||
nan: ^2.10.0
|
||||
node-gyp: latest
|
||||
checksum: f6dbcfe07363efa28a4d31b4b5bf4eba09d370b2ec2a6cc8e86fde18e02944d6f92d2067acc59bf17e64eedabbc3381c3c853fc64d0a35c5c63384cf00af7bfa
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ecc-jsbn@npm:~0.1.1":
|
||||
version: 0.1.2
|
||||
resolution: "ecc-jsbn@npm:0.1.2"
|
||||
|
@ -6024,18 +5844,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"encoding-down@npm:^6.3.0":
|
||||
version: 6.3.0
|
||||
resolution: "encoding-down@npm:6.3.0"
|
||||
dependencies:
|
||||
abstract-leveldown: ^6.2.1
|
||||
inherits: ^2.0.3
|
||||
level-codec: ^9.0.0
|
||||
level-errors: ^2.0.0
|
||||
checksum: 002e025e623647585f410e9184840bbdec3451e7473b27dba75d89e7c031b8aef51b16aa21bd3955ef2f5f57ead57a477715d7234b677885c14f5f3af69a8873
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"end-of-stream@npm:^1.1.0":
|
||||
version: 1.4.1
|
||||
resolution: "end-of-stream@npm:1.4.1"
|
||||
|
@ -6079,7 +5887,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"errno@npm:^0.1.3, errno@npm:~0.1.1":
|
||||
"errno@npm:^0.1.3":
|
||||
version: 0.1.7
|
||||
resolution: "errno@npm:0.1.7"
|
||||
dependencies:
|
||||
|
@ -6902,6 +6710,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fast-redact@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "fast-redact@npm:3.0.0"
|
||||
checksum: 5a1a724f4b786c194117f322262440426a03996b1b8851b0e390392770ac2b6ab9037b2ef4b23d8eb7043cbdc7092b37926774a82f794f6179e9087fab44ee49
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fast-safe-stringify@npm:^2.0.7":
|
||||
version: 2.0.7
|
||||
resolution: "fast-safe-stringify@npm:2.0.7"
|
||||
|
@ -7031,13 +6846,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"find-root@npm:^1.1.0":
|
||||
version: 1.1.0
|
||||
resolution: "find-root@npm:1.1.0"
|
||||
checksum: 34f9eeb7258b3b5e270824a11bae4a8e6075efe79a319c034a3c5cae90cdb558c524c42ff7938b1200f648349c9dc04e860c8eaef852c802f5a1c26fa04d5ab1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"find-up@npm:^1.0.0":
|
||||
version: 1.1.2
|
||||
resolution: "find-up@npm:1.1.2"
|
||||
|
@ -7096,6 +6904,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"flatstr@npm:^1.0.12":
|
||||
version: 1.0.12
|
||||
resolution: "flatstr@npm:1.0.12"
|
||||
checksum: 2803767f91887ffd60ac2aac0d6ccf2dd9e2d8f216628a73e3f525d5b5bfa4ac9a5b57334a4c1e6d5622f92f440c52562f7ca9719ace9d025d6c5b7a1a1579db
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"flatted@npm:^3.1.0":
|
||||
version: 3.1.1
|
||||
resolution: "flatted@npm:3.1.1"
|
||||
|
@ -7990,13 +7805,6 @@ fsevents@~2.1.2:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"immediate@npm:^3.2.3, immediate@npm:~3.2.3":
|
||||
version: 3.2.3
|
||||
resolution: "immediate@npm:3.2.3"
|
||||
checksum: 580a913c69aae4d9cf919b12655aafcb097438832381eb8bb575c949f1129904ba3d11e029cc13d0823fa1993a0933caea57b444f98c812aa18d2eab96dc94f1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"import-fresh@npm:^2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "import-fresh@npm:2.0.0"
|
||||
|
@ -9286,18 +9094,6 @@ fsevents@~2.1.2:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"js-yaml@npm:3.14.1":
|
||||
version: 3.14.1
|
||||
resolution: "js-yaml@npm:3.14.1"
|
||||
dependencies:
|
||||
argparse: ^1.0.7
|
||||
esprima: ^4.0.0
|
||||
bin:
|
||||
js-yaml: bin/js-yaml.js
|
||||
checksum: 46b61f889796a20d16b0b64580a01b6a02b2e45c1a2744906346da54d07e14cde764e887ab6d1512d8b2541c63711bd4b75859c28eb99605baf59fa173fc38c2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"js-yaml@npm:4.0.0":
|
||||
version: 4.0.0
|
||||
resolution: "js-yaml@npm:4.0.0"
|
||||
|
@ -9617,111 +9413,6 @@ fsevents@~2.1.2:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"level-codec@npm:^9.0.0":
|
||||
version: 9.0.2
|
||||
resolution: "level-codec@npm:9.0.2"
|
||||
dependencies:
|
||||
buffer: ^5.6.0
|
||||
checksum: 3474cadde6f6221caff2e464c8ffd50761ee05dbb9d3d1259eca9bcca2a733f1de839cf2ea3ed7e2dbc5b01436096a6fc5606b9df2a0b796f96f53dce27b9105
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"level-concat-iterator@npm:~2.0.0":
|
||||
version: 2.0.1
|
||||
resolution: "level-concat-iterator@npm:2.0.1"
|
||||
checksum: d5ac362a950bcf63bc19c4e8d397055c9bbd335eea2c56f7de372d38c66147d6db2430596025861d99820f890a9881aef9a192ee62b109ccf0885c0b5c5c2586
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"level-errors@npm:^2.0.0, level-errors@npm:~2.0.0":
|
||||
version: 2.0.1
|
||||
resolution: "level-errors@npm:2.0.1"
|
||||
dependencies:
|
||||
errno: ~0.1.1
|
||||
checksum: 74dbf642313f4ccd8736092daad482c133bfba2a1ded8e622be5b75c8d358627daab2f7684c404ded7147b16caa8bbc2509772c95f86b2fddcaa75651e0ac665
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"level-iterator-stream@npm:~4.0.0":
|
||||
version: 4.0.2
|
||||
resolution: "level-iterator-stream@npm:4.0.2"
|
||||
dependencies:
|
||||
inherits: ^2.0.4
|
||||
readable-stream: ^3.4.0
|
||||
xtend: ^4.0.2
|
||||
checksum: 795cdbbf856b58fffaf19e0d0b294f65fd4d8feb22bdee8563408f739107ce88b03b8b36ecc60be95c736ea676d611f95dabfbbb15346a9005ed627ae644dfb5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"level-js@npm:^4.0.0":
|
||||
version: 4.0.2
|
||||
resolution: "level-js@npm:4.0.2"
|
||||
dependencies:
|
||||
abstract-leveldown: ~6.0.1
|
||||
immediate: ~3.2.3
|
||||
inherits: ^2.0.3
|
||||
ltgt: ^2.1.2
|
||||
typedarray-to-buffer: ~3.1.5
|
||||
checksum: 9047b2c5cf5cf83da7f7a39f631b28e5449d202bc45c04ae5149f6f06056cd1292fe571fed9c800df9ae9d216d547ae4d86bbbb055854534ddb003103799aaab
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"level-packager@npm:^5.0.0":
|
||||
version: 5.1.1
|
||||
resolution: "level-packager@npm:5.1.1"
|
||||
dependencies:
|
||||
encoding-down: ^6.3.0
|
||||
levelup: ^4.3.2
|
||||
checksum: bf36e98c6dcb1f35c6e05b6fee9e505feb0ca5b88d88206e96bfd328da5ed6c2e52d8b0c5ba53d283f74d8a9e9ab634697c4f7de69339ad26a4e302d8299b98e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"level-supports@npm:~1.0.0":
|
||||
version: 1.0.1
|
||||
resolution: "level-supports@npm:1.0.1"
|
||||
dependencies:
|
||||
xtend: ^4.0.2
|
||||
checksum: 73c845921516d38ea57d6574908e86fedbdf3a069938f14f72e221e3f9dc04adc93b0b484fc9d7591c3baab7405f33292d90250b4239a75c6afc7f37bc5b3540
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"level@npm:5.0.1":
|
||||
version: 5.0.1
|
||||
resolution: "level@npm:5.0.1"
|
||||
dependencies:
|
||||
level-js: ^4.0.0
|
||||
level-packager: ^5.0.0
|
||||
leveldown: ^5.0.0
|
||||
opencollective-postinstall: ^2.0.0
|
||||
checksum: acd7f8aa61f5fe2654b4e46b8b0e80385e512df7df1ecbcf718f4ea8c6eec640da74e8a0b5e27ea064c395c33ffa0c18bc5b3a396ae6ab99da6bc88de7876985
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"leveldown@npm:^5.0.0":
|
||||
version: 5.6.0
|
||||
resolution: "leveldown@npm:5.6.0"
|
||||
dependencies:
|
||||
abstract-leveldown: ~6.2.1
|
||||
napi-macros: ~2.0.0
|
||||
node-gyp: latest
|
||||
node-gyp-build: ~4.1.0
|
||||
checksum: 3c7fc9455e7d3232a50658b7ee94f043e7649800e6ff671d32fc5305390359bc9ba5a76bba692c79e9d5ccf99baafd882b6408fb58fb944c9b01074745b2d9dc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"levelup@npm:^4.3.2":
|
||||
version: 4.4.0
|
||||
resolution: "levelup@npm:4.4.0"
|
||||
dependencies:
|
||||
deferred-leveldown: ~5.3.0
|
||||
level-errors: ~2.0.0
|
||||
level-iterator-stream: ~4.0.0
|
||||
level-supports: ~1.0.0
|
||||
xtend: ~4.0.0
|
||||
checksum: 7cc5b84c29baeae52ee81c5d6f56a03557ec0eed4b95b1a7f22c82d8a0ebe4cea537166d2823e0cf45125dff86f119c058ccd824b5c5f2c2c8041df745b6dd39
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"leven@npm:^3.1.0":
|
||||
version: 3.1.0
|
||||
resolution: "leven@npm:3.1.0"
|
||||
|
@ -10190,13 +9881,6 @@ fsevents@~2.1.2:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ltgt@npm:^2.1.2":
|
||||
version: 2.2.1
|
||||
resolution: "ltgt@npm:2.2.1"
|
||||
checksum: 680494cb8f5ff63432f9802bac743cf6798b494dc3ea46b704e69c0c0655018eb83f0c25d76220f0877bda8aabf6f3d107f173597c98f22c6977422bb29fbc93
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"lunr-mutable-indexes@npm:2.3.2":
|
||||
version: 2.3.2
|
||||
resolution: "lunr-mutable-indexes@npm:2.3.2"
|
||||
|
@ -10623,7 +10307,16 @@ fsevents@~2.1.2:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"mkdirp@npm:0.5.5, mkdirp@npm:^0.5.1, mkdirp@npm:~0.5.1":
|
||||
"mkdirp@npm:1.0.4, mkdirp@npm:^1.0.3":
|
||||
version: 1.0.4
|
||||
resolution: "mkdirp@npm:1.0.4"
|
||||
bin:
|
||||
mkdirp: bin/cmd.js
|
||||
checksum: 1aa3a6a2d7514f094a91329ec09994f5d32d2955a4985ecbb3d86f2aaeafc4aa11521f98d606144c1d49cd9835004d9a73342709b8c692c92e59eacf37412468
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"mkdirp@npm:^0.5.1, mkdirp@npm:~0.5.1":
|
||||
version: 0.5.5
|
||||
resolution: "mkdirp@npm:0.5.5"
|
||||
dependencies:
|
||||
|
@ -10634,15 +10327,6 @@ fsevents@~2.1.2:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"mkdirp@npm:1.0.4, mkdirp@npm:^1.0.3":
|
||||
version: 1.0.4
|
||||
resolution: "mkdirp@npm:1.0.4"
|
||||
bin:
|
||||
mkdirp: bin/cmd.js
|
||||
checksum: 1aa3a6a2d7514f094a91329ec09994f5d32d2955a4985ecbb3d86f2aaeafc4aa11521f98d606144c1d49cd9835004d9a73342709b8c692c92e59eacf37412468
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"modify-values@npm:^1.0.0":
|
||||
version: 1.0.1
|
||||
resolution: "modify-values@npm:1.0.1"
|
||||
|
@ -10650,13 +10334,6 @@ fsevents@~2.1.2:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"moment@npm:^2.19.3":
|
||||
version: 2.27.0
|
||||
resolution: "moment@npm:2.27.0"
|
||||
checksum: 72d9a7d8dba59e3d538440cdc0b59fa895b123361e370be231896478aaf157a484355ce32bd8daf6f731d6d1636d3a67ecb67531e536e093ca18b43e0cbae194
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ms@npm:2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "ms@npm:2.0.0"
|
||||
|
@ -10685,7 +10362,7 @@ fsevents@~2.1.2:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"mv@npm:2.1.1, mv@npm:~2":
|
||||
"mv@npm:2.1.1":
|
||||
version: 2.1.1
|
||||
resolution: "mv@npm:2.1.1"
|
||||
dependencies:
|
||||
|
@ -10696,15 +10373,6 @@ fsevents@~2.1.2:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"nan@npm:^2.10.0":
|
||||
version: 2.14.0
|
||||
resolution: "nan@npm:2.14.0"
|
||||
dependencies:
|
||||
node-gyp: latest
|
||||
checksum: 988248a5f141b9ff728d00927607af857564707fb480de7dca775126af3ea5d7fe231958139fb866931742525ef0c0ca9c8d161188df81e1fa5fd79de1e2adc6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"nanomatch@npm:^1.2.9":
|
||||
version: 1.2.13
|
||||
resolution: "nanomatch@npm:1.2.13"
|
||||
|
@ -10724,13 +10392,6 @@ fsevents@~2.1.2:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"napi-macros@npm:~2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "napi-macros@npm:2.0.0"
|
||||
checksum: 1b67e5271e6688d7801a5bfa49c50c097ead038ed552af5f4b1e849255f711581b389cbeb8d746ee14803612dbdf205c086e75606f8ff7d354bc9d4b5863912c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"natural-compare@npm:^1.4.0":
|
||||
version: 1.4.0
|
||||
resolution: "natural-compare@npm:1.4.0"
|
||||
|
@ -10804,17 +10465,6 @@ fsevents@~2.1.2:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"node-gyp-build@npm:~4.1.0":
|
||||
version: 4.1.1
|
||||
resolution: "node-gyp-build@npm:4.1.1"
|
||||
bin:
|
||||
node-gyp-build: ./bin.js
|
||||
node-gyp-build-optional: ./optional.js
|
||||
node-gyp-build-test: ./build-test.js
|
||||
checksum: b63416498b98ac05b297cc6582744a76ff24e0e549dd619563e0edacd07526a27ded68e6ba11730aa0a7601bf04881a74d1f326475403cebc437b3767bafb531
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"node-gyp@npm:latest":
|
||||
version: 7.1.0
|
||||
resolution: "node-gyp@npm:7.1.0"
|
||||
|
@ -11223,15 +10873,6 @@ fsevents@~2.1.2:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"opencollective-postinstall@npm:^2.0.0":
|
||||
version: 2.0.3
|
||||
resolution: "opencollective-postinstall@npm:2.0.3"
|
||||
bin:
|
||||
opencollective-postinstall: index.js
|
||||
checksum: d75b06b80eb426aaf099307ca4398f3119c8c86ff3806a95cfe234b979b80c07080040734fe2dc3c51fed5b15bd98dae88340807980bdc74aa1ebf045c74ef06
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"optionator@npm:^0.8.1":
|
||||
version: 0.8.3
|
||||
resolution: "optionator@npm:0.8.3"
|
||||
|
@ -11453,6 +11094,13 @@ fsevents@~2.1.2:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"parse-ms@npm:^2.1.0":
|
||||
version: 2.1.0
|
||||
resolution: "parse-ms@npm:2.1.0"
|
||||
checksum: 59c381bf8732170633ddee524965a6d63e4e9fd08835052a300ea4f4f01e5e875ac0034fe7b370777ec85b157c2bd355e2bc93dce03368efa0d782722c81832a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"parse-passwd@npm:^1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "parse-passwd@npm:1.0.0"
|
||||
|
@ -11670,6 +11318,29 @@ fsevents@~2.1.2:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pino-std-serializers@npm:^3.1.0":
|
||||
version: 3.2.0
|
||||
resolution: "pino-std-serializers@npm:3.2.0"
|
||||
checksum: fb386422f018951ecdaf241b76554d6149928e9dd5c89d1bc12100d61d7f14b140fcbbfcf9203921b21cda05cc3eab2499289fe272358d50836627ccda15f5ec
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pino@npm:6.11.2":
|
||||
version: 6.11.2
|
||||
resolution: "pino@npm:6.11.2"
|
||||
dependencies:
|
||||
fast-redact: ^3.0.0
|
||||
fast-safe-stringify: ^2.0.7
|
||||
flatstr: ^1.0.12
|
||||
pino-std-serializers: ^3.1.0
|
||||
quick-format-unescaped: 4.0.1
|
||||
sonic-boom: ^1.0.2
|
||||
bin:
|
||||
pino: ./bin.js
|
||||
checksum: e854d37d659080c6f96c4030a279b44a25cc1550b8ca6aee0c9a62420773c2771090cfec96587aa917d4c82a2d1744d52e63d9d9135d4c410f9d30438069a013
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pirates@npm:^4.0.0, pirates@npm:^4.0.1":
|
||||
version: 4.0.1
|
||||
resolution: "pirates@npm:4.0.1"
|
||||
|
@ -11750,6 +11421,13 @@ fsevents@~2.1.2:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"prettier-bytes@npm:^1.0.3":
|
||||
version: 1.0.4
|
||||
resolution: "prettier-bytes@npm:1.0.4"
|
||||
checksum: 62e19955cf2951e0575b41badd57df3fe7eb264a1835bd5acc3959f44c6003786c37673dcfab5498ccc8d713aa4a50162e2805282e6775b38e3219f0784cc72a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"prettier-linter-helpers@npm:^1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "prettier-linter-helpers@npm:1.0.0"
|
||||
|
@ -11804,6 +11482,15 @@ fsevents@~2.1.2:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pretty-ms@npm:^5.0.0":
|
||||
version: 5.1.0
|
||||
resolution: "pretty-ms@npm:5.1.0"
|
||||
dependencies:
|
||||
parse-ms: ^2.1.0
|
||||
checksum: e0803915b504ba6e5df066b397245a51c807146b273037a24d7d201671561b40588b0b91525685859e18e791a61336d776ce4a964ae8c6b3c73dc0640e52bcad
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"private@npm:^0.1.8":
|
||||
version: 0.1.8
|
||||
resolution: "private@npm:0.1.8"
|
||||
|
@ -11970,6 +11657,13 @@ fsevents@~2.1.2:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"quick-format-unescaped@npm:4.0.1":
|
||||
version: 4.0.1
|
||||
resolution: "quick-format-unescaped@npm:4.0.1"
|
||||
checksum: 0935e55e0aaaf789baa080768e822694bc0a497a3170fd35bf2b1aee2a953cf3b5a24e9d29a70dbe7bdc72534c6e1be917ab5c599d587ce0425c98293d8cc1c7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"quick-lru@npm:^1.0.0":
|
||||
version: 1.1.0
|
||||
resolution: "quick-lru@npm:1.1.0"
|
||||
|
@ -12697,13 +12391,6 @@ resolve@1.1.7:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"safe-json-stringify@npm:~1":
|
||||
version: 1.2.0
|
||||
resolution: "safe-json-stringify@npm:1.2.0"
|
||||
checksum: 0b93f8dc50cff28143f69548f79ba06e5f6b41c3846a7edcf82878f3f93f8b438992474252b425ddc20834b298d22b92a7e578578bf7cf6d3d2d5560bcc17540
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"safe-regex@npm:^1.1.0":
|
||||
version: 1.1.0
|
||||
resolution: "safe-regex@npm:1.1.0"
|
||||
|
@ -13042,6 +12729,16 @@ resolve@1.1.7:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"sonic-boom@npm:^1.0.2":
|
||||
version: 1.4.0
|
||||
resolution: "sonic-boom@npm:1.4.0"
|
||||
dependencies:
|
||||
atomic-sleep: ^1.0.0
|
||||
flatstr: ^1.0.12
|
||||
checksum: 19c5fd3fb95f374a6e3b3edcc327ed8bf98ff4d54194c1305dac5fb1855ac81e681b0f6946cab4d97165897cb65e5561d781022e07fc5915a99a42f6627b0564
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"source-map-resolve@npm:^0.5.0":
|
||||
version: 0.5.2
|
||||
resolution: "source-map-resolve@npm:0.5.2"
|
||||
|
@ -13082,7 +12779,7 @@ resolve@1.1.7:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"source-map@npm:^0.5.0, source-map@npm:^0.5.6, source-map@npm:^0.5.7":
|
||||
"source-map@npm:^0.5.0, source-map@npm:^0.5.6":
|
||||
version: 0.5.7
|
||||
resolution: "source-map@npm:0.5.7"
|
||||
checksum: 737face96577a2184a42f141607fcc2c9db5620cb8517ae8ab3924476defa138fc26b0bab31e98cbd6f19211ecbf78400b59f801ff7a0f87aa9faa79f7433e10
|
||||
|
@ -14025,7 +13722,7 @@ resolve@1.1.7:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typedarray-to-buffer@npm:^3.1.5, typedarray-to-buffer@npm:~3.1.5":
|
||||
"typedarray-to-buffer@npm:^3.1.5":
|
||||
version: 3.1.5
|
||||
resolution: "typedarray-to-buffer@npm:3.1.5"
|
||||
dependencies:
|
||||
|
@ -14315,16 +14012,6 @@ typescript@3.9.9:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"verdaccio-audit@npm:9.7.3":
|
||||
version: 9.7.3
|
||||
resolution: "verdaccio-audit@npm:9.7.3"
|
||||
dependencies:
|
||||
express: 4.17.1
|
||||
request: 2.88.2
|
||||
checksum: b2fc062f19584fb5a43363d1d5cbb70a34440229619a24f7d7dc4acae3516d9d78a6c71353958900e2b0a49f9efd049f852f7f2ff9a73aa382484e29758c05c6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"verdaccio-auth-memory@npm:10.0.0":
|
||||
version: 10.0.0
|
||||
resolution: "verdaccio-auth-memory@npm:10.0.0"
|
||||
|
@ -14347,19 +14034,6 @@ typescript@3.9.9:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"verdaccio-htpasswd@npm:9.7.2":
|
||||
version: 9.7.2
|
||||
resolution: "verdaccio-htpasswd@npm:9.7.2"
|
||||
dependencies:
|
||||
"@verdaccio/file-locking": ^9.7.2
|
||||
apache-md5: 1.1.2
|
||||
bcryptjs: 2.4.3
|
||||
http-errors: 1.8.0
|
||||
unix-crypt-td-js: 1.1.4
|
||||
checksum: 527c630fe7ac4f2d2e0d08659d5ddf7d53e4304ec2cf2459395302bdb81c95d4c8702ae4a387e2f48fb750b547722d9b814968a3372153c6c6f8eeb66f48e59d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"verdaccio-memory@npm:10.0.0":
|
||||
version: 10.0.0
|
||||
resolution: "verdaccio-memory@npm:10.0.0"
|
||||
|
@ -14371,49 +14045,6 @@ typescript@3.9.9:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"verdaccio@npm:^4.5.1":
|
||||
version: 4.12.0
|
||||
resolution: "verdaccio@npm:4.12.0"
|
||||
dependencies:
|
||||
"@verdaccio/commons-api": 9.7.1
|
||||
"@verdaccio/local-storage": 9.7.5
|
||||
"@verdaccio/readme": 9.7.5
|
||||
"@verdaccio/streams": 9.7.2
|
||||
"@verdaccio/ui-theme": 1.15.1
|
||||
JSONStream: 1.3.5
|
||||
async: 3.2.0
|
||||
body-parser: 1.19.0
|
||||
bunyan: 1.8.15
|
||||
commander: 3.0.2
|
||||
compression: 1.7.4
|
||||
cookies: 0.8.0
|
||||
cors: 2.8.5
|
||||
dayjs: 1.10.4
|
||||
envinfo: 7.7.4
|
||||
express: 4.17.1
|
||||
handlebars: 4.7.7
|
||||
http-errors: 1.8.0
|
||||
js-yaml: 3.14.1
|
||||
jsonwebtoken: 8.5.1
|
||||
kleur: 4.1.4
|
||||
lodash: 4.17.21
|
||||
lunr-mutable-indexes: 2.3.2
|
||||
marked: 2.0.1
|
||||
mime: 2.5.2
|
||||
minimatch: 3.0.4
|
||||
mkdirp: 0.5.5
|
||||
mv: 2.1.1
|
||||
pkginfo: 0.4.1
|
||||
request: 2.88.0
|
||||
semver: 7.3.4
|
||||
verdaccio-audit: 9.7.3
|
||||
verdaccio-htpasswd: 9.7.2
|
||||
bin:
|
||||
verdaccio: bin/verdaccio
|
||||
checksum: 61c067f4d6b9df3972a254f0a1cc7ce12b71285e414db0d2292792907fe150c6cb0864ec469c76fe9b65971175da0d412a087f3f8dabe79d9e9cb362d3a52cb7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"verdaccio@workspace:.":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "verdaccio@workspace:."
|
||||
|
@ -14451,6 +14082,7 @@ typescript@3.9.9:
|
|||
"@types/mime": 2.0.1
|
||||
"@types/minimatch": 3.0.3
|
||||
"@types/node": 12.12.21
|
||||
"@types/pino": 6.3.6
|
||||
"@types/request": 2.48.3
|
||||
"@types/semver": 6.2.0
|
||||
"@typescript-eslint/eslint-plugin": 4.13.0
|
||||
|
@ -14469,9 +14101,7 @@ typescript@3.9.9:
|
|||
babel-jest: 26.6.3
|
||||
babel-loader: ^8.2.2
|
||||
babel-plugin-dynamic-import-node: 2.3.3
|
||||
babel-plugin-emotion: 10.0.33
|
||||
body-parser: 1.19.0
|
||||
bunyan: 1.8.15
|
||||
codecov: 3.8.1
|
||||
commander: 7.2.0
|
||||
compression: 1.7.4
|
||||
|
@ -14494,6 +14124,7 @@ typescript@3.9.9:
|
|||
eslint-plugin-simple-import-sort: 7.0.0
|
||||
eslint-plugin-verdaccio: 9.6.1
|
||||
express: 4.17.1
|
||||
fast-safe-stringify: ^2.0.7
|
||||
fs-extra: 9.1.0
|
||||
get-stdin: 8.0.0
|
||||
handlebars: 4.7.7
|
||||
|
@ -14518,8 +14149,11 @@ typescript@3.9.9:
|
|||
mv: 2.1.1
|
||||
nock: 12.0.3
|
||||
node-mocks-http: ^1.10.1
|
||||
pino: 6.11.2
|
||||
pkginfo: 0.4.1
|
||||
prettier: 2.2.1
|
||||
prettier-bytes: ^1.0.3
|
||||
pretty-ms: ^5.0.0
|
||||
puppeteer: 5.5.0
|
||||
request: 2.88.0
|
||||
rimraf: 3.0.2
|
||||
|
@ -14529,7 +14163,6 @@ typescript@3.9.9:
|
|||
supertest: 6.1.1
|
||||
typescript: 3.9.9
|
||||
validator: 13.5.2
|
||||
verdaccio: ^4.5.1
|
||||
verdaccio-audit: 10.0.0
|
||||
verdaccio-auth-memory: 10.0.0
|
||||
verdaccio-htpasswd: 10.0.0
|
||||
|
@ -14800,7 +14433,7 @@ typescript@3.9.9:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"xtend@npm:^4.0.2, xtend@npm:~4.0.0, xtend@npm:~4.0.1":
|
||||
"xtend@npm:~4.0.1":
|
||||
version: 4.0.2
|
||||
resolution: "xtend@npm:4.0.2"
|
||||
checksum: 37ee522a3e9fb9b143a400c30b21dc122aa8c9c9411c6afae1005a4617dc20a21765c114d544e37a6bb60c2733dd8ee0a44ed9e80d884ac78cccd30b5e0ab0da
|
||||
|
|
Loading…
Add table
Reference in a new issue