diff --git a/packages/bull/src/config/config.default.ts b/packages/bull/src/config/config.default.ts index e8dcb7ad25f6..9da80fd4f458 100644 --- a/packages/bull/src/config/config.default.ts +++ b/packages/bull/src/config/config.default.ts @@ -8,17 +8,16 @@ export const bull = { }, defaultConcurrency: 1, clearRepeatJobWhenStart: true, - contextLoggerApplyLogger: 'bullLogger', - contextLoggerFormat: info => { - const { jobId, from } = info.ctx; - return `${info.timestamp} ${info.LEVEL} ${info.pid} [${jobId} ${from.name}] ${info.message}`; - }, }; export const midwayLogger = { clients: { bullLogger: { fileLogName: 'midway-bull.log', + contextFormat: info => { + const { jobId, from } = info.ctx; + return `${info.timestamp} ${info.LEVEL} ${info.pid} [${jobId} ${from.name}] ${info.message}`; + }, }, }, }; diff --git a/packages/bull/src/framework.ts b/packages/bull/src/framework.ts index 9e6483a31b3c..43d27414b77f 100644 --- a/packages/bull/src/framework.ts +++ b/packages/bull/src/framework.ts @@ -5,8 +5,6 @@ import { Framework, Utils, MidwayInvokeForbiddenError, - ILogger, - Logger, DecoratorManager, MetadataManager, } from '@midwayjs/core'; @@ -44,9 +42,7 @@ export class BullFramework private bullDefaultConcurrency: number; private bullClearRepeatJobWhenStart: boolean; private queueMap: Map = new Map(); - - @Logger('bullLogger') - protected bullLogger: ILogger; + protected frameworkLoggerName = 'bullLogger'; async applicationInitialize(options: IMidwayBootstrapOptions) { this.app = {} as any; @@ -119,7 +115,7 @@ export class BullFramework ); this.queueMap.set(name, queue); queue.on('error', err => { - this.bullLogger.error(err); + this.logger.error(err); }); return queue; } diff --git a/packages/core/src/baseFramework.ts b/packages/core/src/baseFramework.ts index 4964746c135d..d0df681abfe7 100644 --- a/packages/core/src/baseFramework.ts +++ b/packages/core/src/baseFramework.ts @@ -48,10 +48,8 @@ export abstract class BaseFramework< public app: APP; public configurationOptions: OPT; protected logger: ILogger; - protected appLogger: ILogger; + protected frameworkLoggerName = 'appLogger'; protected defaultContext = {}; - protected contextLoggerApplyLogger: string; - protected contextLoggerFormat: any; protected middlewareManager = this.createMiddlewareManager(); protected filterManager = this.createFilterManager(); protected guardManager = this.createGuardManager(); @@ -81,13 +79,9 @@ export abstract class BaseFramework< constructor(readonly applicationContext: IMidwayGlobalContainer) {} @Init() - async init() { + protected async init() { this.configurationOptions = this.configure() ?? ({} as OPT); - this.contextLoggerApplyLogger = - this.configurationOptions.contextLoggerApplyLogger ?? 'appLogger'; - this.contextLoggerFormat = this.configurationOptions.contextLoggerFormat; this.logger = this.loggerService.getLogger('coreLogger'); - this.appLogger = this.loggerService.getLogger('appLogger'); return this; } @@ -97,7 +91,7 @@ export abstract class BaseFramework< ): void | Promise; public abstract run(): Promise; - isEnable(): boolean { + public isEnable(): boolean { return true; } @@ -133,7 +127,7 @@ export abstract class BaseFramework< } protected createContextLogger(ctx: CTX, name?: string): ILogger { - if (name && name !== 'appLogger') { + if (name && name !== this.frameworkLoggerName) { const appLogger = this.getLogger(name); let ctxLoggerCache = ctx.getAttr(REQUEST_CTX_LOGGER_CACHE_KEY) as Map< string, @@ -153,14 +147,12 @@ export abstract class BaseFramework< ctxLoggerCache.set(name, ctxLogger); return ctxLogger; } else { - const appLogger = this.getLogger(name ?? this.contextLoggerApplyLogger); // avoid maximum call stack size exceeded if (ctx['_logger']) { return ctx['_logger']; } - ctx['_logger'] = this.loggerService.createContextLogger(ctx, appLogger, { - contextFormat: this.contextLoggerFormat, - }); + const appLogger = this.getLogger(name); + ctx['_logger'] = this.loggerService.createContextLogger(ctx, appLogger); return ctx['_logger']; } } @@ -377,7 +369,7 @@ export abstract class BaseFramework< } public getLogger(name?: string) { - return this.loggerService.getLogger(name) ?? this.appLogger; + return this.loggerService.getLogger(name ?? this.frameworkLoggerName); } public getCoreLogger() { @@ -441,4 +433,12 @@ export abstract class BaseFramework< public getNamespace() { return this.namespace; } + + /** + * Set the default framework logger name + * @since 4.0.0 + */ + public setFrameworkLoggerName(loggerName: string) { + this.frameworkLoggerName = loggerName; + } } diff --git a/packages/core/src/interface.ts b/packages/core/src/interface.ts index 9edecfa500fd..a447e1bd0ed2 100644 --- a/packages/core/src/interface.ts +++ b/packages/core/src/interface.ts @@ -1089,6 +1089,7 @@ export interface IMidwayFramework< useGuard(guard: CommonGuardUnion): void; runGuard(ctx: CTX, supplierClz: new (...args) => any, methodName: string): Promise; getNamespace(): string; + setFrameworkLoggerName(name: string): void; } export interface MidwayAppInfo { diff --git a/packages/core/src/setup.ts b/packages/core/src/setup.ts index f86f022e77be..8fc4e7aca1fb 100644 --- a/packages/core/src/setup.ts +++ b/packages/core/src/setup.ts @@ -31,8 +31,9 @@ import { const debug = util.debuglog('midway:debug'); let stepIdx = 1; +let projectIdx = 1; function printStepDebugInfo(stepInfo: string) { - debug(`\n\nStep ${stepIdx++}: ${stepInfo}\n`); + debug(`\n\nProject ${projectIdx} - Step ${stepIdx++}: ${stepInfo}\n`); } /** @@ -139,17 +140,25 @@ export async function initializeGlobalApplicationContext( export async function destroyGlobalApplicationContext( applicationContext: IMidwayGlobalContainer ) { + printStepDebugInfo('Ready to destroy applicationContext'); const loggerService = await applicationContext.getAsync(MidwayLoggerService); const loggerFactory = loggerService.getCurrentLoggerFactory(); + printStepDebugInfo('Stopping lifecycle'); // stop lifecycle const lifecycleService = await applicationContext.getAsync( MidwayLifeCycleService ); await lifecycleService.stop(); + + printStepDebugInfo('Stopping applicationContext'); // stop container await applicationContext.stop(); + + printStepDebugInfo('Closing loggerFactory'); loggerFactory.close(); + + printStepDebugInfo('Cleaning performance manager'); MidwayPerformanceManager.cleanAll(); global['MIDWAY_APPLICATION_CONTEXT'] = undefined; @@ -157,6 +166,7 @@ export async function destroyGlobalApplicationContext( // reset counter stepIdx = 1; + projectIdx++; } /** diff --git a/packages/core/test/baseFramework.test.ts b/packages/core/test/baseFramework.test.ts index 72a6b16c2693..d2ad0d51296d 100644 --- a/packages/core/test/baseFramework.test.ts +++ b/packages/core/test/baseFramework.test.ts @@ -833,15 +833,14 @@ describe('/test/baseFramework.test.ts', () => { appDir, 'src' ), { - custom: { - contextLoggerApplyLogger: 'customFrameworkLogger', - contextLoggerFormat: info => { - return `[custom ctx] ${info.message}`; - }, - }, + custom: {}, midwayLogger: { clients: { - customFrameworkLogger: {}, + customFrameworkLogger: { + contextFormat: info => { + return `[custom ctx] ${info.message}`; + }, + }, customLogger: { format: info => { return `[new custom] ${info.message}`; @@ -860,7 +859,7 @@ describe('/test/baseFramework.test.ts', () => { const mainFramework = midwayFrameworkService.getMainFramework(); const ctx = mainFramework.getApplication().createAnonymousContext(); expect(ctx.logger.info('hello world')).toEqual('[custom ctx] hello world'); - expect(ctx.getLogger('appLogger').info('hello world')).toEqual('[custom ctx] hello world'); + expect(ctx.getLogger('customFrameworkLogger').info('hello world')).toEqual('[custom ctx] hello world'); expect(ctx.getLogger('customLogger').info('hello world')).toEqual('[new custom ctx] hello world'); expect(mainFramework.getLogger('customLogger').info('hello world')).toEqual('[new custom] hello world'); }); diff --git a/packages/core/test/fixtures/base-app-custom-framework-logger/src/framework.ts b/packages/core/test/fixtures/base-app-custom-framework-logger/src/framework.ts index d82659aa4a4e..6894ebebd0e8 100644 --- a/packages/core/test/fixtures/base-app-custom-framework-logger/src/framework.ts +++ b/packages/core/test/fixtures/base-app-custom-framework-logger/src/framework.ts @@ -2,6 +2,7 @@ import { BaseFramework, Framework, IMidwayBootstrapOptions } from '../../../../s @Framework() export class CustomFramework extends BaseFramework { + frameworkLoggerName = 'customFrameworkLogger'; async applicationInitialize(options: IMidwayBootstrapOptions) { this.app = {}; } @@ -11,7 +12,7 @@ export class CustomFramework extends BaseFramework { } run(): Promise { - this.app.getCoreLogger().info('run custom framework'); + this.logger.info('run custom framework'); return Promise.resolve(undefined); } } diff --git a/packages/cron/src/configuration.ts b/packages/cron/src/configuration.ts index d7dd2d16e597..6abcd84b1b7d 100644 --- a/packages/cron/src/configuration.ts +++ b/packages/cron/src/configuration.ts @@ -14,7 +14,6 @@ import { JobNameOrClz } from './interface'; default: { cron: { defaultCronJobOptions: {}, - contextLoggerApplyLogger: 'cronLogger', }, midwayLogger: { clients: { diff --git a/packages/cron/src/framework.ts b/packages/cron/src/framework.ts index e2a4e9520898..ce7bd4c09c4b 100644 --- a/packages/cron/src/framework.ts +++ b/packages/cron/src/framework.ts @@ -22,6 +22,7 @@ import { CRON_JOB_KEY } from './constants'; export class CronFramework extends BaseFramework { private defaultCronJobConfig: CronOptions; private jobs: Map = new Map(); + protected frameworkLoggerName = 'cronLogger'; async applicationInitialize(options: IMidwayBootstrapOptions) { this.app = {} as any; diff --git a/packages/grpc/src/configuration.ts b/packages/grpc/src/configuration.ts index cd52a7e5ed7e..974241dbcb91 100644 --- a/packages/grpc/src/configuration.ts +++ b/packages/grpc/src/configuration.ts @@ -17,6 +17,13 @@ import { GRPCClients } from './comsumer/clients'; default: { grpc: {}, grpcServer: {}, + midwayLogger: { + clients: { + grpcLogger: { + fileLogName: 'midway-grpc.log', + }, + }, + }, }, }, ], diff --git a/packages/grpc/src/provider/framework.ts b/packages/grpc/src/provider/framework.ts index 1d6e782abcd5..0ecf2c1d8815 100644 --- a/packages/grpc/src/provider/framework.ts +++ b/packages/grpc/src/provider/framework.ts @@ -8,7 +8,6 @@ import { ServerUnaryCall, } from '@grpc/grpc-js'; import { - Config, Framework, GRPCMetadata, GrpcStreamTypeEnum, @@ -40,9 +39,7 @@ export class MidwayGRPCFramework extends BaseFramework< > { public app: IMidwayGRPCApplication; private server: Server; - - @Config() - providerConfig; + protected frameworkLoggerName = 'grpcLogger'; configure() { return this.configService.getConfiguration('grpcServer'); @@ -231,7 +228,6 @@ export class MidwayGRPCFramework extends BaseFramework< reject(err); } - this.server.start(); this.logger.info(`Server port = ${bindPort} start success`); resolve(); } diff --git a/packages/kafka/src/configuration.ts b/packages/kafka/src/configuration.ts index d148ac3bd0b2..174084116e84 100644 --- a/packages/kafka/src/configuration.ts +++ b/packages/kafka/src/configuration.ts @@ -5,9 +5,7 @@ import { Configuration } from '@midwayjs/core'; importConfigs: [ { default: { - kafka: { - contextLoggerApplyLogger: 'kafkaLogger', - }, + kafka: {}, midwayLogger: { clients: { kafkaLogger: { diff --git a/packages/kafka/src/framework.ts b/packages/kafka/src/framework.ts index 14f7dc325c48..ec0ffc8de250 100644 --- a/packages/kafka/src/framework.ts +++ b/packages/kafka/src/framework.ts @@ -1,26 +1,16 @@ import { BaseFramework, - ConsumerMetadata, Framework, - MSListenerType, - MS_CONSUMER_KEY, - MidwayInvokeForbiddenError, MetadataManager, DecoratorManager, - listPropertyDataFromClass, - ILogger, - Logger, TypedResourceManager, MidwayCommonError, } from '@midwayjs/core'; import { IKafkaConsumerInitOptions, IKafkaConsumer, - IMidwayConsumerConfig, - IMidwayKafkaApplication, IMidwayKafkaContext, } from './interface'; -import { KafkaConsumerServer } from './kafka'; import { KAFKA_DECORATOR_KEY } from './decorator'; import { ConsumerRunConfig, Kafka, Consumer, logLevel } from 'kafkajs'; import { KafkaManager } from './manager'; @@ -52,16 +42,15 @@ export class MidwayKafkaFramework extends BaseFramework< IKafkaConsumerInitOptions, IKafkaConsumer >; + protected frameworkLoggerName = 'kafkaLogger'; + configure() { return this.configService.getConfiguration('kafka'); } - @Logger('kafkaLogger') - kafKaLogger: ILogger; - async applicationInitialize() { this.LogCreator = logLevel => { - const logger = this.kafKaLogger; + const logger = this.logger; return ({ level, log }) => { const lvl = toMidwayLogLevel(level); @@ -70,229 +59,92 @@ export class MidwayKafkaFramework extends BaseFramework< }; }; - // Create a connection manager - if (this.configurationOptions['kafkaConfig']) { - this.app = new KafkaConsumerServer({ - logger: this.kafKaLogger, - ...this.configurationOptions, - }) as unknown as IMidwayKafkaApplication; - } else { - this.app = {} as any; - } + this.app = {} as any; } public async run(): Promise { - if (this.configurationOptions['kafkaConfig']) { - try { - await this.app.connect( - this.configurationOptions.kafkaConfig, - this.configurationOptions.consumerConfig - ); - await this.loadLegacySubscriber(); - this.kafKaLogger.info('Kafka consumer server start success'); - } catch (error) { - this.kafKaLogger.error('Kafka consumer connect fail', error); - await this.app.closeConnection(); - } - } else { - const { consumer } = this.configurationOptions; - if (!consumer) return; - const subscriberMap = {}; - // find subscriber - const subscriberModules = - DecoratorManager.listModule(KAFKA_DECORATOR_KEY); - for (const subscriberModule of subscriberModules) { - const subscriberName = MetadataManager.getOwnMetadata( - KAFKA_DECORATOR_KEY, - subscriberModule - ) as string; - subscriberMap[subscriberName] = subscriberModule; - } - - this.typedResourceManager = new TypedResourceManager< - Consumer, - IKafkaConsumerInitOptions, - IKafkaConsumer - >({ - initializeValue: consumer, - initializeClzProvider: subscriberMap, - resourceInitialize: async (resourceInitializeConfig, resourceName) => { - let client; - if (resourceInitializeConfig.kafkaInstanceRef) { - client = KafkaManager.getInstance().getKafkaInstance( - resourceInitializeConfig.kafkaInstanceRef - ); - if (!client) { - throw new MidwayCommonError( - `kafka instance ${resourceInitializeConfig.kafkaInstanceRef} not found` - ); - } - } else { - client = new Kafka({ - logCreator: this.LogCreator, - ...resourceInitializeConfig.connectionOptions, - }); - KafkaManager.getInstance().addKafkaInstance(resourceName, client); - } - - const consumer = client.consumer( - resourceInitializeConfig.consumerOptions - ); - await consumer.connect(); - await consumer.subscribe(resourceInitializeConfig.subscribeOptions); - return consumer; - }, - resourceBinding: async ( - ClzProvider, - resourceInitializeConfig, - consumer - ): Promise => { - const runMethod = ClzProvider.prototype['eachBatch'] - ? 'eachBatch' - : 'eachMessage'; - const runConfig = { - ...resourceInitializeConfig.consumerRunConfig, - }; - runConfig[runMethod] = async payload => { - const ctx = this.app.createAnonymousContext(); - const fn = await this.applyMiddleware(async ctx => { - ctx.payload = payload; - ctx.consumer = consumer; - const instance = await ctx.requestContext.getAsync(ClzProvider); - return await instance[runMethod].call(instance, payload, ctx); - }); - return await fn(ctx); - }; - return runConfig; - }, - resourceStart: async ( - resource: Consumer, - resourceInitializeConfig, - resourceBindingResult: ConsumerRunConfig - ) => { - await resource.run(resourceBindingResult); - }, - resourceDestroy: async (resource: Consumer) => { - await resource.disconnect(); - }, - }); - await this.typedResourceManager.init(); - await this.typedResourceManager.start(); + const { consumer } = this.configurationOptions; + if (!consumer) return; + const subscriberMap = {}; + // find subscriber + const subscriberModules = DecoratorManager.listModule(KAFKA_DECORATOR_KEY); + for (const subscriberModule of subscriberModules) { + const subscriberName = MetadataManager.getOwnMetadata( + KAFKA_DECORATOR_KEY, + subscriberModule + ) as string; + subscriberMap[subscriberName] = subscriberModule; } - } - - private async loadLegacySubscriber() { - const subscriberModules = DecoratorManager.listModule( - MS_CONSUMER_KEY, - module => { - const metadata: ConsumerMetadata.ConsumerMetadata = - MetadataManager.getOwnMetadata(MS_CONSUMER_KEY, module); - return metadata.type === MSListenerType.KAFKA; - } - ); - for (const module of subscriberModules) { - const data = listPropertyDataFromClass(MS_CONSUMER_KEY, module); - const topicTitles = [...new Set(data.map(e => e[0].topic))]; - const midwayConsumerConfigs: IMidwayConsumerConfig[] = topicTitles.map( - e => { - const midwayConsumerConfig: IMidwayConsumerConfig = { - topic: e, - subscription: {}, - runConfig: {}, - }; - const consumerParams = data - .map(value => { - if (value[0].topic === midwayConsumerConfig.topic) { - return Object.assign(midwayConsumerConfig, value[0]); - } - }) - .filter(e => e && true); - - if (consumerParams && Object.keys(consumerParams[0]).length > 0) { - return consumerParams[0]; + this.typedResourceManager = new TypedResourceManager< + Consumer, + IKafkaConsumerInitOptions, + IKafkaConsumer + >({ + initializeValue: consumer, + initializeClzProvider: subscriberMap, + resourceInitialize: async (resourceInitializeConfig, resourceName) => { + let client; + if (resourceInitializeConfig.kafkaInstanceRef) { + client = KafkaManager.getInstance().getKafkaInstance( + resourceInitializeConfig.kafkaInstanceRef + ); + if (!client) { + throw new MidwayCommonError( + `kafka instance ${resourceInitializeConfig.kafkaInstanceRef} not found` + ); } - return midwayConsumerConfig; + } else { + client = new Kafka({ + logCreator: this.LogCreator, + ...resourceInitializeConfig.connectionOptions, + }); + KafkaManager.getInstance().addKafkaInstance(resourceName, client); } - ); - midwayConsumerConfigs.forEach( - async (e: { subscription: any; runConfig: any }) => { - await this.app.connection.subscribe( - Object.assign( - { - topics: topicTitles, - }, - e.subscription - ) - ); - await this.app.connection.run( - Object.assign(e.runConfig, { - eachMessage: async payload => { - const { topic, partition, message } = payload; - let propertyKey: string | number; - for (const methodBindListeners of data) { - for (const listenerOptions of methodBindListeners) { - if (topic === listenerOptions.topic) { - propertyKey = listenerOptions.propertyKey; - const ctx = { - topic: topic, - partition: partition, - message: message, - commitOffsets: (offset: any) => { - return this.app.connection.commitOffsets([ - { - topic: topic, - partition: partition, - offset, - }, - ]); - }, - payload, - consumer: this.app.connection, - } as unknown as IMidwayKafkaContext; - this.app.createAnonymousContext(ctx); - if (typeof propertyKey === 'string') { - const isPassed = await this.app - .getFramework() - .runGuard(ctx, module, propertyKey); - if (!isPassed) { - throw new MidwayInvokeForbiddenError( - propertyKey, - module - ); - } - } - const ins = await ctx.requestContext.getAsync(module); - const fn = await this.applyMiddleware(async () => { - return await ins[propertyKey].call(ins, message); - }); - try { - const result = await fn(ctx); - // 返回为undefined,下面永远不会执行 - if (result) { - const res = await this.app.connection.commitOffsets([ - { - topic: topic, - partition: partition, - offset: message.offset, - }, - ]); - return res; - } - } catch (error) { - // 记录偏移量提交的异常情况 - this.logger.error(error); - } - } - } - } - }, - }) - ); - } - ); - } + const consumer = client.consumer( + resourceInitializeConfig.consumerOptions + ); + await consumer.connect(); + await consumer.subscribe(resourceInitializeConfig.subscribeOptions); + return consumer; + }, + resourceBinding: async ( + ClzProvider, + resourceInitializeConfig, + consumer + ): Promise => { + const runMethod = ClzProvider.prototype['eachBatch'] + ? 'eachBatch' + : 'eachMessage'; + const runConfig = { + ...resourceInitializeConfig.consumerRunConfig, + }; + runConfig[runMethod] = async payload => { + const ctx = this.app.createAnonymousContext(); + const fn = await this.applyMiddleware(async ctx => { + ctx.payload = payload; + ctx.consumer = consumer; + const instance = await ctx.requestContext.getAsync(ClzProvider); + return await instance[runMethod].call(instance, payload, ctx); + }); + return await fn(ctx); + }; + return runConfig; + }, + resourceStart: async ( + resource: Consumer, + resourceInitializeConfig, + resourceBindingResult: ConsumerRunConfig + ) => { + await resource.run(resourceBindingResult); + }, + resourceDestroy: async (resource: Consumer) => { + await resource.disconnect(); + }, + }); + await this.typedResourceManager.init(); + await this.typedResourceManager.start(); } public getConsumer(subscriberNameOrInstanceName: string) { diff --git a/packages/kafka/src/kafka.ts b/packages/kafka/src/kafka.ts deleted file mode 100644 index 90c9317ef249..000000000000 --- a/packages/kafka/src/kafka.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { Consumer, ConsumerConfig, Kafka, KafkaConfig } from 'kafkajs'; -import { ILogger } from '@midwayjs/core'; -import { EventEmitter } from 'stream'; - -export class KafkaConsumerServer extends EventEmitter { - protected loggers: ILogger; - public connection: Consumer = null; - - constructor(options: any = {}) { - super(); - this.loggers = options.logger; - this.bindError(); - } - - bindError() { - this.on('error', err => { - this.loggers.error(err); - }); - } - - async connect(options: KafkaConfig, consumerOptions: ConsumerConfig) { - this.connection = new Kafka(options).consumer(consumerOptions); - this.connection.on('consumer.connect', () => { - this.loggers.info('Kafka consumer connected!'); - }); - this.connection.on('consumer.disconnect', err => { - if (err) { - this.loggers.error('Kafka consumer disconnected', err); - } else { - this.loggers.info('Kafka consumer disconnected!'); - } - }); - } - - protected async closeConnection() { - try { - if (this.connection) { - await this.connection.disconnect(); - } - this.loggers.debug('Kafka consumer connection close success'); - } catch (err) { - this.loggers.error('Kafka consumer connection close error', err); - } finally { - this.connection = null; - } - } - - async close() { - this.loggers.debug('Kafka consumer will be close'); - await this.closeConnection(); - } -} diff --git a/packages/kafka/test/index.test.ts b/packages/kafka/test/index.test.ts index c3b67e67554b..4e68de7c3edb 100644 --- a/packages/kafka/test/index.test.ts +++ b/packages/kafka/test/index.test.ts @@ -1,158 +1,11 @@ import { createKafkaProducer, createLightApp } from '@midwayjs/mock'; -import { closeApp, creatApp } from './utils'; +import { closeApp } from './utils'; import { sleep, Inject } from '@midwayjs/core'; import { IKafkaConsumer, KafkaConsumer, Context } from '../src'; import * as Kafka from '../src'; import { EachMessagePayload, Kafka as KafkaJs, Partitioners } from 'kafkajs'; describe('/test/index.test.ts', () => { - it('should test create producer with method', async () => { - // create a producer - const producer = await createKafkaProducer({ - kafkaConfig: { - clientId: 'my-app', - brokers: [process.env.KAFKA_BROKERS as string || 'localhost:9092'], - }, - mock: false, - }); - await producer.connect(); - const app = await creatApp('base-app', { - import: [ - require('../src') - ] - }); - await sleep(3000); - await producer.send({ - // compression: CompressionTypes.GZIP, - topic: 'topic-test', - messages: [ - { key: 'message-key1', value: 'hello consumer!' }, - { key: 'message-key2', value: 'hello consumer!!' }, - ], - }); - await sleep(3000); - await producer.disconnect(); - await closeApp(app); - }); - // 多个同名主题时的消费情况 - it('should test create producer and consumer with the multi same topic', async () => { - // create a producer - const producer = await createKafkaProducer({ - kafkaConfig: { - clientId: 'my-app', - brokers: [process.env.KAFKA_BROKERS as string || 'localhost:9092'], - }, - mock: false, - }); - await producer.connect(); - const app = await creatApp('base-app-multi-some-topic', { - import: [ - require('../src') - ] - }); - // 采用fromBeginning为false,使用最新的偏移量的时候,因为分组可能会出现rebalancing, a rejoin is needed需要时间, - // 生产者需要在消费者后发送消息一段时间后保证可以收取到信息,至于在发布信息在前或者在后都没影响。 - // error: The group is rebalancing, so a rejoin is needed - await sleep(3000); - await producer.send({ - // compression: CompressionTypes.GZIP, - topic: 'topic-test', - messages: [{ key: 'message-key1', value: 'hello consumer 111 !' }], - }); - await sleep(3000); - await producer.disconnect(); - - expect(app.getAttr('total')).toEqual(2); - await closeApp(app); - }); - // 多个不同主题时的消费情况 - it('should test create producer and consumer with the multi different topic', async () => { - // create a producer - const producer = await createKafkaProducer({ - kafkaConfig: { - clientId: 'my-app', - brokers: [process.env.KAFKA_BROKERS as string || 'localhost:9092'], - }, - mock: false, - }); - await producer.connect(); - const app = await creatApp('base-app-multi-different-topic', { - import: [ - require('../src') - ] - }); - await sleep(3000); - // send data to topic - await producer.send({ - // compression: CompressionTypes.GZIP, - topic: 'topic-test', - messages: [{ key: 'message-key1', value: 'hello consumer 11 !' }], - }); - await producer.send({ - // compression: CompressionTypes.GZIP, - topic: 'topic-test2', - messages: [{ key: 'message-key2', value: 'hello consumer 22 !' }], - }); - await sleep(3000); - expect(app.getAttr('total')).toEqual(2); - await producer.disconnect(); - await closeApp(app); - }); - - it('should test create producer and consumer with auto commit', async () => { - // create a producer - const producer = await createKafkaProducer({ - kafkaConfig: { - clientId: 'my-app', - brokers: [process.env.KAFKA_BROKERS as string || 'localhost:9092'], - }, - mock: false, - }); - await producer.connect(); - const app = await creatApp('base-app-auto-commit', { - import: [ - require('../src') - ] - }); - await sleep(3000); - // send data to topic - await producer.send({ - topic: 'topic-test', - messages: [{ key: 'message-key1', value: 'hello consumer 11 !' }], - }); - await sleep(3000); - await producer.disconnect(); - expect(app.getAttr('total')).toEqual(1); - await closeApp(app); - }); - it('should test create producer and consumer with manual committing', async () => { - // create a producer - const producer = await createKafkaProducer({ - kafkaConfig: { - clientId: 'my-app', - brokers: [process.env.KAFKA_BROKERS as string || 'localhost:9092'], - }, - mock: false, - }); - await producer.connect(); - let app = await creatApp('base-app-manual-committing', { - import: [ - require('../src') - ] - }); - await sleep(3000); - // send data to topic - await producer.send({ - topic: 'topic-test0', - messages: [{ key: 'message-key1', value: 'hello consumer 11 !' }], - }); - await sleep(3000); - await producer.disconnect(); - expect([1, 2]).toContain(app.getAttr('total')) - await closeApp(app); - }); - - describe('new features', () => { it('should test create producer and consumer with the multi different topic', async () => { let total = 0; diff --git a/packages/mqtt/src/configuration.ts b/packages/mqtt/src/configuration.ts index c32874653af0..549d027ac501 100644 --- a/packages/mqtt/src/configuration.ts +++ b/packages/mqtt/src/configuration.ts @@ -10,7 +10,6 @@ import { MqttProducerFactory } from './service'; mqtt: { pub: {}, sub: {}, - contextLoggerApplyLogger: 'mqttLogger', }, midwayLogger: { clients: { diff --git a/packages/mqtt/src/framework.ts b/packages/mqtt/src/framework.ts index 97c95e5562e2..bcce870cd1f2 100644 --- a/packages/mqtt/src/framework.ts +++ b/packages/mqtt/src/framework.ts @@ -1,7 +1,6 @@ import { Framework, BaseFramework, - Logger, DecoratorManager, MetadataManager, } from '@midwayjs/core'; @@ -23,9 +22,7 @@ export class MidwayMQTTFramework extends BaseFramework< > { public app: IMidwayMQTTApplication; protected subscriberMap: Map = new Map(); - - @Logger('mqttLogger') - mqttLogger; + protected frameworkLoggerName = 'mqttLogger'; configure() { return this.configService.getConfiguration('mqtt'); @@ -39,7 +36,7 @@ export class MidwayMQTTFramework extends BaseFramework< const { sub } = this.configurationOptions; if (Object.keys(sub || {}).length === 0) { - this.mqttLogger.info( + this.logger.info( '[midway-mqtt] Not found consumer config, skip init consumer' ); } @@ -68,7 +65,7 @@ export class MidwayMQTTFramework extends BaseFramework< protected async beforeStop(): Promise { for (const [name, consumer] of this.subscriberMap) { await consumer.endAsync(); - this.mqttLogger.info(`[midway-mqtt] subscriber: ${name} is closed`); + this.logger.info(`[midway-mqtt] subscriber: ${name} is closed`); } } @@ -106,7 +103,7 @@ export class MidwayMQTTFramework extends BaseFramework< resolve(client); }); client.on('error', err => { - this.mqttLogger.error(err); + this.logger.error(err); }); }); diff --git a/packages/socketio/test/index.test.ts b/packages/socketio/test/index.test.ts index c7026546a04a..12a85baf4ed5 100644 --- a/packages/socketio/test/index.test.ts +++ b/packages/socketio/test/index.test.ts @@ -147,15 +147,14 @@ describe('/test/index.test.ts', () => { port: 3000, }); - await new Promise(async (resolve, reject) => { + const promise = new Promise((resolve) => { client.on('connect_error', err => { console.log(err); resolve(); }); - client.send('my', 1, 2, 3); - await closeApp(app); - }); - + }) + client.send('my', 1, 2, 3); + await Promise.all([closeApp(app), promise]); await client.close(); }); diff --git a/packages/web-express/src/config/config.default.ts b/packages/web-express/src/config/config.default.ts index 5eec9b93ddf8..009fb63396fc 100644 --- a/packages/web-express/src/config/config.default.ts +++ b/packages/web-express/src/config/config.default.ts @@ -6,26 +6,32 @@ import { } from 'body-parser'; import { CookieOptions } from 'express'; -export const express = { - contextLoggerFormat: info => { - const req = info.ctx; - // format: '[$userId/$ip/$traceId/$use_ms $method $url]' - const userId = req?.['session']?.['userId'] || '-'; - const traceId = req.traceId ?? '-'; - const use = Date.now() - info.ctx.startTime; - const label = - userId + - '/' + - req.ip + - '/' + - traceId + - '/' + - use + - 'ms ' + - req.method + - ' ' + - req.url; - return `${info.timestamp} ${info.LEVEL} ${info.pid} [${label}] ${info.message}`; +export const express = {}; + +export const midwayLogger = { + clients: { + appLogger: { + contextFormat: info => { + const req = info.ctx; + // format: '[$userId/$ip/$traceId/$use_ms $method $url]' + const userId = req?.['session']?.['userId'] || '-'; + const traceId = req.traceId ?? '-'; + const use = Date.now() - info.ctx.startTime; + const label = + userId + + '/' + + req.ip + + '/' + + traceId + + '/' + + use + + 'ms ' + + req.method + + ' ' + + req.url; + return `${info.timestamp} ${info.LEVEL} ${info.pid} [${label}] ${info.message}`; + }, + }, }, }; diff --git a/packages/web-koa/src/config/config.default.ts b/packages/web-koa/src/config/config.default.ts index bec259a940e4..dbbf0a39c7de 100644 --- a/packages/web-koa/src/config/config.default.ts +++ b/packages/web-koa/src/config/config.default.ts @@ -2,29 +2,36 @@ * koa server options */ export const koa = { - contextLoggerFormat: info => { - const ctx = info.ctx; - // format: '[$userId/$ip/$traceId/$use_ms $method $url]' - const userId = ctx.userId || '-'; - const traceId = ctx.traceId ?? ctx.tracer?.traceId ?? '-'; - const use = Date.now() - ctx.startTime; - const label = - userId + - '/' + - ctx.ip + - '/' + - traceId + - '/' + - use + - 'ms ' + - ctx.method + - ' ' + - ctx.url; - return `${info.timestamp} ${info.LEVEL} ${info.pid} [${label}] ${info.message}`; - }, serverTimeout: 2 * 60 * 1000, }; +export const midwayLogger = { + clients: { + appLogger: { + contextLoggerFormat: info => { + const ctx = info.ctx; + // format: '[$userId/$ip/$traceId/$use_ms $method $url]' + const userId = ctx.userId || '-'; + const traceId = ctx.traceId ?? ctx.tracer?.traceId ?? '-'; + const use = Date.now() - ctx.startTime; + const label = + userId + + '/' + + ctx.ip + + '/' + + traceId + + '/' + + use + + 'ms ' + + ctx.method + + ' ' + + ctx.url; + return `${info.timestamp} ${info.LEVEL} ${info.pid} [${label}] ${info.message}`; + }, + }, + }, +}; + /** * The key that signing cookies. It can contain multiple keys seperated by `,`. * @member {String} Config#keys diff --git a/packages/web/src/config/config.default.ts b/packages/web/src/config/config.default.ts index f01f7dd775cf..b59cdb2c66d5 100644 --- a/packages/web/src/config/config.default.ts +++ b/packages/web/src/config/config.default.ts @@ -20,6 +20,26 @@ export default appInfo => { appLogger: { fileLogName: 'midway-web.log', aliasName: 'logger', + contextFormat: info => { + const ctx = info.ctx; + // format: '[$userId/$ip/$traceId/$use_ms $method $url]' + const userId = ctx.userId || '-'; + const traceId = ctx.traceId ?? ctx.tracer?.traceId ?? '-'; + const use = Date.now() - ctx.startTime; + const label = + userId + + '/' + + ctx.ip + + '/' + + traceId + + '/' + + use + + 'ms ' + + ctx.method + + ' ' + + ctx.url; + return `${info.timestamp} ${info.LEVEL} ${info.pid} [${label}] ${info.message}`; + }, }, agentLogger: { fileLogName: 'midway-agent.log', @@ -30,26 +50,6 @@ export default appInfo => { exports.egg = { dumpConfig: true, - contextLoggerFormat: info => { - const ctx = info.ctx; - // format: '[$userId/$ip/$traceId/$use_ms $method $url]' - const userId = ctx.userId || '-'; - const traceId = ctx.traceId ?? ctx.tracer?.traceId ?? '-'; - const use = Date.now() - ctx.startTime; - const label = - userId + - '/' + - ctx.ip + - '/' + - traceId + - '/' + - use + - 'ms ' + - ctx.method + - ' ' + - ctx.url; - return `${info.timestamp} ${info.LEVEL} ${info.pid} [${label}] ${info.message}`; - }, queryParseMode: 'extended', }; diff --git a/packages/web/src/framework/web.ts b/packages/web/src/framework/web.ts index 7e89f4b697ea..54f45c8b6b51 100644 --- a/packages/web/src/framework/web.ts +++ b/packages/web/src/framework/web.ts @@ -291,16 +291,18 @@ export class MidwayWebFramework extends BaseFramework< if (name) { return this.app.loggers[name] || loggers.getLogger(name); } - return this.appLogger; + return this.loggerService.getLogger(this.frameworkLoggerName); } public setContextLoggerClass() { // eslint-disable-next-line @typescript-eslint/no-this-alias - const self = this; + const contextFormat = this.configService.getConfiguration( + 'midwayLogger.clients.appLogger.contextFormat' + ); class MidwayEggContextLogger extends MidwayContextLogger { constructor(ctx, appLogger) { super(ctx, appLogger, { - contextFormat: self.contextLoggerFormat, + contextFormat, }); } } diff --git a/packages/web/test/feature.test.ts b/packages/web/test/feature.test.ts index 9fd988767728..45b6ea0a227c 100644 --- a/packages/web/test/feature.test.ts +++ b/packages/web/test/feature.test.ts @@ -92,7 +92,7 @@ describe('/test/feature.test.ts', () => { expect(result.status).toEqual(200); expect(result.text).toEqual('hello world,harry'); await sleep(); - expect(matchContentTimes(join(app.getAppDir(), 'logs', 'ali-demo', 'midway-web.log'), 'GET abcde')).toEqual(4); + expect(matchContentTimes(join(app.getAppDir(), 'logs', 'ali-demo', 'midway-web.log'), 'GET abcde')).toEqual(5); expect(matchContentTimes(join(app.getAppDir(), 'logs', 'ali-demo', 'midway-web.log'), 'abcde] custom label')).toEqual(1); await closeApp(app); }); diff --git a/packages/web/test/fixtures/feature/base-app-set-ctx-logger/src/config/config.default.ts b/packages/web/test/fixtures/feature/base-app-set-ctx-logger/src/config/config.default.ts index 94853e95c9fc..0115d4f2101f 100644 --- a/packages/web/test/fixtures/feature/base-app-set-ctx-logger/src/config/config.default.ts +++ b/packages/web/test/fixtures/feature/base-app-set-ctx-logger/src/config/config.default.ts @@ -11,8 +11,15 @@ export const midwayFeature = { } export const egg = { - contextLoggerFormat: info => { - const ctx = info.ctx; - return `${info.timestamp} ${info.LEVEL} ${info.pid} [${Date.now() - ctx.startTime}ms ${ctx.method} abcde] ${info.message}`; - }, +} + +export const midwayLogger = { + clients: { + appLogger: { + contextFormat: info => { + const ctx = info.ctx; + return `${info.timestamp} ${info.LEVEL} ${info.pid} [${Date.now() - ctx.startTime}ms ${ctx.method} abcde] ${info.message}`; + }, + } + } } diff --git a/packages/ws/src/configuration.ts b/packages/ws/src/configuration.ts index fa250e3135bb..26c53e4c55ef 100644 --- a/packages/ws/src/configuration.ts +++ b/packages/ws/src/configuration.ts @@ -9,6 +9,13 @@ import { Configuration } from '@midwayjs/core'; enableServerHeartbeatCheck: false, serverHeartbeatInterval: 30000, }, + midwayLogger: { + clients: { + wsLogger: { + fileLogName: 'midway-ws.log', + }, + }, + }, }, }, ], diff --git a/packages/ws/src/framework.ts b/packages/ws/src/framework.ts index a2143de17c55..6469074f97de 100644 --- a/packages/ws/src/framework.ts +++ b/packages/ws/src/framework.ts @@ -38,6 +38,7 @@ export class MidwayWSFramework extends BaseFramework< server: http.Server; protected heartBeatInterval: NodeJS.Timeout; protected connectionMiddlewareManager = this.createMiddlewareManager(); + protected frameworkLoggerName = 'wsLogger'; configure(): IMidwayWSConfigurationOptions { return this.configService.getConfiguration('webSocket'); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c2775be10f5a..fbd4d419dcf0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -801,7 +801,7 @@ importers: version: link:../mock '@types/react': specifier: ^18.3.12 - version: 18.3.16 + version: 18.3.18 babel-loader: specifier: ^9.2.1 version: 9.2.1(@babel/core@7.26.0)(webpack@5.97.1) @@ -1757,10 +1757,6 @@ packages: '@gar/promisify@1.1.3': resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - '@grpc/grpc-js@1.11.3': - resolution: {integrity: sha512-i9UraDzFHMR+Iz/MhFLljT+fCpgxZ3O6CxwGJ8YuNYHJItIHUzKJpW2LvoFZNnGPwqc9iWy9RAucxV0JoR9aUQ==} - engines: {node: '>=12.10.0'} - '@grpc/grpc-js@1.12.4': resolution: {integrity: sha512-NBhrxEWnFh0FxeA0d//YP95lRFsSx2TNLEUQg4/W+5f/BMxcCjgOOIT24iD+ZB/tZw057j44DaIxja7w4XMrhg==} engines: {node: '>=12.10.0'} @@ -2633,17 +2629,17 @@ packages: '@scarf/scarf@1.4.0': resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==} - '@shikijs/core@1.24.2': - resolution: {integrity: sha512-BpbNUSKIwbKrRRA+BQj0BEWSw+8kOPKDJevWeSE/xIqGX7K0xrCZQ9kK0nnEQyrzsUoka1l81ZtJ2mGaCA32HQ==} + '@shikijs/core@1.24.3': + resolution: {integrity: sha512-VRcf4GYUIkxIchGM9DrapRcxtgojg4IWKUtX5EtW+4PJiGzF2xQqZSv27PJt+WLc18KT3CNLpNWow9JYV5n+Rg==} - '@shikijs/engine-javascript@1.24.2': - resolution: {integrity: sha512-EqsmYBJdLEwEiO4H+oExz34a5GhhnVp+jH9Q/XjPjmBPc6TE/x4/gD0X3i0EbkKKNqXYHHJTJUpOLRQNkEzS9Q==} + '@shikijs/engine-javascript@1.24.3': + resolution: {integrity: sha512-De8tNLvYjeK6V0Gb47jIH2M+OKkw+lWnSV1j3HVDFMlNIglmVcTMG2fASc29W0zuFbfEEwKjO8Fe4KYSO6Ce3w==} - '@shikijs/engine-oniguruma@1.24.2': - resolution: {integrity: sha512-ZN6k//aDNWRJs1uKB12pturKHh7GejKugowOFGAuG7TxDRLod1Bd5JhpOikOiFqPmKjKEPtEA6mRCf7q3ulDyQ==} + '@shikijs/engine-oniguruma@1.24.3': + resolution: {integrity: sha512-iNnx950gs/5Nk+zrp1LuF+S+L7SKEhn8k9eXgFYPGhVshKppsYwRmW8tpmAMvILIMSDfrgqZ0w+3xWVQB//1Xw==} - '@shikijs/types@1.24.2': - resolution: {integrity: sha512-bdeWZiDtajGLG9BudI0AHet0b6e7FbR0EsE4jpGaI0YwHm/XJunI9+3uZnzFtX65gsyJ6ngCIWUfA4NWRPnBkQ==} + '@shikijs/types@1.24.3': + resolution: {integrity: sha512-FPMrJ69MNxhRtldRk69CghvaGlbbN3pKRuvko0zvbfa2dXp4pAngByToqS5OY5jvN8D7LKR4RJE8UvzlCOuViw==} '@shikijs/vscode-textmate@9.3.1': resolution: {integrity: sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==} @@ -2942,12 +2938,6 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - '@types/node@20.16.10': - resolution: {integrity: sha512-vQUKgWTjEIRFCvK6CyriPH3MZYiYlNy0fKiEYHWbcoWLEgs4opurGGKlebrTLqdSMIbXImH6XExNiIyNUv3WpA==} - - '@types/node@22.10.1': - resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==} - '@types/node@22.10.2': resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==} @@ -2972,17 +2962,14 @@ packages: '@types/prop-types@15.7.14': resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} - '@types/qs@6.9.15': - resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} - '@types/qs@6.9.17': resolution: {integrity: sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==} '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - '@types/react@18.3.16': - resolution: {integrity: sha512-oh8AMIC4Y2ciKufU8hnKgs+ufgbA/dhPTACaZPM86AbwX9QwnFtSoPWEeRUj8fge+v6kFt78BXcDhAU1SrrAsw==} + '@types/react@18.3.18': + resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==} '@types/readable-stream@4.0.18': resolution: {integrity: sha512-21jK/1j+Wg+7jVw1xnSwy/2Q1VgVjWuFssbYGTREPUBeZ+rqVFl2udq0IkxzPC0ZhOzVceUbyIACFZKLqKEBlA==} @@ -3403,8 +3390,8 @@ packages: resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} engines: {node: '>=0.10.0'} - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} array-differ@1.0.0: @@ -3440,8 +3427,8 @@ packages: resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} engines: {node: '>=0.10.0'} - arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} arraybuffer.slice@0.0.7: @@ -3749,8 +3736,8 @@ packages: resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} engines: {node: '>= 0.4'} - call-bound@1.0.2: - resolution: {integrity: sha512-0lk0PHFe/uz0vl527fG9CgdE9WdafjDbCXvBbs+LUv000TVt2Jjhqbs4Jwm8gz070w8xXyEAxrPOMullsxXeGg==} + call-bound@1.0.3: + resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} engines: {node: '>= 0.4'} call-me-maybe@1.0.2: @@ -3779,8 +3766,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001688: - resolution: {integrity: sha512-Nmqpru91cuABu/DTCXbM2NSRHzM2uVHfPnhJ/1zEAJx/ILBRVmz3pzH4N7DZqbdG0gWClsCC05Oj0mJ/1AWMbA==} + caniuse-lite@1.0.30001690: + resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==} capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -4239,16 +4226,16 @@ packages: resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} engines: {node: '>=0.10'} - data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} - data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} engines: {node: '>= 0.4'} - data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} dataloader@2.2.3: @@ -4602,10 +4589,6 @@ packages: resolution: {integrity: sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ==} engines: {node: '>=12'} - dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} - engines: {node: '>=12'} - dotenv@16.4.7: resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} @@ -4613,8 +4596,8 @@ packages: dottie@2.0.6: resolution: {integrity: sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==} - dunder-proto@1.0.0: - resolution: {integrity: sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==} + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} duplexer3@0.1.5: @@ -4745,8 +4728,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.73: - resolution: {integrity: sha512-8wGNxG9tAG5KhGd3eeA0o6ixhiNdgr0DcHWm85XPCphwZgD1lIEoi6t3VERayWao7SF7AAZTw6oARGJeVjH8Kg==} + electron-to-chromium@1.5.75: + resolution: {integrity: sha512-Lf3++DumRE/QmweGjU+ZcKqQ+3bKkU/qjaKYhIJKEOhgIO9Xs6IiAQFkfFoj+RhgDk4LUeNsLo6plExHqSyu6Q==} emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -4813,8 +4796,8 @@ packages: resolution: {integrity: sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==} engines: {node: '>=10.2.0'} - enhanced-resolve@5.17.1: - resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + enhanced-resolve@5.18.0: + resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} engines: {node: '>=10.13.0'} enquirer@2.3.6: @@ -4844,8 +4827,8 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - es-abstract@1.23.5: - resolution: {integrity: sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==} + es-abstract@1.23.6: + resolution: {integrity: sha512-Ifco6n3yj2tMZDWNLyloZrytt9lqqlwvS83P3HtaETR0NUOYnIULGGHpktqYGObGy+8wc1okO25p8TjemhImvA==} engines: {node: '>= 0.4'} es-define-property@1.0.1: @@ -5293,8 +5276,8 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} engines: {node: '>= 0.4'} functional-red-black-tree@1.0.1: @@ -5374,8 +5357,8 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} get-value@2.0.6: @@ -5527,8 +5510,9 @@ packages: has-async-hooks@1.0.0: resolution: {integrity: sha512-YF0VPGjkxr7AyyQQNykX8zK4PvtEDsUJAPqwu06UFz1lb6EvI53sPh5H1kWxg8NXI5LsfRCZ8uX9NkYDZBb/mw==} - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} has-binary2@1.0.3: resolution: {integrity: sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==} @@ -5726,8 +5710,8 @@ packages: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} - import-in-the-middle@1.11.3: - resolution: {integrity: sha512-tNpKEb4AjZrCyrxi+Eyu43h5ig0O8ZRFSXPHh/00/o+4P4pKzVEW/m5lsVtsAT7fCIgmQOAPjdqecGDsBXRxsw==} + import-in-the-middle@1.12.0: + resolution: {integrity: sha512-yAgSE7GmtRcu4ZUSFX/4v69UGXwugFFSdIQJ14LHPOPPQrWv8Y7O9PHsw8Ovk7bKCLe4sjXMbZFqGFcLHpZ89w==} import-lazy@2.1.0: resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} @@ -5836,8 +5820,8 @@ packages: resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} engines: {node: '>= 0.4'} - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} is-arrayish@0.2.1: @@ -5917,8 +5901,8 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-finalizationregistry@1.1.0: - resolution: {integrity: sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==} + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} engines: {node: '>= 0.4'} is-fullwidth-code-point@2.0.0: @@ -5972,8 +5956,8 @@ packages: resolution: {integrity: sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==} engines: {node: '>=10'} - is-number-object@1.1.0: - resolution: {integrity: sha512-KVSZV0Dunv9DTPkhXwcZ3Q+tUc9TsaE1ZwX5J2WMvsSGS6Md8TFPun5uwh0yRdrNerI6vf/tbJxqSx4c1ZI1Lw==} + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} is-number@3.0.0: @@ -6026,8 +6010,8 @@ packages: resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} engines: {node: '>= 0.4'} - is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} is-ssh@1.4.0: @@ -6041,8 +6025,8 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - is-string@1.1.0: - resolution: {integrity: sha512-PlfzajuF9vSo5wErv3MJAKD/nqf9ngAs1NFQYm16nUYFO2IzxJ2hcm+IOCg+EEopdykNNUhVq5cz35cAUxU8+g==} + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} is-symbol@1.1.1: @@ -6059,8 +6043,8 @@ packages: is-type-of@2.2.0: resolution: {integrity: sha512-72axShMJMnMy5HSU/jLGNOonZD5rWM0MwJSCYpKCTQCbggQZBJO/CLMMVP5HgS8kPSYFBkTysJexsD6NMvGKDQ==} - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} is-typedarray@1.0.0: @@ -6085,8 +6069,8 @@ packages: resolution: {integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==} engines: {node: '>= 0.4'} - is-weakset@2.0.3: - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} is-windows@1.0.2: @@ -6812,8 +6796,8 @@ packages: resolution: {integrity: sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==} engines: {node: '>=4'} - math-intrinsics@1.0.0: - resolution: {integrity: sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==} + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} mdast-util-to-hast@13.2.0: @@ -7486,8 +7470,8 @@ packages: resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} engines: {node: '>=0.10.0'} - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} object.pick@1.3.0: @@ -7513,8 +7497,8 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - oniguruma-to-es@0.7.0: - resolution: {integrity: sha512-HRaRh09cE0gRS3+wi2zxekB+I5L8C/gN60S+vb11eADHUaB/q4u8wGGOX3GvwvitG8ixaeycZfeoyruKQzUgNg==} + oniguruma-to-es@0.8.0: + resolution: {integrity: sha512-rY+/a6b+uCgoYIL9itjY0x99UUDHXmGaw7Jjk5ZvM/3cxDJifyxFr/Zm4tTmF6Tre18gAakJo7AzhKUeMNLgHA==} only@0.0.2: resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} @@ -8179,8 +8163,8 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - readable-stream@4.5.2: - resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + readable-stream@4.6.0: + resolution: {integrity: sha512-cbAdYt0VcnpN2Bekq7PU+k363ZRsPwJoEEJOEtSJQlJXzwaxt3FIo/uL+KeDSGIjJqtkwyge4KQgD2S2kd+CQw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} readable-web-to-node-stream@3.0.2: @@ -8223,8 +8207,8 @@ packages: reflect-metadata@0.2.2: resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} - reflect.getprototypeof@1.0.8: - resolution: {integrity: sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==} + reflect.getprototypeof@1.0.9: + resolution: {integrity: sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==} engines: {node: '>= 0.4'} regenerator-runtime@0.14.1: @@ -8234,8 +8218,8 @@ packages: resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} engines: {node: '>=0.10.0'} - regex-recursion@4.3.0: - resolution: {integrity: sha512-5LcLnizwjcQ2ALfOj95MjcatxyqF5RPySx9yT+PaXu3Gox2vyAtLDjHB8NTJLtMGkvyau6nI3CfpwFCjPUIs/A==} + regex-recursion@5.0.0: + resolution: {integrity: sha512-UwyOqeobrCCqTXPcsSqH4gDhOjD5cI/b8kjngWgSZbxYh5yVjAwTjO5+hAuPRNiuR70+5RlWSs+U9PVcVcW9Lw==} regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} @@ -8326,8 +8310,9 @@ packages: resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} - resolve@1.22.9: - resolution: {integrity: sha512-QxrmX1DzraFIi9PxdG5VkRfRwIgjwyud+z/iBwfRRrVmHc+P9Q7u2lSSpQ6bjr2gy5lrqIiU9vb6iAeGf2400A==} + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} hasBin: true responselike@1.0.2: @@ -8594,8 +8579,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.24.2: - resolution: {integrity: sha512-TR1fi6mkRrzW+SKT5G6uKuc32Dj2EEa7Kj0k8kGqiBINb+C1TiflVOiT9ta6GqOJtC4fraxO5SLUaKBcSY38Fg==} + shiki@1.24.3: + resolution: {integrity: sha512-eMeX/ehE2IDKVs71kB4zVcDHjutNcOtm+yIRuR4sA6ThBbdFI0DffGJiyoKCodj0xRGxIoWC3pk/Anmm5mzHmA==} shimmer@1.2.1: resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} @@ -9349,16 +9334,16 @@ packages: type-name@2.0.2: resolution: {integrity: sha512-kkgkuqR/jKdKO5oh/I2SMu2dGbLXoJq0zkdgbxaqYK+hr9S9edwVVGf+tMUFTx2gH9TN2+Zu9JZ/Njonb3cjhA==} - typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} - typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} engines: {node: '>= 0.4'} - typed-array-byte-offset@1.0.3: - resolution: {integrity: sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==} + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} engines: {node: '>= 0.4'} typed-array-length@1.0.7: @@ -9470,11 +9455,9 @@ packages: uid2@0.0.3: resolution: {integrity: sha512-5gSP1liv10Gjp8cMEnFd6shzkL/D6W1uhXSFNCxDC+YI8+L8wkCYCbJ7n77Ezb4wE/xzMogecE+DtamEe9PZjg==} - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} undici-types@6.20.0: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} @@ -9598,8 +9581,8 @@ packages: resolution: {integrity: sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA==} engines: {node: '>= 0.12.0'} - utility@2.2.0: - resolution: {integrity: sha512-ujZh7W8xSr2QYUAhagadUTs6S+RBMLb6Qv/xZSnRrqpYN1LKmhdgDJdKsb1phr30u+liMN69af3AKD3Nj2+F+w==} + utility@2.3.0: + resolution: {integrity: sha512-DHEw/KDtg3K8LCex7lseU9Y9FXdTMCTo6bEwxKxyN5twdhC62f4MfSZZnFr7lam7AnuYKw6NUSh3MLgXrGdF3w==} engines: {node: '>= 16.0.0'} utils-merge@1.0.1: @@ -9705,8 +9688,8 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which-boxed-primitive@1.1.0: - resolution: {integrity: sha512-Ei7Miu/AXe2JJ4iNF5j/UphAgRoma4trE6PtisM09bPygb3egMH3YLW/befsWb1A1AxvNSFidOFTB18XtnIIng==} + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} which-builtin-type@1.2.1: @@ -9720,8 +9703,8 @@ packages: which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - which-typed-array@1.1.16: - resolution: {integrity: sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==} + which-typed-array@1.1.18: + resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} engines: {node: '>= 0.4'} which@1.3.1: @@ -10299,11 +10282,6 @@ snapshots: '@gar/promisify@1.1.3': {} - '@grpc/grpc-js@1.11.3': - dependencies: - '@grpc/proto-loader': 0.7.13 - '@js-sdsl/ordered-map': 4.4.2 - '@grpc/grpc-js@1.12.4': dependencies: '@grpc/proto-loader': 0.7.13 @@ -11192,7 +11170,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/api-logs': 0.56.0 '@types/shimmer': 1.2.0 - import-in-the-middle: 1.11.3 + import-in-the-middle: 1.12.0 require-in-the-middle: 7.4.0 semver: 7.6.3 shimmer: 1.2.1 @@ -11362,27 +11340,27 @@ snapshots: '@scarf/scarf@1.4.0': {} - '@shikijs/core@1.24.2': + '@shikijs/core@1.24.3': dependencies: - '@shikijs/engine-javascript': 1.24.2 - '@shikijs/engine-oniguruma': 1.24.2 - '@shikijs/types': 1.24.2 + '@shikijs/engine-javascript': 1.24.3 + '@shikijs/engine-oniguruma': 1.24.3 + '@shikijs/types': 1.24.3 '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 hast-util-to-html: 9.0.4 - '@shikijs/engine-javascript@1.24.2': + '@shikijs/engine-javascript@1.24.3': dependencies: - '@shikijs/types': 1.24.2 + '@shikijs/types': 1.24.3 '@shikijs/vscode-textmate': 9.3.1 - oniguruma-to-es: 0.7.0 + oniguruma-to-es: 0.8.0 - '@shikijs/engine-oniguruma@1.24.2': + '@shikijs/engine-oniguruma@1.24.3': dependencies: - '@shikijs/types': 1.24.2 + '@shikijs/types': 1.24.3 '@shikijs/vscode-textmate': 9.3.1 - '@shikijs/types@1.24.2': + '@shikijs/types@1.24.3': dependencies: '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 @@ -11533,7 +11511,7 @@ snapshots: '@types/amqplib@0.10.6': dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 '@types/babel__core@7.20.5': dependencies: @@ -11559,11 +11537,11 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 20.16.10 + '@types/node': 22.10.2 '@types/busboy@1.5.4': dependencies: - '@types/node': 20.16.10 + '@types/node': 22.10.2 '@types/caseless@0.12.5': {} @@ -11573,7 +11551,7 @@ snapshots: '@types/consul@0.40.3': dependencies: - '@types/node': 20.16.10 + '@types/node': 22.10.2 '@types/content-disposition@0.5.8': {} @@ -11636,7 +11614,7 @@ snapshots: dependencies: '@types/body-parser': 1.19.5 '@types/express-serve-static-core': 4.19.6 - '@types/qs': 6.9.15 + '@types/qs': 6.9.17 '@types/serve-static': 1.15.7 '@types/fs-extra@11.0.4': @@ -11688,7 +11666,7 @@ snapshots: '@types/jsonwebtoken@9.0.7': dependencies: - '@types/node': 20.16.10 + '@types/node': 22.10.2 '@types/keygrip@1.0.6': {} @@ -11713,7 +11691,7 @@ snapshots: '@types/http-errors': 2.0.4 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 20.16.10 + '@types/node': 22.10.2 '@types/long@4.0.2': {} @@ -11733,14 +11711,6 @@ snapshots: '@types/ms@0.7.34': {} - '@types/node@20.16.10': - dependencies: - undici-types: 6.19.8 - - '@types/node@22.10.1': - dependencies: - undici-types: 6.20.0 - '@types/node@22.10.2': dependencies: undici-types: 6.20.0 @@ -11771,13 +11741,11 @@ snapshots: '@types/prop-types@15.7.14': {} - '@types/qs@6.9.15': {} - '@types/qs@6.9.17': {} '@types/range-parser@1.2.7': {} - '@types/react@18.3.16': + '@types/react@18.3.18': dependencies: '@types/prop-types': 15.7.14 csstype: 3.1.3 @@ -11790,7 +11758,7 @@ snapshots: '@types/request@2.48.12': dependencies: '@types/caseless': 0.12.5 - '@types/node': 20.16.10 + '@types/node': 22.10.2 '@types/tough-cookie': 4.0.5 form-data: 2.5.2 @@ -11824,7 +11792,7 @@ snapshots: '@types/superagent@4.1.14': dependencies: '@types/cookiejar': 2.1.5 - '@types/node': 20.16.10 + '@types/node': 22.10.2 '@types/supertest@2.0.16': dependencies: @@ -11844,7 +11812,7 @@ snapshots: '@types/ws@8.5.13': dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 '@types/yargs-parser@21.0.3': {} @@ -12192,7 +12160,7 @@ snapshots: mime: 2.6.0 platform: 1.3.6 pump: 3.0.2 - qs: 6.13.0 + qs: 6.13.1 sdk-base: 2.0.1 stream-http: 2.8.2 stream-wormhole: 1.1.0 @@ -12276,10 +12244,10 @@ snapshots: arr-union@3.1.0: {} - array-buffer-byte-length@1.0.1: + array-buffer-byte-length@1.0.2: dependencies: - call-bind: 1.0.8 - is-array-buffer: 3.0.4 + call-bound: 1.0.3 + is-array-buffer: 3.0.5 array-differ@1.0.0: {} @@ -12301,16 +12269,15 @@ snapshots: array-unique@0.3.2: {} - arraybuffer.prototype.slice@1.0.3: + arraybuffer.prototype.slice@1.0.4: dependencies: - array-buffer-byte-length: 1.0.1 + array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.5 + es-abstract: 1.23.6 es-errors: 1.3.0 get-intrinsic: 1.2.6 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 + is-array-buffer: 3.0.5 arraybuffer.slice@0.0.7: {} @@ -12505,7 +12472,7 @@ snapshots: '@types/readable-stream': 4.0.18 buffer: 6.0.3 inherits: 2.0.4 - readable-stream: 4.5.2 + readable-stream: 4.6.0 black-hole-stream@0.0.1: {} @@ -12571,8 +12538,8 @@ snapshots: browserslist@4.24.3: dependencies: - caniuse-lite: 1.0.30001688 - electron-to-chromium: 1.5.73 + caniuse-lite: 1.0.30001690 + electron-to-chromium: 1.5.75 node-releases: 2.0.19 update-browserslist-db: 1.1.1(browserslist@4.24.3) @@ -12755,9 +12722,9 @@ snapshots: get-intrinsic: 1.2.6 set-function-length: 1.2.2 - call-bound@1.0.2: + call-bound@1.0.3: dependencies: - call-bind: 1.0.8 + call-bind-apply-helpers: 1.0.1 get-intrinsic: 1.2.6 call-me-maybe@1.0.2: {} @@ -12781,7 +12748,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001688: {} + caniuse-lite@1.0.30001690: {} capital-case@1.0.4: dependencies: @@ -12941,7 +12908,7 @@ snapshots: sdk-base: 4.2.1 serialize-json: 1.0.3 tcp-base: 3.2.0 - utility: 2.2.0 + utility: 2.3.0 transitivePeerDependencies: - supports-color @@ -13307,21 +13274,21 @@ snapshots: dependencies: assert-plus: 1.0.0 - data-view-buffer@1.0.1: + data-view-buffer@1.0.2: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 es-errors: 1.3.0 is-data-view: 1.0.2 - data-view-byte-length@1.0.1: + data-view-byte-length@1.0.2: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 es-errors: 1.3.0 is-data-view: 1.0.2 - data-view-byte-offset@1.0.0: + data-view-byte-offset@1.0.1: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 es-errors: 1.3.0 is-data-view: 1.0.2 @@ -13392,24 +13359,24 @@ snapshots: deep-equal@2.2.3: dependencies: - array-buffer-byte-length: 1.0.1 + array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 es-get-iterator: 1.1.3 get-intrinsic: 1.2.6 is-arguments: 1.2.0 - is-array-buffer: 3.0.4 + is-array-buffer: 3.0.5 is-date-object: 1.1.0 is-regex: 1.2.1 - is-shared-array-buffer: 1.0.3 + is-shared-array-buffer: 1.0.4 isarray: 2.0.5 object-is: 1.1.6 object-keys: 1.1.1 - object.assign: 4.1.5 + object.assign: 4.1.7 regexp.prototype.flags: 1.5.3 side-channel: 1.1.0 - which-boxed-primitive: 1.1.0 + which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.16 + which-typed-array: 1.1.18 deep-extend@0.6.0: {} @@ -13647,13 +13614,11 @@ snapshots: dotenv@16.3.2: {} - dotenv@16.4.5: {} - dotenv@16.4.7: {} dottie@2.0.6: {} - dunder-proto@1.0.0: + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.1 es-errors: 1.3.0 @@ -13777,7 +13742,7 @@ snapshots: depd: 2.0.0 egg-errors: 2.3.2 iconv-lite: 0.6.3 - utility: 2.2.0 + utility: 2.3.0 egg-logrotator@3.2.0: dependencies: @@ -13855,7 +13820,7 @@ snapshots: node-homedir: 1.1.1 runscript: 2.0.1 source-map-support: 0.5.21 - utility: 2.2.0 + utility: 2.3.0 zlogger: 1.1.0 transitivePeerDependencies: - supports-color @@ -13984,7 +13949,7 @@ snapshots: dependencies: jake: 10.9.2 - electron-to-chromium@1.5.73: {} + electron-to-chromium@1.5.75: {} emittery@0.13.1: {} @@ -14093,7 +14058,7 @@ snapshots: - supports-color - utf-8-validate - enhanced-resolve@5.17.1: + enhanced-resolve@5.18.0: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 @@ -14119,23 +14084,24 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-abstract@1.23.5: + es-abstract@1.23.6: dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 available-typed-arrays: 1.0.7 call-bind: 1.0.8 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 + call-bound: 1.0.3 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-set-tostringtag: 2.0.3 es-to-primitive: 1.3.0 - function.prototype.name: 1.1.6 + function.prototype.name: 1.1.8 get-intrinsic: 1.2.6 - get-symbol-description: 1.0.2 + get-symbol-description: 1.1.0 globalthis: 1.0.4 gopd: 1.2.0 has-property-descriptors: 1.0.2 @@ -14143,30 +14109,31 @@ snapshots: has-symbols: 1.1.0 hasown: 2.0.2 internal-slot: 1.1.0 - is-array-buffer: 3.0.4 + is-array-buffer: 3.0.5 is-callable: 1.2.7 is-data-view: 1.0.2 is-negative-zero: 2.0.3 is-regex: 1.2.1 - is-shared-array-buffer: 1.0.3 - is-string: 1.1.0 - is-typed-array: 1.1.13 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 is-weakref: 1.1.0 + math-intrinsics: 1.1.0 object-inspect: 1.13.3 object-keys: 1.1.1 - object.assign: 4.1.5 + object.assign: 4.1.7 regexp.prototype.flags: 1.5.3 safe-array-concat: 1.1.3 safe-regex-test: 1.1.0 string.prototype.trim: 1.2.10 string.prototype.trimend: 1.0.9 string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.3 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 typed-array-length: 1.0.7 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.16 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.18 es-define-property@1.0.1: {} @@ -14180,7 +14147,7 @@ snapshots: is-arguments: 1.2.0 is-map: 2.0.3 is-set: 2.0.3 - is-string: 1.1.0 + is-string: 1.1.1 isarray: 2.0.5 stop-iteration-iterator: 1.1.0 @@ -14239,7 +14206,7 @@ snapshots: eslint-utils: 2.1.0 ignore: 5.3.2 minimatch: 3.1.2 - resolve: 1.22.9 + resolve: 1.22.10 semver: 6.3.1 eslint-plugin-prettier@3.4.1(eslint-config-prettier@8.10.0(eslint@7.32.0))(eslint@7.32.0)(prettier@2.8.8): @@ -14342,7 +14309,7 @@ snapshots: etcd3@1.1.2: dependencies: - '@grpc/grpc-js': 1.11.3 + '@grpc/grpc-js': 1.12.4 '@grpc/proto-loader': 0.7.13 bignumber.js: 9.1.2 cockatiel: 3.2.1 @@ -14582,11 +14549,11 @@ snapshots: app-module-path: 2.2.0 commander: 2.20.3 debug: 4.4.0 - enhanced-resolve: 5.17.1 + enhanced-resolve: 5.18.0 is-relative-path: 1.0.2 module-definition: 3.4.0 module-lookup-amd: 7.0.1 - resolve: 1.22.9 + resolve: 1.22.10 resolve-dependency-path: 2.0.0 sass-lookup: 3.0.0 stylus-lookup: 3.0.2 @@ -14745,12 +14712,14 @@ snapshots: function-bind@1.1.2: {} - function.prototype.name@1.1.6: + function.prototype.name@1.1.8: dependencies: call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 - es-abstract: 1.23.5 functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 functional-red-black-tree@1.0.1: {} @@ -14790,7 +14759,7 @@ snapshots: get-intrinsic@1.2.6: dependencies: call-bind-apply-helpers: 1.0.1 - dunder-proto: 1.0.0 + dunder-proto: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 es-object-atoms: 1.0.0 @@ -14798,7 +14767,7 @@ snapshots: gopd: 1.2.0 has-symbols: 1.1.0 hasown: 2.0.2 - math-intrinsics: 1.0.0 + math-intrinsics: 1.1.0 get-own-enumerable-property-symbols@3.0.2: {} @@ -14831,9 +14800,9 @@ snapshots: get-stream@6.0.1: {} - get-symbol-description@1.0.2: + get-symbol-description@1.1.0: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 es-errors: 1.3.0 get-intrinsic: 1.2.6 @@ -14903,7 +14872,7 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.0.5 once: 1.4.0 path-is-absolute: 1.0.1 @@ -15044,7 +15013,7 @@ snapshots: has-async-hooks@1.0.0: {} - has-bigints@1.0.2: {} + has-bigints@1.1.0: {} has-binary2@1.0.3: dependencies: @@ -15062,7 +15031,7 @@ snapshots: has-proto@1.2.0: dependencies: - dunder-proto: 1.0.0 + dunder-proto: 1.0.1 has-symbols@1.1.0: {} @@ -15269,7 +15238,7 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-in-the-middle@1.11.3: + import-in-the-middle@1.12.0: dependencies: acorn: 8.14.0 acorn-import-attributes: 1.9.5(acorn@8.14.0) @@ -15400,12 +15369,13 @@ snapshots: is-arguments@1.2.0: dependencies: - call-bound: 1.0.2 + call-bound: 1.0.3 has-tostringtag: 1.0.2 - is-array-buffer@3.0.4: + is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 + call-bound: 1.0.3 get-intrinsic: 1.2.6 is-arrayish@0.2.1: {} @@ -15419,11 +15389,11 @@ snapshots: is-bigint@1.1.0: dependencies: - has-bigints: 1.0.2 + has-bigints: 1.1.0 is-boolean-object@1.2.1: dependencies: - call-bound: 1.0.2 + call-bound: 1.0.3 has-tostringtag: 1.0.2 is-buffer@1.1.6: {} @@ -15450,13 +15420,13 @@ snapshots: is-data-view@1.0.2: dependencies: - call-bound: 1.0.2 + call-bound: 1.0.3 get-intrinsic: 1.2.6 - is-typed-array: 1.1.13 + is-typed-array: 1.1.15 is-date-object@1.1.0: dependencies: - call-bound: 1.0.2 + call-bound: 1.0.3 has-tostringtag: 1.0.2 is-descriptor@0.1.7: @@ -15479,9 +15449,9 @@ snapshots: is-extglob@2.1.1: {} - is-finalizationregistry@1.1.0: + is-finalizationregistry@1.1.1: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 is-fullwidth-code-point@2.0.0: {} @@ -15521,9 +15491,9 @@ snapshots: is-npm@5.0.0: {} - is-number-object@1.1.0: + is-number-object@1.1.1: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 has-tostringtag: 1.0.2 is-number@3.0.0: @@ -15550,7 +15520,7 @@ snapshots: is-regex@1.2.1: dependencies: - call-bound: 1.0.2 + call-bound: 1.0.3 gopd: 1.2.0 has-tostringtag: 1.0.2 hasown: 2.0.2 @@ -15561,9 +15531,9 @@ snapshots: is-set@2.0.3: {} - is-shared-array-buffer@1.0.3: + is-shared-array-buffer@1.0.4: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 is-ssh@1.4.0: dependencies: @@ -15573,14 +15543,14 @@ snapshots: is-stream@2.0.1: {} - is-string@1.1.0: + is-string@1.1.1: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 has-tostringtag: 1.0.2 is-symbol@1.1.1: dependencies: - call-bound: 1.0.2 + call-bound: 1.0.3 has-symbols: 1.1.0 safe-regex-test: 1.1.0 @@ -15596,9 +15566,9 @@ snapshots: is-type-of@2.2.0: {} - is-typed-array@1.1.13: + is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.16 + which-typed-array: 1.1.18 is-typedarray@1.0.0: {} @@ -15612,11 +15582,11 @@ snapshots: is-weakref@1.1.0: dependencies: - call-bound: 1.0.2 + call-bound: 1.0.3 - is-weakset@2.0.3: + is-weakset@2.0.4: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 get-intrinsic: 1.2.6 is-windows@1.0.2: {} @@ -15880,7 +15850,7 @@ snapshots: jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) jest-util: 29.7.0 jest-validate: 29.7.0 - resolve: 1.22.9 + resolve: 1.22.10 resolve.exports: 2.0.3 slash: 3.0.0 @@ -16692,7 +16662,7 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - math-intrinsics@1.0.0: {} + math-intrinsics@1.1.0: {} mdast-util-to-hast@13.2.0: dependencies: @@ -17023,7 +16993,7 @@ snapshots: minimist: 1.2.8 mqtt-packet: 9.0.1 number-allocator: 1.0.14 - readable-stream: 4.5.2 + readable-stream: 4.6.0 reinterval: 1.1.0 rfdc: 1.4.1 split2: 4.2.0 @@ -17177,7 +17147,7 @@ snapshots: '@swc/counter': 0.1.3 '@swc/helpers': 0.5.13 busboy: 1.6.0 - caniuse-lite: 1.0.30001688 + caniuse-lite: 1.0.30001690 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -17311,7 +17281,7 @@ snapshots: normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.9 + resolve: 1.22.10 semver: 5.7.2 validate-npm-package-license: 3.0.4 @@ -17577,10 +17547,12 @@ snapshots: dependencies: isobject: 3.0.1 - object.assign@4.1.5: + object.assign@4.1.7: dependencies: call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 + es-object-atoms: 1.0.0 has-symbols: 1.1.0 object-keys: 1.1.1 @@ -17604,11 +17576,11 @@ snapshots: dependencies: mimic-fn: 2.1.0 - oniguruma-to-es@0.7.0: + oniguruma-to-es@0.8.0: dependencies: emoji-regex-xs: 1.0.0 regex: 5.0.2 - regex-recursion: 4.3.0 + regex-recursion: 5.0.0 only@0.0.2: {} @@ -17634,7 +17606,7 @@ snapshots: ora@5.3.0: dependencies: bl: 4.1.0 - chalk: 4.1.2 + chalk: 4.1.0 cli-cursor: 3.1.0 cli-spinners: 2.6.1 is-interactive: 1.0.0 @@ -18352,7 +18324,7 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - readable-stream@4.5.2: + readable-stream@4.6.0: dependencies: abort-controller: 3.0.0 buffer: 6.0.3 @@ -18375,7 +18347,7 @@ snapshots: rechoir@0.8.0: dependencies: - resolve: 1.22.9 + resolve: 1.22.10 redent@3.0.0: dependencies: @@ -18405,12 +18377,12 @@ snapshots: reflect-metadata@0.2.2: {} - reflect.getprototypeof@1.0.8: + reflect.getprototypeof@1.0.9: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - dunder-proto: 1.0.0 - es-abstract: 1.23.5 + dunder-proto: 1.0.1 + es-abstract: 1.23.6 es-errors: 1.3.0 get-intrinsic: 1.2.6 gopd: 1.2.0 @@ -18423,7 +18395,7 @@ snapshots: extend-shallow: 3.0.2 safe-regex: 1.1.0 - regex-recursion@4.3.0: + regex-recursion@5.0.0: dependencies: regex-utilities: 2.3.0 @@ -18487,7 +18459,7 @@ snapshots: dependencies: debug: 4.4.0 module-details-from-path: 1.0.3 - resolve: 1.22.9 + resolve: 1.22.10 transitivePeerDependencies: - supports-color @@ -18516,7 +18488,7 @@ snapshots: resolve.exports@2.0.3: {} - resolve@1.22.9: + resolve@1.22.10: dependencies: is-core-module: 2.16.0 path-parse: 1.0.7 @@ -18578,7 +18550,7 @@ snapshots: safe-array-concat@1.1.3: dependencies: call-bind: 1.0.8 - call-bound: 1.0.2 + call-bound: 1.0.3 get-intrinsic: 1.2.6 has-symbols: 1.1.0 isarray: 2.0.5 @@ -18589,7 +18561,7 @@ snapshots: safe-regex-test@1.1.0: dependencies: - call-bound: 1.0.2 + call-bound: 1.0.3 es-errors: 1.3.0 is-regex: 1.2.1 @@ -18822,12 +18794,12 @@ snapshots: shebang-regex@3.0.0: {} - shiki@1.24.2: + shiki@1.24.3: dependencies: - '@shikijs/core': 1.24.2 - '@shikijs/engine-javascript': 1.24.2 - '@shikijs/engine-oniguruma': 1.24.2 - '@shikijs/types': 1.24.2 + '@shikijs/core': 1.24.3 + '@shikijs/engine-javascript': 1.24.3 + '@shikijs/engine-oniguruma': 1.24.3 + '@shikijs/types': 1.24.3 '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 @@ -18842,14 +18814,14 @@ snapshots: side-channel-map@1.0.1: dependencies: - call-bound: 1.0.2 + call-bound: 1.0.3 es-errors: 1.3.0 get-intrinsic: 1.2.6 object-inspect: 1.13.3 side-channel-weakmap@1.0.2: dependencies: - call-bound: 1.0.2 + call-bound: 1.0.3 es-errors: 1.3.0 get-intrinsic: 1.2.6 object-inspect: 1.13.3 @@ -19277,17 +19249,17 @@ snapshots: string.prototype.trim@1.2.10: dependencies: call-bind: 1.0.8 - call-bound: 1.0.2 + call-bound: 1.0.3 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.5 + es-abstract: 1.23.6 es-object-atoms: 1.0.0 has-property-descriptors: 1.0.2 string.prototype.trimend@1.0.9: dependencies: call-bind: 1.0.8 - call-bound: 1.0.2 + call-bound: 1.0.3 define-properties: 1.2.1 es-object-atoms: 1.0.0 @@ -19619,7 +19591,7 @@ snapshots: dependencies: gopd: 1.2.0 typedarray.prototype.slice: 1.0.3 - which-typed-array: 1.1.16 + which-typed-array: 1.1.18 tree-kill@1.2.2: {} @@ -19749,38 +19721,38 @@ snapshots: type-name@2.0.2: {} - typed-array-buffer@1.0.2: + typed-array-buffer@1.0.3: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 es-errors: 1.3.0 - is-typed-array: 1.1.13 + is-typed-array: 1.1.15 - typed-array-byte-length@1.0.1: + typed-array-byte-length@1.0.3: dependencies: call-bind: 1.0.8 for-each: 0.3.3 gopd: 1.2.0 has-proto: 1.2.0 - is-typed-array: 1.1.13 + is-typed-array: 1.1.15 - typed-array-byte-offset@1.0.3: + typed-array-byte-offset@1.0.4: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 for-each: 0.3.3 gopd: 1.2.0 has-proto: 1.2.0 - is-typed-array: 1.1.13 - reflect.getprototypeof: 1.0.8 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.9 typed-array-length@1.0.7: dependencies: call-bind: 1.0.8 for-each: 0.3.3 gopd: 1.2.0 - is-typed-array: 1.1.13 + is-typed-array: 1.1.15 possible-typed-array-names: 1.0.0 - reflect.getprototypeof: 1.0.8 + reflect.getprototypeof: 1.0.9 typedarray-to-buffer@3.1.5: dependencies: @@ -19790,10 +19762,10 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.5 + es-abstract: 1.23.6 es-errors: 1.3.0 - typed-array-buffer: 1.0.2 - typed-array-byte-offset: 1.0.3 + typed-array-buffer: 1.0.3 + typed-array-byte-offset: 1.0.4 typedarray@0.0.6: {} @@ -19802,7 +19774,7 @@ snapshots: lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 - shiki: 1.24.2 + shiki: 1.24.3 typescript: 5.3.3 yaml: 2.6.1 @@ -19815,7 +19787,7 @@ snapshots: cli-highlight: 2.1.11 dayjs: 1.11.13 debug: 4.4.0 - dotenv: 16.4.5 + dotenv: 16.4.7 glob: 10.4.5 mkdirp: 2.1.6 reflect-metadata: 0.2.2 @@ -19849,14 +19821,12 @@ snapshots: uid2@0.0.3: {} - unbox-primitive@1.0.2: + unbox-primitive@1.1.0: dependencies: - call-bind: 1.0.8 - has-bigints: 1.0.2 + call-bound: 1.0.3 + has-bigints: 1.1.0 has-symbols: 1.1.0 - which-boxed-primitive: 1.1.0 - - undici-types@6.19.8: {} + which-boxed-primitive: 1.1.1 undici-types@6.20.0: {} @@ -20010,7 +19980,7 @@ snapshots: mz: 2.7.0 unescape: 1.0.1 - utility@2.2.0: + utility@2.3.0: dependencies: escape-html: 1.0.3 unescape: 1.0.1 @@ -20101,7 +20071,7 @@ snapshots: acorn: 8.14.0 browserslist: 4.24.3 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.1 + enhanced-resolve: 5.18.0 es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 @@ -20131,43 +20101,44 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 - which-boxed-primitive@1.1.0: + which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 is-boolean-object: 1.2.1 - is-number-object: 1.1.0 - is-string: 1.1.0 + is-number-object: 1.1.1 + is-string: 1.1.1 is-symbol: 1.1.1 which-builtin-type@1.2.1: dependencies: - call-bound: 1.0.2 - function.prototype.name: 1.1.6 + call-bound: 1.0.3 + function.prototype.name: 1.1.8 has-tostringtag: 1.0.2 is-async-function: 2.0.0 is-date-object: 1.1.0 - is-finalizationregistry: 1.1.0 + is-finalizationregistry: 1.1.1 is-generator-function: 1.0.10 is-regex: 1.2.1 is-weakref: 1.1.0 isarray: 2.0.5 - which-boxed-primitive: 1.1.0 + which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.16 + which-typed-array: 1.1.18 which-collection@1.0.2: dependencies: is-map: 2.0.3 is-set: 2.0.3 is-weakmap: 2.0.2 - is-weakset: 2.0.3 + is-weakset: 2.0.4 which-module@2.0.1: {} - which-typed-array@1.1.16: + which-typed-array@1.1.18: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 + call-bound: 1.0.3 for-each: 0.3.3 gopd: 1.2.0 has-tostringtag: 1.0.2