server: add log

This commit is contained in:
fantasticit 2022-05-21 14:39:56 +08:00
parent e804dea750
commit 589bd57f69
6 changed files with 292 additions and 9 deletions

View File

@ -4,6 +4,7 @@ server:
port: 5001
collaborationPort: 5003
maxDocumentVersion: 20 # 最大版本记录数
logRetainDays: 3 # 日志保留天数,比如只保留近三天日志
client:
port: 5002

View File

@ -26,6 +26,7 @@
"@nestjs/jwt": "^8.0.0",
"@nestjs/passport": "^8.1.0",
"@nestjs/platform-express": "^8.0.0",
"@nestjs/schedule": "^2.0.1",
"@nestjs/typeorm": "^8.0.3",
"@think/config": "workspace:^1.0.0",
"@think/constants": "workspace:^1.0.0",
@ -37,13 +38,18 @@
"date-fns": "^2.28.0",
"express": "^4.17.2",
"express-rate-limit": "^6.2.0",
"fs-extra": "^10.0.0",
"helmet": "^5.0.2",
"ioredis": "^5.0.1",
"lodash": "^4.17.21",
"mysql2": "^2.3.3",
"nestjs-pino": "^2.5.2",
"nuid": "^1.1.6",
"passport": "^0.5.2",
"passport-jwt": "^4.0.0",
"pino": "^7.11.0",
"pino-http": "^7.0.0",
"pino-pretty": "^7.6.1",
"prosemirror-model": "^1.16.1",
"reflect-metadata": "^0.1.13",
"rimraf": "^3.0.2",
@ -57,6 +63,7 @@
"@nestjs/cli": "^8.0.0",
"@nestjs/schematics": "^8.0.0",
"@nestjs/testing": "^8.0.0",
"@types/cron": "^2.0.0",
"@types/express": "^4.17.13",
"@types/jest": "27.0.2",
"@types/node": "^16.0.0",

View File

@ -8,6 +8,7 @@ import { UserEntity } from '@entities/user.entity';
import { ViewEntity } from '@entities/view.entity';
import { WikiEntity } from '@entities/wiki.entity';
import { WikiUserEntity } from '@entities/wiki-user.entity';
import { getLogFileName } from '@helpers/log.helper';
import { CollectorModule } from '@modules/collector.module';
import { CommentModule } from '@modules/comment.module';
import { DocumentModule } from '@modules/document.module';
@ -17,10 +18,15 @@ import { TemplateModule } from '@modules/template.module';
import { UserModule } from '@modules/user.module';
import { ViewModule } from '@modules/view.module';
import { WikiModule } from '@modules/wiki.module';
import { Module } from '@nestjs/common';
import { forwardRef, Inject, Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { Cron, ScheduleModule } from '@nestjs/schedule';
import { TypeOrmModule, TypeOrmModuleOptions } from '@nestjs/typeorm';
import { getConfig } from '@think/config';
import * as fs from 'fs-extra';
import { LoggerModule } from 'nestjs-pino';
import * as path from 'path';
import pino from 'pino';
const ENTITIES = [
UserEntity,
@ -47,6 +53,8 @@ const MODULES = [
ViewModule,
];
const ONE_DAY = 24 * 60 * 60 * 1000;
@Module({
imports: [
ConfigModule.forRoot({
@ -54,6 +62,18 @@ const MODULES = [
load: [getConfig],
isGlobal: true,
}),
ScheduleModule.forRoot(),
process.env.NODE_ENV === 'production' &&
LoggerModule.forRoot({
pinoHttp: {
stream: pino.destination({
dest: `./logs/${getLogFileName(new Date())}`,
minLength: 4096,
mkdir: true,
sync: false,
}),
},
}),
TypeOrmModule.forRootAsync({
imports: [ConfigModule],
inject: [ConfigService],
@ -67,8 +87,28 @@ const MODULES = [
},
}),
...MODULES,
],
].filter(Boolean),
controllers: [],
providers: [],
})
export class AppModule {}
export class AppModule {
constructor(
@Inject(forwardRef(() => ConfigService))
private readonly configService: ConfigService
) {}
/**
* 9
*/
@Cron('0 0 9 * * *')
deleteLog() {
let retainDays = this.configService.get('server.logRetainDays');
const startDate = new Date(new Date().valueOf() - retainDays * ONE_DAY).valueOf();
do {
const filepath = path.join(__dirname, '../logs', getLogFileName(startDate, retainDays));
fs.removeSync(filepath);
retainDays -= 1;
} while (retainDays > 0);
}
}

View File

@ -0,0 +1,7 @@
import { dateFormat } from './date.helper';
const ONE_DAY = 24 * 60 * 60 * 1000;
export function getLogFileName(date: Date | number, offsetDay = 0) {
return dateFormat(new Date(new Date(date).valueOf() - offsetDay * ONE_DAY), 'yyyy-MM-dd') + '.log';
}

View File

@ -9,7 +9,9 @@ import helmet from 'helmet';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const app = await NestFactory.create(AppModule, {
logger: false,
});
const config = app.get(ConfigService);
app.enableCors();

View File

@ -273,12 +273,14 @@ importers:
'@nestjs/jwt': ^8.0.0
'@nestjs/passport': ^8.1.0
'@nestjs/platform-express': ^8.0.0
'@nestjs/schedule': ^2.0.1
'@nestjs/schematics': ^8.0.0
'@nestjs/testing': ^8.0.0
'@nestjs/typeorm': ^8.0.3
'@think/config': workspace:^1.0.0
'@think/constants': workspace:^1.0.0
'@think/domains': workspace:^1.0.0
'@types/cron': ^2.0.0
'@types/express': ^4.17.13
'@types/jest': 27.0.2
'@types/node': ^16.0.0
@ -297,14 +299,19 @@ importers:
eslint-plugin-simple-import-sort: ^7.0.0
express: ^4.17.2
express-rate-limit: ^6.2.0
fs-extra: ^10.0.0
helmet: ^5.0.2
ioredis: ^5.0.1
jest: ^27.2.5
lodash: ^4.17.21
mysql2: ^2.3.3
nestjs-pino: ^2.5.2
nuid: ^1.1.6
passport: ^0.5.2
passport-jwt: ^4.0.0
pino: ^7.11.0
pino-http: ^7.0.0
pino-pretty: ^7.6.1
prettier: ^2.3.2
prosemirror-model: ^1.16.1
reflect-metadata: ^0.1.13
@ -330,6 +337,7 @@ importers:
'@nestjs/jwt': 8.0.0_@nestjs+common@8.2.6
'@nestjs/passport': 8.1.0_469354efd308cbdee43194b5fd6a2c15
'@nestjs/platform-express': 8.2.6_732a54a2558f64827b8cc4f9baac4f1f
'@nestjs/schedule': 2.0.1_d86dd164971a98d71cc003a4f36ff106
'@nestjs/typeorm': 8.0.3_7d295ee70f5e60cc7bb984ed65836a4c
'@think/config': link:../config
'@think/constants': link:../constants
@ -341,13 +349,18 @@ importers:
date-fns: 2.28.0
express: 4.17.2
express-rate-limit: 6.2.0_express@4.17.2
fs-extra: 10.0.0
helmet: 5.0.2
ioredis: 5.0.1
lodash: 4.17.21
mysql2: 2.3.3
nestjs-pino: 2.5.2_61f1f701bb68c430ae2e1a4fec1d7a2d
nuid: 1.1.6
passport: 0.5.2
passport-jwt: 4.0.0
pino: 7.11.0
pino-http: 7.0.0
pino-pretty: 7.6.1
prosemirror-model: 1.16.1
reflect-metadata: 0.1.13
rimraf: 3.0.2
@ -360,6 +373,7 @@ importers:
'@nestjs/cli': 8.2.0_eslint@8.14.0
'@nestjs/schematics': 8.0.5_typescript@4.5.5
'@nestjs/testing': 8.2.6_b893ca8083ee374883b6d648098a9aeb
'@types/cron': 2.0.0
'@types/express': 4.17.13
'@types/jest': 27.0.2
'@types/node': 16.11.21
@ -2349,6 +2363,20 @@ packages:
tslib: 2.3.1
dev: false
/@nestjs/schedule/2.0.1_d86dd164971a98d71cc003a4f36ff106:
resolution: {integrity: sha512-NqiCk3P7HDMw55kpefNIzAAQEsP+6dDIXUt4/KQANtAZ+opdLzo8rkzI0j8vDqgYeTh+PKq+V6zwSRjR61xPAQ==}
peerDependencies:
'@nestjs/common': ^6.10.11 || ^7.0.0 || ^8.0.0
'@nestjs/core': ^7.0.0 || ^8.0.0
reflect-metadata: ^0.1.12
dependencies:
'@nestjs/common': 8.2.6_e2dd7264172553abc41c1a07952dd8ca
'@nestjs/core': 8.2.6_2d4ee36c4446df4873bb38fb1c4583da
cron: 2.0.0
reflect-metadata: 0.1.13
uuid: 8.3.2
dev: false
/@nestjs/schematics/8.0.5_chokidar@3.5.2+typescript@4.5.4:
resolution: {integrity: sha512-nK1hWQeLNbdhsiJDX/XJXLqq7nC6/xxC8CN+seFTQmly+H3gG2xaFnl6JPHURumuQaYJX8JEpC8m0+4tz+wvOg==}
peerDependencies:
@ -3075,6 +3103,13 @@ packages:
resolution: {integrity: sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==}
dev: true
/@types/cron/2.0.0:
resolution: {integrity: sha512-xZM08fqvwIXgghtPVkSPKNgC+JoMQ2OHazEvyTKnNf7aWu1aB6/4lBbQFrb03Td2cUGG7ITzMv3mFYnMu6xRaQ==}
dependencies:
'@types/luxon': 2.3.2
'@types/node': 17.0.35
dev: true
/@types/eslint-scope/3.7.3:
resolution: {integrity: sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==}
dependencies:
@ -3173,6 +3208,10 @@ packages:
resolution: {integrity: sha512-R83q/yPX2nIlo9D3WtSjyUDd57t8s+GVLaL8YIv3k7zMMWpYpOXqjJgrWp80qXUJB/a1t76nTyBpxrv0JNYaEg==}
dev: false
/@types/luxon/2.3.2:
resolution: {integrity: sha512-WOehptuhKIXukSUUkRgGbj2c997Uv/iUgYgII8U7XLJqq9W2oF0kQ6frEznRQbdurioz+L/cdaIm4GutTQfgmA==}
dev: true
/@types/mime/1.3.2:
resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==}
dev: true
@ -3857,6 +3896,16 @@ packages:
/argparse/2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
/args/5.0.3:
resolution: {integrity: sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==}
engines: {node: '>= 6.0.0'}
dependencies:
camelcase: 5.0.0
chalk: 2.4.2
leven: 2.1.0
mri: 1.1.4
dev: false
/array-flatten/1.1.1:
resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=}
dev: false
@ -3949,6 +3998,11 @@ packages:
resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
engines: {node: '>= 4.0.0'}
/atomic-sleep/1.0.0:
resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
engines: {node: '>=8.0.0'}
dev: false
/available-typed-arrays/1.0.5:
resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
engines: {node: '>= 0.4'}
@ -4273,6 +4327,11 @@ packages:
quick-lru: 4.0.1
dev: true
/camelcase/5.0.0:
resolution: {integrity: sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==}
engines: {node: '>=6'}
dev: false
/camelcase/5.3.1:
resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
engines: {node: '>=6'}
@ -4505,7 +4564,6 @@ packages:
/colorette/2.0.16:
resolution: {integrity: sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==}
dev: true
/colors/1.4.0:
resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==}
@ -4685,6 +4743,12 @@ packages:
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
dev: true
/cron/2.0.0:
resolution: {integrity: sha512-RPeRunBCFr/WEo7WLp8Jnm45F/ziGJiHVvVQEBSDTSGu6uHW49b2FOP2O14DcXlGJRLhwE7TIoDzHHK4KmlL6g==}
dependencies:
luxon: 1.28.0
dev: false
/cross-env/7.0.3:
resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
@ -4785,6 +4849,10 @@ packages:
resolution: {integrity: sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=}
dev: false
/dateformat/4.6.3:
resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==}
dev: false
/debug/2.6.9:
resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
dependencies:
@ -5022,6 +5090,15 @@ packages:
engines: {node: '>=10'}
dev: false
/duplexify/4.1.2:
resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==}
dependencies:
end-of-stream: 1.4.4
inherits: 2.0.4
readable-stream: 3.6.0
stream-shift: 1.0.1
dev: false
/eastasianwidth/0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: true
@ -5604,9 +5681,20 @@ packages:
/fast-levenshtein/2.0.6:
resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=}
/fast-redact/3.1.1:
resolution: {integrity: sha512-odVmjC8x8jNeMZ3C+rPMESzXVSEU8tSWSHv9HFxP2mm89G/1WwqhrerJDQm9Zus8X6aoRgQDThKqptdNA6bt+A==}
engines: {node: '>=6'}
dev: false
/fast-safe-stringify/2.1.1:
resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==}
/fast-url-parser/1.1.3:
resolution: {integrity: sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=}
dependencies:
punycode: 1.4.1
dev: false
/fastest-levenshtein/1.0.12:
resolution: {integrity: sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==}
dev: true
@ -7136,6 +7224,11 @@ packages:
- utf-8-validate
dev: true
/joycon/3.1.1:
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
engines: {node: '>=10'}
dev: false
/js-base64/2.6.4:
resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==}
dev: false
@ -7352,6 +7445,11 @@ packages:
ms: 2.1.3
dev: false
/leven/2.1.0:
resolution: {integrity: sha1-wuep93IJTe6dNCAq6KzORoeHVYA=}
engines: {node: '>=0.10.0'}
dev: false
/leven/3.1.0:
resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
engines: {node: '>=6'}
@ -7603,6 +7701,10 @@ packages:
dependencies:
yallist: 4.0.0
/luxon/1.28.0:
resolution: {integrity: sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ==}
dev: false
/macos-release/2.5.0:
resolution: {integrity: sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==}
engines: {node: '>=6'}
@ -7831,6 +7933,11 @@ packages:
hasBin: true
dev: false
/mri/1.1.4:
resolution: {integrity: sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==}
engines: {node: '>=4'}
dev: false
/ms/2.0.0:
resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=}
@ -7922,6 +8029,18 @@ packages:
/neo-async/2.6.2:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
/nestjs-pino/2.5.2_61f1f701bb68c430ae2e1a4fec1d7a2d:
resolution: {integrity: sha512-CJDiHRLJTucpgi5blY98Hh+2lj21fhKksyVR3R7ObOhM+/9tf+kmX02LuIL/eot+oYEPzLhHuTqVegL/kiDk6g==}
engines: {node: '>=12.17.0 || >=13.10.0'}
requiresBuild: true
peerDependencies:
'@nestjs/common': ^8.0.0
pino-http: ^6.4.0
dependencies:
'@nestjs/common': 8.2.6_e2dd7264172553abc41c1a07952dd8ca
pino-http: 7.0.0
dev: false
/netmask/2.0.2:
resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==}
engines: {node: '>= 0.4.0'}
@ -8131,6 +8250,10 @@ packages:
es-abstract: 1.19.1
dev: true
/on-exit-leak-free/0.2.0:
resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==}
dev: false
/on-finished/2.3.0:
resolution: {integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=}
engines: {node: '>= 0.8'}
@ -8448,6 +8571,66 @@ packages:
engines: {node: '>=0.10.0'}
dev: false
/pino-abstract-transport/0.5.0:
resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==}
dependencies:
duplexify: 4.1.2
split2: 4.1.0
dev: false
/pino-http/7.0.0:
resolution: {integrity: sha512-6qSe+hv/gkAakQOuM9gLcCaaNvG+qioC9Cgm5WflCIhYOgDNNT3NyDQ7p4kAuyVzN1B8RZfIU3u7SsFFEBVMGg==}
dependencies:
fast-url-parser: 1.1.3
get-caller-file: 2.0.5
pino: 7.11.0
pino-std-serializers: 5.2.0
dev: false
/pino-pretty/7.6.1:
resolution: {integrity: sha512-H7N6ZYkiyrfwBGW9CSjx0uyO9Q2Lyt73881+OTYk8v3TiTdgN92QHrWlEq/LeWw5XtDP64jeSk3mnc6T+xX9/w==}
hasBin: true
dependencies:
args: 5.0.3
colorette: 2.0.16
dateformat: 4.6.3
fast-safe-stringify: 2.1.1
joycon: 3.1.1
on-exit-leak-free: 0.2.0
pino-abstract-transport: 0.5.0
pump: 3.0.0
readable-stream: 3.6.0
rfdc: 1.3.0
secure-json-parse: 2.4.0
sonic-boom: 2.8.0
strip-json-comments: 3.1.1
dev: false
/pino-std-serializers/4.0.0:
resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==}
dev: false
/pino-std-serializers/5.2.0:
resolution: {integrity: sha512-tnEZoW/OpiQoL0laBC0CWJ0HPeISW2lrjUK0twYjqdGnggM8ZYk1XG8ucvjMCV0R7kMxO7Z63a27UhpkQw7Rrg==}
dev: false
/pino/7.11.0:
resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==}
hasBin: true
dependencies:
atomic-sleep: 1.0.0
fast-redact: 3.1.1
on-exit-leak-free: 0.2.0
pino-abstract-transport: 0.5.0
pino-std-serializers: 4.0.0
process-warning: 1.0.0
quick-format-unescaped: 4.0.4
real-require: 0.1.0
safe-stable-stringify: 2.3.1
sonic-boom: 2.8.0
thread-stream: 0.15.2
dev: false
/pirates/4.0.5:
resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==}
engines: {node: '>= 6'}
@ -8608,6 +8791,10 @@ packages:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
dev: false
/process-warning/1.0.0:
resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==}
dev: false
/prompts/2.4.2:
resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
engines: {node: '>= 6'}
@ -8768,6 +8955,10 @@ packages:
end-of-stream: 1.4.4
once: 1.4.0
/punycode/1.4.1:
resolution: {integrity: sha1-wNWmOycYgArY4esPpSachN1BhF4=}
dev: false
/punycode/2.1.1:
resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
engines: {node: '>=6'}
@ -8791,6 +8982,10 @@ packages:
/queue-microtask/1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
/quick-format-unescaped/4.0.4:
resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
dev: false
/quick-lru/4.0.1:
resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
engines: {node: '>=8'}
@ -9032,7 +9227,6 @@ packages:
inherits: 2.0.4
string_decoder: 1.3.0
util-deprecate: 1.0.2
dev: true
/readdirp/3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
@ -9040,6 +9234,11 @@ packages:
dependencies:
picomatch: 2.3.1
/real-require/0.1.0:
resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==}
engines: {node: '>= 12.13.0'}
dev: false
/rechoir/0.6.2:
resolution: {integrity: sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=}
engines: {node: '>= 0.10'}
@ -9190,7 +9389,6 @@ packages:
/rfdc/1.3.0:
resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==}
dev: true
/rimraf/2.7.1:
resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
@ -9264,6 +9462,11 @@ packages:
/safe-buffer/5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
/safe-stable-stringify/2.3.1:
resolution: {integrity: sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==}
engines: {node: '>=10'}
dev: false
/safer-buffer/2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
@ -9364,6 +9567,10 @@ packages:
get-ready: 1.0.0
dev: false
/secure-json-parse/2.4.0:
resolution: {integrity: sha512-Q5Z/97nbON5t/L/sH6mY2EacfjVGwrCcSi5D3btRO2GZ8pf1K1UN7Z9H5J57hjVU2Qzxr1xO+FmBhOvEkzCMmg==}
dev: false
/semver/5.7.1:
resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
hasBin: true
@ -9544,6 +9751,12 @@ packages:
smart-buffer: 4.2.0
dev: false
/sonic-boom/2.8.0:
resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==}
dependencies:
atomic-sleep: 1.0.0
dev: false
/source-list-map/2.0.1:
resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==}
dev: false
@ -9611,6 +9824,11 @@ packages:
hasBin: true
dev: true
/split2/4.1.0:
resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==}
engines: {node: '>= 10.x'}
dev: false
/sprintf-js/1.0.3:
resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=}
dev: true
@ -9646,6 +9864,10 @@ packages:
xtend: 4.0.2
dev: false
/stream-shift/1.0.1:
resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==}
dev: false
/stream-wormhole/1.1.0:
resolution: {integrity: sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==}
engines: {node: '>=4.0.0'}
@ -9724,7 +9946,6 @@ packages:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
dependencies:
safe-buffer: 5.2.1
dev: true
/stringify-object/3.3.0:
resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==}
@ -9778,7 +9999,6 @@ packages:
/strip-json-comments/3.1.1:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
dev: true
/style-loader/1.3.0:
resolution: {integrity: sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==}
@ -10210,6 +10430,12 @@ packages:
any-promise: 1.3.0
dev: false
/thread-stream/0.15.2:
resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==}
dependencies:
real-require: 0.1.0
dev: false
/throat/6.0.1:
resolution: {integrity: sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==}
dev: true